# Add a payment method (/api/customers/create-customer-payment-method)

`POST https://api.comecero.com/api/v1/customers/{customer_id}/payment_methods`

Saves a card or US bank account to a customer. Comecero first checks it with a $0 payment at the gateway (in a currency guessed from the customer's location); if the check fails, nothing is saved and the call fails. The card number is vaulted and the security code is dropped. The customer's first payment method becomes the default. Send `is_default: true` to make a later one the default. If the account does not allow saved cards, this only works for a customer who already has a payment method on file (`409` otherwise). The same card or account twice is a `409`. Secret tokens, and limited tokens tied to the customer. Only a secret token can skip the check with `validate: false`.

## Parameters

- `customer_id` (path, required): The id of the customer. With a limited token from a customer login you can send `me` instead.
- `expand` (query): Comma-separated child objects to return in full instead of as a URL, for example `customer,payments`. Use dot notation for nested objects (`items.product`), up to four levels deep. A single object takes up to 12 paths; a list takes up to 2, applied to every item. Extra paths are dropped without an error. See [Expanding objects](https://docs.comecero.com/docs/basic-concepts/expanding-objects).
- `show` (query): Comma-separated fields to return; all others are left out. Use dot notation for child fields (`customer.email`). You cannot send `show` and `hide` together (`400`). See [Customizing output](https://docs.comecero.com/docs/basic-concepts/customizing-output).
- `hide` (query): Comma-separated fields to leave out of the response. Use dot notation for child fields (`customer.email`). You cannot send `show` and `hide` together (`400`). See [Customizing output](https://docs.comecero.com/docs/basic-concepts/customizing-output).
- `formatted` (query): When `true`, the object also has a `formatted` child with amounts and dates as display text in the shopper's language and currency (for example `$19.99` or `November 7, 2026`). The default is `false`. See [Localized formatting](https://docs.comecero.com/docs/basic-concepts/localized-formatting).

Request body: the `payment_method_create_request` schema.

Responses: 201, 400, 401, 402, 403, 404, 409.

Full schemas: operation `create_customer_payment_method` in /openapi.json.