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

# The PaymentMethod object

> Create, attach, and revoke saved payment instruments.

<ResponseExample>
  ```json The PaymentMethod object theme={null}
  {
    "id": "pm_01JEXAMPLE2K8V4N9C6M1Q7R",
    "object": "payment_method",
    "type": "card",
    "customer": null,
    "status": "active",
    "reusable": true,
    "card": null,
    "billing_details": null,
    "metadata": {},
    "livemode": false
  }
  ```
</ResponseExample>

A PaymentMethod (`pm_…`) represents a reusable or single-use card. Create one with the one-time payment token returned by the browser card fields, or let a [SetupIntent](/api-reference/setup-intents) create a reusable one for you. Responses include the card's last four digits, brand, expiration month and year, and fingerprint.

A `reusable` PaymentMethod survives individual charges and can be attached to a [customer](/api-reference/customers), enabling off-session and subscription billing. A single-use PaymentMethod is consumed by its first charge. For the full flow, see [Save cards](/guides/save-cards) and [Customers](/guides/customers).

## Attributes

<ResponseField name="id" type="string">
  The payment method id (`pm_…`).
</ResponseField>

<ResponseField name="type" type="string">
  `card` is an online/vaulted card. `card_present` is Ionic's read-only record of one physical Terminal presentation.
</ResponseField>

<ResponseField name="customer" type="string | null">
  The attached customer id (`cus_…`), or null if not attached.
</ResponseField>

<ResponseField name="status" type="string">
  `active`: eligible for its type-specific application flow. `consumed`: used by a single-use charge. `expired`: network-expired reusable card. `revoked`: permanently deactivated by the merchant. A card\_present method is staged active and consumed atomically by Terminal payment processing; clients cannot charge it directly.
</ResponseField>

<ResponseField name="reusable" type="boolean">
  `true` when the method can be charged multiple times; `false` for a single-use method that is consumed by its first charge. Only reusable methods can become `expired` or `revoked`; single-use methods cannot be revoked and never expire.
</ResponseField>

<ResponseField name="card" type="object | null">
  Card details. Present for `type: card`; null otherwise.
</ResponseField>

<ResponseField name="billing_details" type="object | null">
  Billing details captured for this method. Null when not supplied.
</ResponseField>

<ResponseField name="metadata" type="object">
  A string key-value map for storing your own structured data.
</ResponseField>

See every field in the response of [Retrieve a payment method](/api-reference/payment-methods/retrieve-a-payment-method).

## Endpoints

| Endpoint | Use it for |
| - | - |
| [Create a payment method](/api-reference/payment-methods/create-a-payment-method) | Turn a one-time payment token into a PaymentMethod, optionally attached to a customer. |
| [List payment methods](/api-reference/payment-methods/list-payment-methods) | Review payment methods, filtered by customer or status. |
| [Retrieve a payment method](/api-reference/payment-methods/retrieve-a-payment-method) | Read the card details and status of one payment method. |
| [Attach a payment method to a customer](/api-reference/payment-methods/attach-a-payment-method-to-a-customer) | Link a payment method to a customer. |
| [Revoke a payment method](/api-reference/payment-methods/revoke-a-payment-method) | Permanently deactivate a reusable payment method. |

## Statuses

| Status | Meaning |
| - | - |
| `active` | Eligible for its type-specific application flow. |
| `consumed` | Used by a single-use charge. |
| `expired` | A reusable card that expired on the card network. |
| `revoked` | Permanently deactivated by the merchant. |

## Rules

* Attachment is write-once. A payment method that is already attached to a customer cannot be attached again.
* Revoking requires a `reason`, which is recorded for audit. The payment method must be `active`, and once revoked it cannot be used for new charges.
* Only reusable payment methods can become `expired` or `revoked`. Single-use payment methods cannot be revoked and never expire.
* Terminal transactions can return a `card_present` payment method. It records one physical card presentation and cannot be created through this API, attached to a customer, reused, or used for off-session billing.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.