Tokens

A payment method is a stored card credential linked to a customer, identified by an id prefixed with pm_. Payment methods are sometimes referred to as tokens - both terms refer to the same concept: a stored card reference used to charge a customer without them being present.

📘

Relationship to customers

Payment methods are always linked to a customer. You must create a customer before you can create a payment method.


Payment Method Lifecycle

A payment method moves through the following statuses:

Status
Description
REQUIRES_ACTION
The payment method has been created but card details have not yet been collected or linked. No charges can be made.
ENABLED
The payment method is active and ready to use for saved card payments.
DISABLED
The payment method has been deactivated and can no longer be used for payments.

How a payment method reaches ENABLED depends on how it was created:

  • New customer - you create the payment method, then use a Setup Intent to collect the customer's card details via the <super-card> web component. The payment method moves to ENABLED once the customer completes card entry.
  • Migrating from another provider - Super backfills the card details automatically after the token import completes. See Migrate to Super.

Payment Method Object

Field
Type
Description
id
string
Unique identifier for the payment method. Prefixed pm_.
customerId
string
ID of the customer this payment method belongs to.
type
string
Payment method type. Currently CARD.
usage
string
How the payment method will be used. Currently OFF_SESSION for recurring and unattended charges.
status
string
Current lifecycle status. See Payment Method Lifecycle.
createdAt
string (ISO 8601)
Timestamp when the payment method was created.
updatedAt
string (ISO 8601)
Timestamp when the payment method was last updated.

Create a Payment Method

Creates a new payment method linked to a customer. The payment method will initially have a status of REQUIRES_ACTION until card details are collected or imported.

Endpoint: POST https://api.superpayments.com/2026-04-01/payment-methods

Request:

{
  "customerId": "cus_0123456789",
  "type": "CARD",
  "usage": "OFF_SESSION",
  "metadata": {
    "subscriptionReference": "sub_your-internal-ref"
  }
}

Response (201):

{
  "id": "pm_0123456789",
  "customerId": "cus_0123456789",
  "type": "CARD",
  "usage": "OFF_SESSION",
  "status": "REQUIRES_ACTION"
}
📘

Store the returned ID

Store the returned id as your payment method ID. This is what you will pass when charging a saved card.


Setup Intents

For new customers, once you have created a payment method you need to collect their card details. A setup intent generates a short-lived session that you pass to the <super-card> web component to render a secure card entry form.

Endpoint: POST https://api.superpayments.com/2026-04-01/payment-methods/{id}/setup-intents

Request:

{
  "redirectUrl": "https://yourapp.com/card-saved"
}
FieldRequiredDescription
redirectUrlOptionalURL to redirect the customer to after card entry is complete.

Response:

{
  "id": "si_...",
  "sessionToken": "...",
  "redirectUrl": "https://yourapp.com/card-saved"
}

Pass the sessionToken to the <super-card> component to begin the card collection flow. Super handles PCI-compliant card capture and 3DS authentication automatically.

Once the customer completes card entry, the payment method status moves to ENABLED and you will receive a customer.payment_method.enabled webhook.

🚧

Setup intents are not needed for migration

If you are migrating payment methods from another provider, you do not need to create setup intents. Super backfills the card details after the import - see Migrate to Super.


Get a Payment Method

Returns a payment method and its current status.

Endpoint: GET https://api.superpayments.com/2026-04-01/payment-methods/{id}

Response:

{
  "id": "pm_01kv8jysnmfeys73cq2e3azyhd",
  "customerId": "cus_01kv8jy4zrfeys73c8dn3bn2ap",
  "type": "CARD",
  "usage": "OFF_SESSION",
  "status": "ENABLED",
  "createdAt": "2026-06-16T16:06:45.172Z",
  "updatedAt": "2026-06-16T16:06:45.172Z"
}

List Payment Methods

Returns a paginated list of payment methods, with optional filtering.

Endpoint: GET https://api.superpayments.com/2026-04-01/payment-methods

Query Parameters:

Parameter
Type
Description
brandId
uuid
Filter by brand ID.
customerId
string
Filter by customer ID.
type
enum
Filter by payment method type. Allowed: CARD.
usage
enum
Filter by usage type. Allowed: OFF_SESSION.
status
enum
Filter by status. Allowed: ENABLED, DISABLED, REQUIRES_ACTION.
by
enum
Field to sort by. Defaults to createdAt. Allowed: createdAt, updatedAt.
direction
enum
Sort direction. Defaults to DESC. Allowed: ASC, DESC.
pageNumber
integer
Page number to retrieve. Must be ≥ 1. Defaults to 1.
pageSize
integer
Number of results per page. Range 1–1000. Defaults to 100.

Webhooks

Super sends the following webhook events for payment method status changes. Configure these in your Super dashboard.

Event
Description
customer.payment_method.enabled
The payment method is now active and ready to use for payments.
customer.payment_method.disabled
The payment method has been deactivated.
customer.payment_method.requires_action
A payment method has been created and is waiting for card details to be collected.
📘

Recommended webhook setup

Listen to customer.payment_method.enabled to know when a payment method is ready to use - both for new customers completing card entry and for payment methods activated after a migration import.


Next Steps