Skip to main content
Before creating an offramp order, save the destination bank account as a payment method. Saved payment methods can be reused across Crossmint products, so users only need to enter their bank details once.

Save a Payment Method

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.
cURL
The response returns the saved payment method, including its paymentMethodId and a masked accountSuffix. Account numbers, IBANs, CLABEs, and Bre-B keys never appear in full. Pass the paymentMethodId as the recipient when you create an order.
The full account number is never returned. The response carries bankAccount.accountSuffix, the last four digits, while routingNumber comes back in full because it is not secret. A create that passes the structural checks, such as the ABA routing check digit, returns status: "active" straight away. This does not establish that the account exists or who owns it; those checks run when you create an order. The available rails depend on the addresses you supply: fedwire appears in rails.supported only when both accountHolder.address and bankAddress are provided. rtp-credit starts in rails.pending because not every US bank participates in the RTP network, and it moves to rails.supported once the receiving bank’s participation is confirmed. institutionName is never populated for US accounts.
Saving a payment method does not require the user to be verified yet, but creating an order does. Before you offramp to it, verify the user and link the wallet they will pay from. See the Quickstart.
For a complete list of fields and supported payment method types, see The Payment Method Object in the API reference.

Statuses

Every payment method type shares one lifecycle. status describes whether the payment method has passed the readiness checks required for its type and can proceed to order-level eligibility checks. It does not describe user approval, ownership, or guaranteed payout success.

Status Changes

A payment method may complete its readiness checks during creation or initially return pending. If it is pending, poll the payment method to get its latest status. The allowed transitions are:
  • pending → active, rejected, or deleted
  • active → deleted
  • rejected → deleted
A deleted method never reactivates. Readiness checks start when the method is created. Fetching it, editing its label, or using it in an order does not restart those checks. A failed transfer also does not change the payment-method status by itself.

Status Reasons

statusReason is null unless the payment method is rejected. A rejected method may include one of the following reason codes: Branch on status, never on statusReason. New codes can appear at any time, so tolerate values you do not recognize. statusReason never carries provider errors, ownership, or compliance detail. Ownership is evaluated when you create an order, not on the payment method.

Rails

rails.supported lists the rails available to reach the destination straight away, and rails.pending lists rails that may become available once confirmed. Only an active method has a non-empty rails.supported. A valid account with no rail to reach it is rejected with statusReason: "no-rail-available".

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 the label or other non-sensitive metadata, or remove a payment method.

Next Steps

Quickstart

Use a saved payment method in an offramp order

Create Payment Method

Full request and response schema in the API reference