---
title: "List payment methods"
description: "Newest first."
canonical_url: "https://twominutebilling.com/help/developers/api-reference/payment-methods/list-payment-methods"
---
# List payment methods

> Newest first.

<api-operation method="GET" path="/v1/businesses/{biz}/customers/{cus}/payment_methods">
<template v-slot:docs="">

With no `limit`/`starting_after` the whole list is returned; with either, the reply is a page carrying `has_more` and `next_cursor` (a payment method id to pass as `starting_after`).

## Path parameters

<table>
<thead>
  <tr>
    <th>
      Parameter
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Required
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        biz
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      <strong>
        yes
      </strong>
    </td>
    
    <td>
      Business id (biz_…)
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        cus
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      <strong>
        yes
      </strong>
    </td>
    
    <td>
      Customer id (cus_…)
    </td>
  </tr>
</tbody>
</table>

## Query parameters

<table>
<thead>
  <tr>
    <th>
      Parameter
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Required
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        type
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      no
    </td>
    
    <td>
      Only these types (comma-separated), e.g. card,upi
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        status
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      no
    </td>
    
    <td>
      Only these statuses (comma-separated), e.g. valid,expiring
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        limit
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      no
    </td>
    
    <td>
      Maximum number of payment methods to return.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        starting_after
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      no
    </td>
    
    <td>
      Opaque cursor from a previous <code>
        next_cursor
      </code>
      
      .
    </td>
  </tr>
</tbody>
</table>

## Response

<table>
<thead>
  <tr>
    <th>
      Field
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        object
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The object type; always <code>
        list
      </code>
      
      . One of <code>
        list
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        data
      </code>
    </td>
    
    <td>
      <code>
        array of object
      </code>
    </td>
    
    <td>
      The rows on this page.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        data.object
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The object type.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        data.id
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      OUR id for the vaulted instrument. Not the gateway's — see reference_id.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        data.provider
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The payment provider that holds the card.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        data.type
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      Instrument kind, e.g. card.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        data.brand
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The card brand, e.g. <code>
        visa
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        data.last4
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The last four digits of the card number.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        data.exp_month
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      The card's expiry month (1-12).
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        data.exp_year
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      The card's expiry year (four digits).
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        data.status
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The payment method's status.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        data.role
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      primary | backup | none. <code>
        none
      </code>
      
       = excluded from automatic collection.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        data.is_default
      </code>
    </td>
    
    <td>
      <code>
        boolean
      </code>
    </td>
    
    <td>
      Convenience for role === primary.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        data.gateway_account
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      Gateway account that vaulted (and will charge) this method; null for legacy env-configured providers with no gateway_accounts row.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        data.gateway_account_label
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The label of the gateway account that holds this payment method.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        data.reference_id
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The GATEWAY's reference for the instrument, <code>
        <gateway customer id>/<gateway token id>
      </code>
      
      . Token-only for gateways with no customer object of their own (PayPal). Null when the gateway supplied no token — render nothing rather than substituting the pm_… id.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        data.instrument
      </code>
    </td>
    
    <td>
      <code>
        object
      </code>
    </td>
    
    <td>
      What the gateway knows about the instrument itself. Null when it reported none of it. A null FIELD inside means that one fact is unknown — in particular a null <code>
        issuer_country
      </code>
      
       is UNKNOWN, never 'not issued in India'.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        data.mandate
      </code>
    </td>
    
    <td>
      <code>
        object
      </code>
    </td>
    
    <td>
      The mandate this instrument was registered under, as the PROVIDER reports it. Null on a plain card-on-file with no mandate rail. A null <code>
        max_amount_minor
      </code>
      
       means the provider reported no ceiling — unknown, NOT unlimited.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        data.avs_check
      </code>
    </td>
    
    <td>
      <code>
        object
      </code>
    </td>
    
    <td>
      What the gateway said about the address / CVC when this instrument was vaulted or charged. Null means nothing was captured — distinct from <code>
        unchecked
      </code>
      
      , which is a real verdict a gateway can send. Stripe only today.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        data.created_at
      </code>
    </td>
    
    <td>
      <code>
        string · ISO-8601
      </code>
    </td>
    
    <td>
      When the payment method was created (ISO-8601 UTC).
    </td>
  </tr>
</tbody>
</table>

## Status codes

<table>
<thead>
  <tr>
    <th>
      Status
    </th>
    
    <th>
      Meaning
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        200
      </code>
    </td>
    
    <td>
      Success
    </td>
  </tr>
</tbody>
</table>
</template>

<template v-slot:request="">

```bash [Request]
curl "$TMBILLING_URL/v1/businesses/biz_XXXXXXXXXXXX01/customers/cus_XXXXXXXXXXXX01/payment_methods?limit=10" \
  -H "Authorization: Bearer $TMBILLING_API_KEY"
```

</template>

<template v-slot:response="">

```json [200 OK]
{
  "object": "list",
  "data": [
    {
      "object": "payment_method",
      "id": "pm_XXXXXXXXXXXX01",
      "provider": "stripe",
      "brand": "visa",
      "last4": "4242"
    }
  ]
}
```

</template>
</api-operation>


## Sitemap

See the full [sitemap](https://twominutebilling.com/sitemap.md) for all pages.
