# GET /customers/{customer_id}/payment-methods

**List payment methods for a customer**

Returns a paginated list of payment methods that a customer has saved.  Use the query parameters to page through results.

Customers can choose to save payment methods when purchasing one-time items and subscriptions by checking a box when completing checkout. You can present customers with their saved payment methods when they make a purchase in the future.

Returns an empty list where customers have not saved any payment methods, or have deleted all previously saved payment methods.

**Required permissions:** `payment_method.read`

## Path parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `customer_id` | string | required | Paddle ID of the customer entity to work with. (pattern: `^ctm_[a-z\d]{26}$`) |

## Query parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `after` | string | optional | Return entities after the specified Paddle ID when working with paginated endpoints. Used in the `meta.pagination.next` URL in responses for list operations. |
| `per_page` | integer | optional | Set how many entities are returned per page. Paddle returns the maximum number of results if a number greater than the maximum is requested. Check `meta.pagination.per_page` in the response to see how many were returned.

Default: `50`; Maximum: `200`. (Max: 200) |
| `address_id` | array | optional | Return entities related to the specified address. Use a comma-separated list to specify multiple address IDs. |
| `order_by` | string | optional | Order returned entities by the specified field and direction (`[ASC]` or `[DESC]`). For example, `?order_by=id[ASC]`.

Valid fields for ordering: `id`. |
| `supports_checkout` | boolean | optional | Return entities that support being presented at checkout (`true`) or not (`false`). |

## Response (200)

- `data`: array (required)
- `meta`: object (required) — Information about this response.
  - `request_id`: string (required) — Unique ID for the request relating to this response. Provide this when contacting Paddle support about a specific request.
  - `pagination`: object (required) — Keys used for working with paginated results.
    - `per_page`: integer (required) — Number of entities per page for this response. May differ from the number requested if the requested number is greater than the maximum.
    - `next`: string (uri) (required) — URL containing the query parameters of the original request, along with the `after` parameter that marks the starting point of the next page. Always returned, even if `has_more` is `false`.
    - `has_more`: boolean (required) — Whether this response has another page.
    - `estimated_total`: integer — Estimated number of entities for this response.

### Response example

```json
{
  "data": [
    {
      "customer_id": "ctm_01hv6y1jedq4p1n0yqn5ba3ky4",
      "address_id": "add_01j2jfab8zcjy524w6e4s1knjy",
      "id": "paymtd_01j2jff1m3es31sdkejpaym164",
      "type": "card",
      "card": {
        "cardholder_name": "Sam Miller",
        "type": "visa",
        "last4": "4242",
        "expiry_month": 5,
        "expiry_year": 2025
      },
      "paypal": null,
      "origin": "saved_during_purchase",
      "saved_at": "2024-07-12T03:23:26Z",
      "updated_at": "2024-10-29T14:12:28.018784Z",
      "underlying_details": null,
      "south_korea_local_card": null
    }
  ],
  "meta": {
    "request_id": "0a5ed361-6e13-4cf0-bcad-cca2fca21dca",
    "pagination": {
      "per_page": 50,
      "next": "https://api.paddle.com/customers/ctm_01hv6y1jedq4p1n0yqn5ba3ky4/payment-methods?after=paymtd_01j2jff1m3es31sdkejpaym164",
      "has_more": false,
      "estimated_total": 1
    }
  }
}
```
