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

# Cancel a payment method

> Cancels a payment method so the payment method can no longer be charged. The cancellation applies only to this payment method. The bank account, card, or mandate behind the payment method stays valid for any other payment method that uses the same account, card, or mandate. The canceled payment method reports the cancellation through its type-specific details: `pac.status`, `mx_direct_debit.status`, and `bank_transfer.status` become `canceled`; `card.active` becomes `false`. Fintoc sends a `payment_method.canceled` webhook after processing the cancellation. Canceling an already canceled payment method returns a `409 Conflict` error. If the customer registers the same bank account, card, or mandate again through a new checkout session, Fintoc reactivates the canceled payment method under the same `id`.



## OpenAPI

````yaml reference/main-api.json POST /v2/payment_methods/{id}/cancel
openapi: 3.1.0
info:
  title: fintoc-api
  version: v2026-02-01
servers:
  - url: https://api.fintoc.com
security: []
paths:
  /v2/payment_methods/{id}/cancel:
    post:
      tags:
        - Payment methods
      summary: Cancel a payment method
      description: >-
        Cancels a payment method so the payment method can no longer be charged.
        The cancellation applies only to this payment method. The bank account,
        card, or mandate behind the payment method stays valid for any other
        payment method that uses the same account, card, or mandate. The
        canceled payment method reports the cancellation through its
        type-specific details: `pac.status`, `mx_direct_debit.status`, and
        `bank_transfer.status` become `canceled`; `card.active` becomes `false`.
        Fintoc sends a `payment_method.canceled` webhook after processing the
        cancellation. Canceling an already canceled payment method returns a
        `409 Conflict` error. If the customer registers the same bank account,
        card, or mandate again through a new checkout session, Fintoc
        reactivates the canceled payment method under the same `id`.
      operationId: v2.payment-methods-cancel
      parameters:
        - name: id
          in: path
          description: Unique identifier for the payment method to cancel.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: >-
            The canceled payment method, with its details reporting the
            cancellation.
          content:
            application/json:
              examples:
                canceled_payment_method:
                  value:
                    id: pm_3pQrStUvWxYzAbCd
                    object: payment_method
                    created_at: '2026-01-15T14:30:00.000Z'
                    customer: cus_oVgVqlnK0PdmGirH
                    mode: live
                    pac:
                      account_holder_id: '111111111'
                      account_number: '001111111111'
                      account_type: checking_account
                      institution:
                        id: cl_banco_de_chile
                        country: cl
                        name: Banco de Chile
                      status: canceled
                    type: pac
              schema:
                $ref: '#/components/schemas/payment_method'
        '401':
          description: Invalid or missing API key.
          content:
            application/json:
              examples:
                invalid_api_key:
                  value:
                    error:
                      type: authentication_error
                      code: invalid_api_key
                      message: 'Invalid API Key: invalid-*oken'
              schema:
                $ref: '#/components/schemas/error_object'
        '404':
          description: >-
            The payment method does not exist or belongs to another
            organization.
          content:
            application/json:
              examples:
                payment_method_not_found:
                  value:
                    error:
                      type: invalid_request_error
                      code: missing_resource
                      param: id
                      message: 'No such payments/payment_method: pm_nonexistent'
                      doc_url: https://docs.fintoc.com/reference/errors
              schema:
                $ref: '#/components/schemas/error_object'
        '409':
          description: The payment method is already canceled.
          content:
            application/json:
              examples:
                payment_method_already_canceled:
                  value:
                    error:
                      type: invalid_request_error
                      code: payment_method_non_cancelable
                      param: null
                      message: >-
                        Payment method is not cancelable. The payment method is
                        already canceled
                      doc_url: https://docs.fintoc.com/reference/errors
              schema:
                $ref: '#/components/schemas/error_object'
      security:
        - api_key: []
components:
  schemas:
    payment_method:
      description: >-
        A payment method represents a customer's stored payment instrument,
        ready to be charged without the customer going through the full
        authorization flow again. The shape of the object depends on its `type`:
        the type-specific details live under a key named after the `type`
        (`bank_transfer`, `card`, `mx_direct_debit`, or `pac`).
      oneOf:
        - $ref: '#/components/schemas/payment_method_bank_transfer'
        - $ref: '#/components/schemas/payment_method_card'
        - $ref: '#/components/schemas/payment_method_mx_direct_debit'
        - $ref: '#/components/schemas/payment_method_pac'
      discriminator:
        propertyName: type
        mapping:
          bank_transfer: '#/components/schemas/payment_method_bank_transfer'
          card: '#/components/schemas/payment_method_card'
          mx_direct_debit: '#/components/schemas/payment_method_mx_direct_debit'
          pac: '#/components/schemas/payment_method_pac'
    error_object:
      type: object
      properties:
        error:
          type: object
          description: Details of the error that caused the request to fail.
          properties:
            code:
              type: string
              description: >-
                Machine-readable code identifying the specific error, for
                example `invalid_api_key`. Not returned by every error.
              example: invalid_api_key
            doc_url:
              type: string
              description: >-
                URL of a documentation page with more details about the error.
                Not returned by every error.
              example: https://docs.fintoc.com/reference/errors
            message:
              type: string
              description: Human-readable message describing the error.
              example: 'Invalid API Key: invalid-*oken'
            param:
              type:
                - string
                - 'null'
              description: >-
                Name of the request parameter that caused the error. `null` when
                the error cannot be tied to a single parameter, and not returned
                by every error.
              example: amount
            type:
              type: string
              description: >-
                Category of the error, for example `invalid_request_error`,
                `authentication_error`, or `api_error`.
              example: invalid_request_error
          required:
            - type
            - message
    payment_method_bank_transfer:
      type: object
      description: >-
        Payment method backed by a linked bank account that pays through bank
        transfers.
      properties:
        id:
          type: string
          description: Unique identifier of the payment method.
          example: pm_1zXcVbNmAsDfGhJk
        object:
          const: payment_method
          description: Type of the object. Always `payment_method`.
        bank_transfer:
          type:
            - object
            - 'null'
          description: >-
            Details of the linked bank account that pays the transfers. `null`
            when the linked account backing the payment method is no longer
            available.
          properties:
            account_holder_id:
              type: string
              description: >-
                Tax identifier of the account holder, without dots or hyphens.
                In Chile this is the Chilean tax ID (RUT).
              example: '111111111'
            account_number:
              type: string
              description: Account number as a string, which may include leading zeros.
              example: '001111111111'
            account_type:
              type: string
              enum:
                - checking_account
                - savings_account
                - sight_account
                - rut_account
                - line_of_credit
                - credit_card
              description: >-
                Account subtype reported by the institution. One of
                `checking_account`, `savings_account`, `sight_account`,
                `rut_account`, `line_of_credit`, or `credit_card`.
              example: checking_account
            institution_id:
              type: string
              example: cl_banco_de_chile
              description: Identifier of the institution where the account lives.
            institution_name:
              type: string
              description: Human-readable name of the institution.
              example: Banco de Chile
            mfa_type:
              type: string
              description: >-
                Type of multi-factor authentication the institution requires to
                authorize a transfer, for example `sms`. An empty string when
                the institution does not require multi-factor authentication.
              example: sms
            status:
              type: string
              enum:
                - active
                - inactive
                - canceled
              description: >-
                Chargeability of the bank transfer payment method. One of
                `active`, `inactive`, or `canceled`. An `inactive` payment
                method cannot be charged until the customer links their account
                again. A `canceled` payment method was canceled through the API
                and cannot be charged.
              example: active
          required:
            - account_holder_id
            - account_number
            - account_type
            - institution_id
            - institution_name
            - mfa_type
            - status
        created_at:
          type: string
          format: date-time
          description: ISO 8601 timestamp of when the payment method was created.
          example: '2026-01-15T14:30:00.000Z'
        customer:
          type: string
          description: Unique identifier of the customer the payment method belongs to.
          example: cus_oVgVqlnK0PdmGirH
        mode:
          type: string
          enum:
            - live
            - test
          description: >-
            Mode of the payment method. `live` payment methods charge real
            money; `test` payment methods use fake data for integration testing.
          example: live
        type:
          const: bank_transfer
          description: Type of the payment method. Always `bank_transfer`.
      required:
        - id
        - object
        - bank_transfer
        - created_at
        - customer
        - mode
        - type
    payment_method_card:
      type: object
      description: Payment method backed by a stored card.
      properties:
        id:
          type: string
          description: Unique identifier of the payment method.
          example: pm_1zXcVbNmAsDfGhJk
        object:
          const: payment_method
          description: Type of the object. Always `payment_method`.
        card:
          type:
            - object
            - 'null'
          description: >-
            Details of the stored card. `null` when the card backing the payment
            method is no longer available.
          properties:
            active:
              type: boolean
              description: >-
                Whether the card can currently be charged. Fintoc automatically
                deactivates expired cards.
              example: true
            brand:
              type: string
              description: Brand of the card, for example `visa` or `mastercard`.
              example: visa
            country:
              type: string
              description: >-
                Display name of the country where the card was issued, in
                English.
              example: Chile
            expiration:
              type: object
              description: >-
                Expiration date of the card. For cards enrolled through a wallet
                (for example, Apple Pay), month and year are `null` because the
                wallet does not expose an expiration date.
              properties:
                month:
                  type:
                    - string
                    - 'null'
                  description: Two-digit expiration month. `null` for wallet cards.
                  example: '12'
                year:
                  type:
                    - string
                    - 'null'
                  description: Four-digit expiration year. `null` for wallet cards.
                  example: '2030'
              required:
                - month
                - year
            kind:
              type: string
              description: Kind of card, for example `credit` or `debit`.
              example: credit
            last_four_digits:
              type: string
              description: Last four digits of the card number.
              example: '4242'
            wallet:
              type:
                - string
                - 'null'
              enum:
                - apple_pay
                - google_pay
                - null
              description: >-
                Wallet used to enroll the card. Possible values are `apple_pay`
                and `google_pay`. `null` for cards entered manually.
              example: apple_pay
          required:
            - active
            - brand
            - country
            - expiration
            - kind
            - last_four_digits
            - wallet
        created_at:
          type: string
          format: date-time
          description: ISO 8601 timestamp of when the payment method was created.
          example: '2026-01-15T14:30:00.000Z'
        customer:
          type: string
          description: Unique identifier of the customer the payment method belongs to.
          example: cus_oVgVqlnK0PdmGirH
        mode:
          type: string
          enum:
            - live
            - test
          description: >-
            Mode of the payment method. `live` payment methods charge real
            money; `test` payment methods use fake data for integration testing.
          example: live
        type:
          const: card
          description: Type of the payment method. Always `card`.
      required:
        - id
        - object
        - card
        - created_at
        - customer
        - mode
        - type
    payment_method_mx_direct_debit:
      type: object
      description: >-
        Payment method backed by a Mexican direct debit mandate that charges the
        customer's bank account.
      properties:
        id:
          type: string
          description: Unique identifier of the payment method.
          example: pm_1zXcVbNmAsDfGhJk
        object:
          const: payment_method
          description: Type of the object. Always `payment_method`.
        created_at:
          type: string
          format: date-time
          description: ISO 8601 timestamp of when the payment method was created.
          example: '2026-01-15T14:30:00.000Z'
        customer:
          type: string
          description: Unique identifier of the customer the payment method belongs to.
          example: cus_oVgVqlnK0PdmGirH
        mode:
          type: string
          enum:
            - live
            - test
          description: >-
            Mode of the payment method. `live` payment methods charge real
            money; `test` payment methods use fake data for integration testing.
          example: live
        mx_direct_debit:
          type:
            - object
            - 'null'
          description: >-
            Details of the direct debit mandate that charges the customer's
            account. `null` when the mandate backing the payment method is no
            longer available.
          properties:
            account_holder_id:
              type: string
              description: >-
                Tax identifier of the account holder, without dots or hyphens.
                In Mexico this is the Federal Taxpayer Registry number (RFC) or
                the Unique Population Registry Code (CURP).
              example: AAAA010101AAA
            account_number_last4:
              type: string
              description: Last four digits of the debited account.
              example: '1234'
            account_type:
              type: string
              enum:
                - clabe
                - debit_card
              description: >-
                Kind of account the mandate debits. One of `clabe` (an 18-digit
                CLABE, the standardized Mexican bank account number) or
                `debit_card`.
              example: clabe
            consent_source:
              type: string
              enum:
                - api
                - checkout
              description: >-
                How Fintoc received the account holder's consent to the mandate.
                One of `api` (you uploaded the `consent_documents` when you
                created the payment method) or `checkout` (the account holder
                signed the consent on a Fintoc-hosted checkout page). Fintoc
                sets this value and you can't change it.
              example: api
            institution:
              type: object
              description: Institution where the debited account is held.
              properties:
                id:
                  type: string
                  description: >-
                    Fintoc identifier of the bank that holds the debited
                    account.
                  example: mx_banco_bbva
                country:
                  type: string
                  description: >-
                    Lowercase ISO 3166-1 alpha-2 code of the institution's
                    country.
                  example: mx
                name:
                  type: string
                  description: Human-readable name of the institution.
                  example: Banco BBVA
              required:
                - id
                - country
                - name
            interval:
              type: string
              enum:
                - week
                - month
                - year
              description: >-
                Frequency at which the mandate authorizes charges. One of
                `week`, `month`, or `year`.
              example: month
            max_amount:
              type: integer
              description: >-
                Maximum amount the mandate authorizes per charge, in the
                smallest currency unit. For example, `500000` for `$5,000.00
                MXN`.
              example: 500000
            status:
              type: string
              enum:
                - pending
                - active
                - rejected
                - canceled
                - expired
              description: >-
                Status of the mandate. One of `pending` (the bank has not
                confirmed the mandate yet), `active` (the mandate accepts
                charges), `rejected` (the mandate was refused and never became
                chargeable), `canceled` (the mandate no longer accepts charges),
                or `expired` (the account holder did not confirm the mandate
                within 7 days). Only payment methods whose mandate is `active`
                can be charged.
              example: active
          required:
            - account_holder_id
            - account_number_last4
            - account_type
            - consent_source
            - institution
            - interval
            - max_amount
            - status
        type:
          const: mx_direct_debit
          description: Type of the payment method. Always `mx_direct_debit`.
      required:
        - id
        - object
        - created_at
        - customer
        - mode
        - mx_direct_debit
        - type
    payment_method_pac:
      type: object
      description: >-
        Payment method backed by a direct debit (PAC) subscription that charges
        the customer's bank account.
      properties:
        id:
          type: string
          description: Unique identifier of the payment method.
          example: pm_1zXcVbNmAsDfGhJk
        object:
          const: payment_method
          description: Type of the object. Always `payment_method`.
        created_at:
          type: string
          format: date-time
          description: ISO 8601 timestamp of when the payment method was created.
          example: '2026-01-15T14:30:00.000Z'
        customer:
          type: string
          description: Unique identifier of the customer the payment method belongs to.
          example: cus_oVgVqlnK0PdmGirH
        mode:
          type: string
          enum:
            - live
            - test
          description: >-
            Mode of the payment method. `live` payment methods charge real
            money; `test` payment methods use fake data for integration testing.
          example: live
        pac:
          type:
            - object
            - 'null'
          description: >-
            Details of the direct debit subscription that charges the customer's
            account. `null` when the subscription backing the payment method is
            no longer available.
          properties:
            account_holder_id:
              type: string
              description: >-
                Tax identifier of the account holder, without dots or hyphens.
                In Chile this is the Chilean tax ID (RUT).
              example: '111111111'
            account_number:
              type: string
              description: >-
                Account number of the debited account as a string, which may
                include leading zeros.
              example: '001111111111'
            account_type:
              type: string
              enum:
                - checking_account
                - savings_account
                - sight_account
                - rut_account
                - line_of_credit
                - credit_card
              description: >-
                Account subtype reported by the institution. One of
                `checking_account`, `savings_account`, `sight_account`,
                `rut_account`, `line_of_credit`, or `credit_card`.
              example: checking_account
            institution:
              type: object
              description: Institution where the debited account lives.
              properties:
                id:
                  type: string
                  description: Identifier of the institution.
                  example: cl_banco_de_chile
                country:
                  type: string
                  description: >-
                    Lowercase ISO 3166-1 alpha-2 code of the institution's
                    country.
                  example: cl
                name:
                  type: string
                  description: Human-readable name of the institution.
                  example: Banco de Chile
              required:
                - id
                - country
                - name
            status:
              type: string
              enum:
                - pending
                - active
                - canceled
                - expired
              description: >-
                Status of the direct debit subscription. One of `pending` (the
                bank has not confirmed the subscription yet), `active` (the
                subscription accepts charges), `canceled` (the subscription no
                longer accepts charges), or `expired` (the bank did not confirm
                the subscription within 7 days). Only payment methods whose
                subscription is `active` can be charged.
              example: active
          required:
            - account_holder_id
            - account_number
            - account_type
            - institution
            - status
        type:
          const: pac
          description: Type of the payment method. Always `pac`.
      required:
        - id
        - object
        - created_at
        - customer
        - mode
        - pac
        - type
  securitySchemes:
    api_key:
      type: apiKey
      name: Authorization
      in: header

````