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

# Update a Payment Method

> Update the billing details or default status of an existing payout method.

Updates a payout method's billing details or default status. Only `default` and `billingDetails` can be changed.

## Returns

Returns the updated [PaymentMethod](/offramp/api-reference/payment-methods/payment-method-object) object.


## OpenAPI

````yaml api-reference/_open-api/OfframpAPIs.json PATCH /unstable/payment-methods/{paymentMethodId}
openapi: 3.0.1
info:
  description: |
    Offramp APIs for cashing out stablecoins to fiat.
  version: 1.0.0
  title: Offramp
  contact:
    name: Crossmint Offramp APIs
    url: https://www.crossmint.com
    email: support@crossmint.com
servers:
  - url: https://staging.crossmint.com/api
    description: Staging environment (testnets)
  - url: https://www.crossmint.com/api
    description: Production environment (mainnets)
security: []
tags:
  - name: Offramp
    description: APIs to cash out stablecoins to fiat (offramp)
  - name: Payment Methods
    description: Manage bank account payout methods for offramp.
paths:
  /unstable/payment-methods/{paymentMethodId}:
    parameters:
      - $ref: '#/components/parameters/PaymentMethodId'
    patch:
      tags:
        - Payment Methods
      summary: Update a payment method
      description: >-
        Updates a payout method's billing details or default status. Only
        `default` and `billingDetails` can be modified; the account type and
        account numbers are immutable after creation. The request body must
        contain at least one of these fields.


        **API scope required**: `payment-methods.update`
      operationId: updatePaymentMethod
      parameters:
        - name: paymentMethodId
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: UUID of the payment method.
        - name: userLocator
          in: query
          required: false
          schema:
            type: string
          description: >-
            Identifies the target user. Format: `<type>:<value>` (e.g.,
            `email:alice@example.com`, `userId:abc123`). Required with server
            API key auth; ignored with JWT.
          example: email:alice@example.com
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PmUpdatePaymentMethodRequest'
            example:
              billingDetails:
                address:
                  line1: 456 Oak Ave
                  city: Chicago
                  postalCode: '60601'
                  country: US
                  stateOrRegion: IL
      responses:
        '200':
          description: Updated PaymentMethod object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PmPaymentMethod'
              examples:
                SEPA:
                  summary: SEPA
                  value:
                    paymentMethodId: 3323460b-d9d2-4ec6-b380-8a3e01e3f226
                    default: false
                    displayName: SEPA Account ••6789
                    type: bank-account-sepa-iban
                    bankAccount:
                      billing:
                        name: Hans Müller
                        phone: '+4915112345678'
                        address:
                          line1: Unter den Linden 1
                          city: Berlin
                          stateOrRegion: BE
                          postalCode: '10117'
                          country: DE
                      bankName: null
                      accountSuffix: '6789'
                      currency: eur
                      country: DE
                      entityType: individual
                      bic: COBADEFFXXX
                BankAccountUs:
                  summary: US Bank Account
                  value:
                    paymentMethodId: dd8a59c6-aac0-47c2-9c21-686caf7f0359
                    default: false
                    displayName: Chime ••6259
                    type: bank-account-us
                    bankAccount:
                      billing:
                        name: Alice Smith
                        phone: '+12125551234'
                        address:
                          line1: 123 Main St
                          city: New York
                          stateOrRegion: NY
                          postalCode: '10001'
                          country: US
                      bankName: Chime
                      accountSuffix: '6259'
                      currency: usd
                      country: US
                      entityType: individual
                      bankAddress:
                        line1: 123 Main St
                        city: New York
                        stateOrRegion: NY
                        postalCode: '10001'
                        country: US
                      routingNumber: '091300010'
                      accountType: checking
                BankAccountMx:
                  summary: MX Bank Account
                  value:
                    paymentMethodId: 27bacbe1-d0ff-4bc3-b37a-ca91cc64fa39
                    default: false
                    displayName: MX Bank Account ••9719
                    type: bank-account-mx-clabe
                    bankAccount:
                      billing:
                        name: Javier Toledo
                        phone: '+525512345678'
                        address:
                          line1: Av. Reforma 1
                          city: Mexico City
                          stateOrRegion: CDMX
                          postalCode: '06600'
                          country: MX
                      bankName: null
                      accountSuffix: '9719'
                      currency: mxn
                      country: MX
                      entityType: individual
                      bankCode: '138'
                BankAccountCo:
                  summary: CO Bank Account
                  value:
                    paymentMethodId: 1cad2281-bd3d-4219-8787-7dfea94c60b1
                    default: false
                    displayName: CO Bank Account ••7890
                    type: bank-account-co
                    bankAccount:
                      billing:
                        name: Carlos Gómez
                        phone: '+573001234567'
                        address:
                          line1: Carrera 7
                          city: Bogotá
                          stateOrRegion: DC
                          postalCode: '110010'
                          country: CO
                      bankName: null
                      accountSuffix: '7890'
                      currency: cop
                      country: CO
                      entityType: individual
                      bankCode: '001'
                      accountType: savings
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Pm400ResponseGeneral'
              examples:
                missing_locator:
                  description: Missing userLocator when using API key auth
                  value:
                    error: true
                    message: userLocator is required when not using JWT authentication
                    code: PAYMENT_METHOD_INVALID_USER_LOCATOR
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Pm401Response'
        '403':
          description: Authentication source not allowed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Pm403Response'
        '404':
          description: Payment method not found or does not belong to this user.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Pm404Response'
        '422':
          description: Request body failed schema validation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Pm422Response'
      security:
        - apiKey: []
      servers:
        - url: https://staging.crossmint.com/api
          description: Staging
        - url: https://www.crossmint.com/api
          description: Production
components:
  parameters:
    PaymentMethodId:
      name: paymentMethodId
      in: path
      required: true
      schema:
        type: string
        format: uuid
      description: PaymentMethod identifier.
  schemas:
    PmUpdatePaymentMethodRequest:
      type: object
      description: >-
        At least one of `default` or `billingDetails` must be provided. Payout
        method type and account numbers cannot be changed after creation.
      properties:
        default:
          type: boolean
          description: >-
            Set to `true` to make this the user's default payment method.
            Automatically unsets the previous default.
        billingDetails:
          type: object
          description: >-
            Updated billing information. Must include at least one of `name`,
            `phone`, or `address`. Only provided fields are updated; omitted
            fields remain unchanged.
          properties:
            name:
              type: string
              description: Updated full name.
            phone:
              type: string
              description: Updated phone number in E.164 format.
            address:
              type: object
              description: >-
                Updated billing address. Replaces the entire address object. All
                fields except `line2` are required.
              properties:
                line1:
                  type: string
                  description: Primary address line (max 200 characters).
                line2:
                  type: string
                  description: >-
                    Secondary address line — apartment, suite, unit, etc. (max
                    60 characters).
                city:
                  type: string
                  description: City (max 50 characters).
                stateOrRegion:
                  type: string
                  description: State, province, or region (max 50 characters).
                postalCode:
                  type: string
                  description: Postal or ZIP code (max 20 characters).
                country:
                  type: string
                  description: >-
                    Two-letter ISO 3166-1 alpha-2 country code (e.g., `US`,
                    `DE`).
              required:
                - line1
                - city
                - postalCode
                - stateOrRegion
                - country
    PmPaymentMethod:
      title: Bank account
      type: object
      description: >-
        A saved bank account payout method. Sensitive fields (full account
        numbers and IBANs) are never included in responses.
      properties:
        paymentMethodId:
          type: string
          format: uuid
          description: Unique identifier (UUID v4), assigned by the server on creation.
        default:
          type: boolean
          description: >-
            Whether this is the user's default payment method. Only one per user
            can be the default; setting a new default automatically unsets the
            previous one.
        displayName:
          type: string
          description: >-
            Human-readable label derived by the server (e.g., "Chime ••6259",
            "SEPA Account ••6789"). Not settable by the client.
        type:
          type: string
          enum:
            - bank-account-us
            - bank-account-mx-clabe
            - bank-account-co
            - bank-account-sepa-iban
          description: >-
            Payout method type. Determines the country-specific `bankAccount`
            fields that are present.
        bankAccount:
          type: object
          description: >-
            Bank account details. Present when `type` is a bank type. Full
            account numbers and IBANs are never included.
          properties:
            billing:
              type: object
              description: Account holder billing details as provided on creation.
            bankName:
              type: string
              description: Name of the bank, or `null` if the bank could not be identified.
              nullable: true
            accountSuffix:
              type: string
              description: Last four digits of the account number, CLABE, or IBAN.
            currency:
              type: string
              description: ISO 4217 currency code in lowercase (e.g., `usd`, `eur`).
            country:
              type: string
              description: ISO 3166-1 alpha-2 country code.
            entityType:
              type: string
              description: Account holder type. Present when provided on creation.
              enum:
                - individual
                - business
            routingNumber:
              type: string
              description: ABA routing number. US only.
            accountType:
              type: string
              description: Account type. US and CO only.
              enum:
                - checking
                - savings
            bankAddress:
              type: object
              description: Bank mailing address. US only.
            bankCode:
              type: string
              description: Bank code. MX and CO only.
            bic:
              type: string
              description: BIC/SWIFT code. SEPA only; present when provided on creation.
            taxId:
              type: string
              description: Mexican tax identifier (RFC). MX only; present when provided.
            businessDescription:
              type: string
              description: Business description. MX only; present when provided.
          required:
            - billing
            - bankName
            - accountSuffix
            - currency
            - country
        lastPayoutAt:
          type: string
          format: date-time
          description: >-
            Read-only. ISO 8601 timestamp of the most recent successful offramp
            payout funded by this bank account. Absent if none.
      required:
        - paymentMethodId
        - default
        - type
        - displayName
        - bankAccount
    Pm400ResponseGeneral:
      type: object
      properties:
        error:
          type: boolean
          example: true
        message:
          type: string
          description: Human-readable error message describing what went wrong
        code:
          type: string
          description: Machine-readable error code for programmatic handling
          enum:
            - PAYMENT_METHOD_INVALID_USER_LOCATOR
      description: Bad request (e.g., missing or invalid userLocator).
    Pm401Response:
      type: object
      properties:
        error:
          type: boolean
          example: true
        message:
          type: string
          example: Missing or invalid API key.
      description: Missing or invalid API key / JWT.
    Pm403Response:
      type: object
      properties:
        error:
          type: boolean
          example: true
        message:
          type: string
          example: Payment methods are not allowed with this authentication source
      description: API key lacks the required scope for this operation.
    Pm404Response:
      type: object
      properties:
        error:
          type: boolean
          example: true
        message:
          type: string
          example: Payment method not found
      description: Payment method not found, deleted, or belongs to a different user.
    Pm422Response:
      type: object
      properties:
        error:
          type: boolean
          example: true
        message:
          type: string
          example: Request body failed schema validation
      description: >-
        Request body validation failed (e.g., missing required fields, invalid
        field format).
  securitySchemes:
    apiKey:
      type: apiKey
      name: X-API-KEY
      in: header

````