Skip to content

List a customer's payment methods

The payment_methods.list operation: GET /api/v1/customers/{customerId}/payment_methods in the REST API and the payment_methods_list tool in the MCP server.

GET/api/v1/customers/{customerId}/payment_methods

Lists the payment methods a customer saved (from a subscription checkout or a setup checkout), newest first: the card's brand, last four digits, expiry and country, and which one is the default that subscriptions charge. Card numbers never reach Ownrecord. Detached methods are listed only with includeDetached.

Paginate with limit (1–100, default 10) and starting_after (the next_cursor of the previous page).

At a glance

  • REST: GET /api/v1/customers/{customerId}/payment_methods
  • MCP tool: payment_methods_list
  • Operation ID: payment_methods.list
  • Scope: Brand
  • Permission: customers:read
  • Risk tier: read
  • Dry run: Not supported
  • Idempotency: Not needed (read only)
  • Modes: Test and live
  • Pagination: limit (at most 100) and starting_after
  • Authentication: API key with the customers:read scope
  • Since: M5

Request

Path parameters

FieldTypeDescription
customerIdcus_… ID

Query parameters

FieldTypeRequiredDescription
includeDetachedboolean or one of true, falseNoAlso list detached methods.
limitinteger (1 to 100)No
starting_afterpm_… IDNo

Response

200 OK with a JSON object, a page of the list (newest first):

FieldTypeDescription
object"list"
dataarray of object
data[].idpm_… ID
data[].object"payment_method"
data[].livemodeboolean
data[].brandIdbrd_… ID
data[].customerIdcus_… ID
data[].processorone of stripe, mollie, fake
data[].processorConnectionIdpcon_… ID
data[].processorRefobject
data[].processorRef.paymentMethodIdstringThe processor's ID of the method (Stripe pm_…).
data[].typestringcard, sepa_debit, … as the processor reports it.
data[].cardobject or null
data[].isDefaultbooleanCharged for the customer's subscriptions unless one names another.
data[].sourceone of checkout, setup
data[].createdAtdate-time
data[].detachedAtdate-time or null
has_moreboolean
next_cursorpm_… ID or null

Examples

A customer's cards

HTTP
GET /api/v1/customers/cus_01m4tx5nj8emwbyf7y9vcf47z4/payment_methods
Authorization: Bearer or_test_…

Response (200):

JSON
{
  "object": "list",
  "data": [
    {
      "id": "pm_01m4tx5nj8emwbyf7y9vcf47zd",
      "object": "payment_method",
      "livemode": false,
      "brandId": "brd_01m4tx5nj8emwbyf7y9vcf47x4",
      "customerId": "cus_01m4tx5nj8emwbyf7y9vcf47z4",
      "processor": "stripe",
      "processorConnectionId": "pcon_01m4tx5nj8emwbyf7y9vcf47zf",
      "processorRef": {
        "paymentMethodId": "pm_1QExampleCard"
      },
      "type": "card",
      "card": {
        "brand": "visa",
        "last4": "4242",
        "expMonth": 12,
        "expYear": 2029,
        "country": "DE"
      },
      "isDefault": true,
      "source": "checkout",
      "createdAt": "2026-10-13T12:00:00.000Z",
      "detachedAt": null
    }
  ],
  "has_more": false,
  "next_cursor": null
}

Errors

CodeHTTP statusWhenWhat to do
resource_not_found404No payment method (or customer) with this ID is visible to the request.Check the ID and that your credentials are scoped to the right organization, entity, brand and mode.
permission_denied403You can't see this brand's customers (customers:read).Ask an organization owner or admin for a role or scope that allows this action.

It can also return these common errors: validation_failed, api_version_unsupported, authentication_required, api_key_invalid, scope_required, dry_run_not_supported, rate_limited, internal_error.