> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Delete Payment Method

> Delete a payment method associated with a customer.

Remove a saved payment method from a customer's account. Use this to clean up outdated or unwanted payment methods.

<Warning>
  If the deleted payment method is the only one on file for an active subscription, the subscription may fail to renew at the next billing cycle. Ensure the customer has an alternative payment method before deleting.
</Warning>

## Use Cases

* **Customer request**: Remove a payment method the customer no longer wants on file
* **Expired cards**: Clean up payment methods with expired card details
* **Security**: Remove compromised payment methods immediately


## OpenAPI

````yaml delete /customers/{customer_id}/payment-methods/{payment_method_id}
openapi: 3.1.0
info:
  title: public
  description: ''
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
  version: 1.102.0
servers:
  - url: https://test.dodopayments.com/
    description: Test Mode Server Host
  - url: https://live.dodopayments.com/
    description: Live Mode Server Host
security: []
tags:
  - name: Products
  - name: Payments
  - name: Subscriptions
  - name: Addons
  - name: Customers
  - name: Refunds
  - name: Disputes
  - name: Events
  - name: License Keys
  - name: Entitlements
  - name: Licenses
  - name: Discounts
  - name: Meters
  - name: Credit Entitlements
  - name: Credit Entitlement Balances
  - name: Outgoing Webhooks
  - name: Checkout
  - name: Webhook Events
paths:
  /customers/{customer_id}/payment-methods/{payment_method_id}:
    delete:
      tags:
        - Customers
      operationId: delete_customer_payment_method
      parameters:
        - name: customer_id
          in: path
          description: Customer Id
          required: true
          schema:
            type: string
        - name: payment_method_id
          in: path
          description: Payment Method Id
          required: true
          schema:
            type: string
      responses:
        '204':
          description: Payment method deleted successfully
        '409':
          description: Payment method is in use by an active subscription
      security:
        - API_KEY: []
      x-codeSamples:
        - lang: JavaScript
          source: >-
            import DodoPayments from 'dodopayments';


            const client = new DodoPayments({
              bearerToken: process.env['DODO_PAYMENTS_API_KEY'], // This is the default and can be omitted
            });


            await client.customers.deletePaymentMethod('payment_method_id', {
            customer_id: 'customer_id' });
        - lang: Python
          source: |-
            import os
            from dodopayments import DodoPayments

            client = DodoPayments(
                bearer_token=os.environ.get("DODO_PAYMENTS_API_KEY"),  # This is the default and can be omitted
            )
            client.customers.delete_payment_method(
                payment_method_id="payment_method_id",
                customer_id="customer_id",
            )
        - lang: Go
          source: "package main\n\nimport (\n\t\"context\"\n\n\t\"github.com/dodopayments/dodopayments-go\"\n\t\"github.com/dodopayments/dodopayments-go/option\"\n)\n\nfunc main() {\n\tclient := dodopayments.NewClient(\n\t\toption.WithBearerToken(\"My Bearer Token\"),\n\t)\n\terr := client.Customers.DeletePaymentMethod(\n\t\tcontext.TODO(),\n\t\t\"customer_id\",\n\t\t\"payment_method_id\",\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n}\n"
        - lang: Java
          source: >-
            package com.dodopayments.api.example;


            import com.dodopayments.api.client.DodoPaymentsClient;

            import com.dodopayments.api.client.okhttp.DodoPaymentsOkHttpClient;

            import
            com.dodopayments.api.models.customers.CustomerDeletePaymentMethodParams;


            public final class Main {
                private Main() {}

                public static void main(String[] args) {
                    DodoPaymentsClient client = DodoPaymentsOkHttpClient.fromEnv();

                    CustomerDeletePaymentMethodParams params = CustomerDeletePaymentMethodParams.builder()
                        .customerId("customer_id")
                        .paymentMethodId("payment_method_id")
                        .build();
                    client.customers().deletePaymentMethod(params);
                }
            }
        - lang: Kotlin
          source: >-
            package com.dodopayments.api.example


            import com.dodopayments.api.client.DodoPaymentsClient

            import com.dodopayments.api.client.okhttp.DodoPaymentsOkHttpClient

            import
            com.dodopayments.api.models.customers.CustomerDeletePaymentMethodParams


            fun main() {
                val client: DodoPaymentsClient = DodoPaymentsOkHttpClient.fromEnv()

                val params: CustomerDeletePaymentMethodParams = CustomerDeletePaymentMethodParams.builder()
                    .customerId("customer_id")
                    .paymentMethodId("payment_method_id")
                    .build()
                client.customers().deletePaymentMethod(params)
            }
        - lang: Ruby
          source: >-
            require "dodopayments"


            dodo_payments = Dodopayments::Client.new(
              bearer_token: "My Bearer Token",
              environment: "test_mode" # defaults to "live_mode"
            )


            result =
            dodo_payments.customers.delete_payment_method("payment_method_id",
            customer_id: "customer_id")


            puts(result)
        - lang: PHP
          source: |-
            <?php

            require_once dirname(__DIR__) . '/vendor/autoload.php';

            use Dodopayments\Client;
            use Dodopayments\Core\Exceptions\APIException;

            $client = new Client(
              bearerToken: getenv('DODO_PAYMENTS_API_KEY') ?: 'My Bearer Token',
              environment: 'test_mode',
            );

            try {
              $result = $client->customers->deletePaymentMethod(
                'payment_method_id', customerID: 'customer_id'
              );

              var_dump($result);
            } catch (APIException $e) {
              echo $e->getMessage();
            }
        - lang: C#
          source: |-
            using DodoPayments.Client;
            using DodoPayments.Client.Models.Customers;

            DodoPaymentsClient client = new();

            CustomerDeletePaymentMethodParams parameters = new()
            {
                CustomerID = "customer_id",
                PaymentMethodID = "payment_method_id",
            };

            await client.Customers.DeletePaymentMethod(parameters);
components:
  securitySchemes:
    API_KEY:
      type: http
      scheme: bearer

````