Skip to main content
Before a user can cash out, you save their bank account as a payment method. Saved payment methods are reusable across Crossmint products, so a user enters their details once.

Save a bank account

The request body depends on the payment method type. See The Payment Method Object for the full list of types and fields.
The examples below use the staging URL, https://vault.staging.crossmint.com. In production, use https://vault.crossmint.com. See Launch in Production for all the differences between environments.
curl -X POST 'https://vault.staging.crossmint.com/api/unstable/payment-methods' \
  -H 'X-API-KEY: <YOUR_SERVER_API_KEY>' \
  -H 'Content-Type: application/json' \
  -d '{
    "type": "bank-account-us",
    "userLocator": "userId:<USER_ID>",
    "bankAccount": {
      "accountNumber": "6349881141",
      "routingNumber": "026009593",
      "accountType": "checking",
      "bankName": "Chase",
      "bankAddress": {
        "line1": "420 Montgomery St",
        "city": "San Francisco",
        "stateOrRegion": "CA",
        "postalCode": "94104",
        "country": "US"
      },
      "currency": "usd",
      "country": "US",
      "entityType": "individual",
      "billing": {
        "name": "Alice Smith",
        "phone": "+13055551234",
        "address": {
          "line1": "701 S Miami Ave",
          "city": "Miami",
          "stateOrRegion": "FL",
          "postalCode": "33156",
          "country": "US"
        }
      }
    }
  }'
The response returns the saved payment method, including its paymentMethodId, the resolved bankName, and a masked accountSuffix (banks use accountSuffix, not last4). Pass the paymentMethodId as the recipient when you create an order. For a complete list of fields and supported bank account types, see The Payment Method Object in the API reference.
{
  "paymentMethodId": "d5e5c48a-7dec-44b1-8cf4-4615bf00c8fc",
  "default": false,
  "displayName": "Chase ••1141",
  "createdAt": "2026-06-17T21:25:56.542Z",
  "updatedAt": "2026-06-17T21:25:56.542Z",
  "type": "bank-account-us",
  "bankAccount": {
    "billing": {
      "name": "Alice Smith",
      "phone": "+13055551234",
      "address": {
        "line1": "701 S Miami Ave",
        "city": "Miami",
        "stateOrRegion": "FL",
        "postalCode": "33156",
        "country": "US"
      }
    },
    "bankName": "Chase",
    "accountSuffix": "1141",
    "currency": "usd",
    "country": "US",
    "entityType": "individual",
    "bankAddress": {
      "line1": "420 Montgomery St",
      "city": "San Francisco",
      "stateOrRegion": "CA",
      "postalCode": "94104",
      "country": "US"
    },
    "routingNumber": "026009593",
    "accountType": "checking"
  }
}
Saving an account does not require the user to be verified yet, but creating an order does. Before you offramp with this account, verify the user and link the wallet they will pay from. See the Quickstart.

Field reference (US)

FieldDescription
accountNumberThe account number (tokenized at the vault).
routingNumberNine-digit ABA routing number.
accountTypechecking or savings.
billing.nameAccount holder name. Must match the verified user.
currency / countryusd / US.
entityTypeRequired. individual or business.

List, update, and remove

Reads and non-sensitive updates go through the standard API. Use it to list a user’s payment methods, fetch one, update billing details, or remove an account.

Next steps

Quickstart

Use a saved account in an offramp

KYC & Compliance

Verification requirements