curl --request GET \
--url https://staging.crossmint.com/api/unstable/payment-methods \
--header 'Authorization: Bearer <token>' \
--header 'X-API-KEY: <api-key>'import requests
url = "https://staging.crossmint.com/api/unstable/payment-methods"
headers = {
"X-API-KEY": "<api-key>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'X-API-KEY': '<api-key>', Authorization: 'Bearer <token>'}
};
fetch('https://staging.crossmint.com/api/unstable/payment-methods', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://staging.crossmint.com/api/unstable/payment-methods",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://staging.crossmint.com/api/unstable/payment-methods"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://staging.crossmint.com/api/unstable/payment-methods")
.header("X-API-KEY", "<api-key>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.crossmint.com/api/unstable/payment-methods")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"card": {
"billing": {
"address": {
"city": "Springfield",
"country": "US",
"line1": "123 Main St",
"postalCode": "62701",
"stateOrRegion": "IL"
},
"name": "Alice Smith",
"phone": "+12125551234"
},
"bin": "411111",
"brand": "visa",
"country": "US",
"expiration": {
"month": "12",
"year": "2028"
},
"fundingType": "debit",
"last4": "1111"
},
"createdAt": "2026-08-20T19:10:00.000Z",
"default": true,
"displayName": "Visa ••1111",
"paymentMethodId": "d4e5f6a7-b8c9-0123-def4-567890abcdef",
"type": "card",
"updatedAt": "2026-08-20T19:12:11.000Z"
},
{
"bankAccount": {
"accountSuffix": "7899",
"accountType": "checking",
"bankAddress": {
"city": "New York",
"country": "US",
"line1": "123 Main St",
"postalCode": "10001",
"stateOrRegion": "NY"
},
"bankName": "Chase",
"country": "US",
"currency": "usd",
"entityType": "individual",
"routingNumber": "071000013"
},
"createdAt": "2026-08-20T19:10:00.000Z",
"lastPayoutAt": "2026-06-15T18:00:00.000Z",
"paymentMethodId": "dd8a59c6-aac0-47c2-9c21-686caf7f0359",
"reason": null,
"status": "active",
"statusReason": null,
"type": "bank-account-us",
"updatedAt": "2026-08-20T19:12:11.000Z"
},
{
"bankAccount": {
"accountSuffix": "6789",
"bankName": "Deutsche Bank",
"bic": "COBADEFFXXX",
"country": "DE",
"currency": "eur",
"entityType": "individual"
},
"createdAt": "2026-08-20T19:10:00.000Z",
"default": false,
"displayName": "Deutsche Bank ••6789",
"lastPayoutAt": "2026-06-15T18:00:00.000Z",
"paymentMethodId": "3323460b-d9d2-4ec6-b380-8a3e01e3f226",
"reason": null,
"status": "active",
"statusReason": null,
"type": "bank-account-sepa-iban",
"updatedAt": "2026-08-20T19:12:11.000Z"
},
{
"bankAccount": {
"accountHolder": {
"name": "Luis Gomez Rios"
},
"accountSuffix": "7899",
"country": "MX",
"currency": "mxn",
"entityType": "individual"
},
"createdAt": "2026-08-20T19:10:00.000Z",
"paymentMethodId": "b9f1c4d2-5e70-4a31-8c66-2f0d7a95e134",
"reason": null,
"status": "active",
"statusReason": null,
"type": "bank-account-mx-clabe",
"updatedAt": "2026-09-02T11:04:18.000Z"
}
],
"nextCursor": "eyJsYXN0SWQiOiI2NDUifQ==",
"previousCursor": null
}{
"code": "PAYMENT_METHOD_INVALID_USER_LOCATOR",
"error": true,
"message": "userLocator is required when not using JWT authentication"
}{
"error": true,
"message": "<string>",
"code": "<string>",
"parameters": {}
}{
"error": true,
"message": "<string>",
"code": "<string>",
"parameters": {}
}{
"error": true,
"message": "<string>",
"code": "<string>",
"parameters": {}
}List Payment Methods
Returns a paginated list of payment methods for a user, newest first by default. A deleted payment method is omitted; pass status=deleted to list the deleted bank accounts.
API scope required: payment-methods.read
curl --request GET \
--url https://staging.crossmint.com/api/unstable/payment-methods \
--header 'Authorization: Bearer <token>' \
--header 'X-API-KEY: <api-key>'import requests
url = "https://staging.crossmint.com/api/unstable/payment-methods"
headers = {
"X-API-KEY": "<api-key>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'X-API-KEY': '<api-key>', Authorization: 'Bearer <token>'}
};
fetch('https://staging.crossmint.com/api/unstable/payment-methods', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://staging.crossmint.com/api/unstable/payment-methods",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://staging.crossmint.com/api/unstable/payment-methods"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://staging.crossmint.com/api/unstable/payment-methods")
.header("X-API-KEY", "<api-key>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.crossmint.com/api/unstable/payment-methods")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"card": {
"billing": {
"address": {
"city": "Springfield",
"country": "US",
"line1": "123 Main St",
"postalCode": "62701",
"stateOrRegion": "IL"
},
"name": "Alice Smith",
"phone": "+12125551234"
},
"bin": "411111",
"brand": "visa",
"country": "US",
"expiration": {
"month": "12",
"year": "2028"
},
"fundingType": "debit",
"last4": "1111"
},
"createdAt": "2026-08-20T19:10:00.000Z",
"default": true,
"displayName": "Visa ••1111",
"paymentMethodId": "d4e5f6a7-b8c9-0123-def4-567890abcdef",
"type": "card",
"updatedAt": "2026-08-20T19:12:11.000Z"
},
{
"bankAccount": {
"accountSuffix": "7899",
"accountType": "checking",
"bankAddress": {
"city": "New York",
"country": "US",
"line1": "123 Main St",
"postalCode": "10001",
"stateOrRegion": "NY"
},
"bankName": "Chase",
"country": "US",
"currency": "usd",
"entityType": "individual",
"routingNumber": "071000013"
},
"createdAt": "2026-08-20T19:10:00.000Z",
"lastPayoutAt": "2026-06-15T18:00:00.000Z",
"paymentMethodId": "dd8a59c6-aac0-47c2-9c21-686caf7f0359",
"reason": null,
"status": "active",
"statusReason": null,
"type": "bank-account-us",
"updatedAt": "2026-08-20T19:12:11.000Z"
},
{
"bankAccount": {
"accountSuffix": "6789",
"bankName": "Deutsche Bank",
"bic": "COBADEFFXXX",
"country": "DE",
"currency": "eur",
"entityType": "individual"
},
"createdAt": "2026-08-20T19:10:00.000Z",
"default": false,
"displayName": "Deutsche Bank ••6789",
"lastPayoutAt": "2026-06-15T18:00:00.000Z",
"paymentMethodId": "3323460b-d9d2-4ec6-b380-8a3e01e3f226",
"reason": null,
"status": "active",
"statusReason": null,
"type": "bank-account-sepa-iban",
"updatedAt": "2026-08-20T19:12:11.000Z"
},
{
"bankAccount": {
"accountHolder": {
"name": "Luis Gomez Rios"
},
"accountSuffix": "7899",
"country": "MX",
"currency": "mxn",
"entityType": "individual"
},
"createdAt": "2026-08-20T19:10:00.000Z",
"paymentMethodId": "b9f1c4d2-5e70-4a31-8c66-2f0d7a95e134",
"reason": null,
"status": "active",
"statusReason": null,
"type": "bank-account-mx-clabe",
"updatedAt": "2026-09-02T11:04:18.000Z"
}
],
"nextCursor": "eyJsYXN0SWQiOiI2NDUifQ==",
"previousCursor": null
}{
"code": "PAYMENT_METHOD_INVALID_USER_LOCATOR",
"error": true,
"message": "userLocator is required when not using JWT authentication"
}{
"error": true,
"message": "<string>",
"code": "<string>",
"parameters": {}
}{
"error": true,
"message": "<string>",
"code": "<string>",
"parameters": {}
}{
"error": true,
"message": "<string>",
"code": "<string>",
"parameters": {}
}Authorizations
API key required for authentication
The end user's JWT, sent as Authorization: Bearer <JWT> together with a client-side API key. Validated against the project's external JWT configuration.
Query Parameters
Opaque cursor from a previous response (nextCursor or previousCursor). Omit it on the first request.
Maximum number of results per page. Minimum 1, maximum 100. Default 30.
Sort direction by creation date. desc returns the newest first (default). asc returns the oldest first.
asc, desc Filter by payment method type. Omit to return all types.
bank-account-br, bank-account-co, bank-account-mx-clabe, bank-account-ph, bank-account-sepa-iban, bank-account-us, bre-b, card, pix Set to 'deleted' to list the deleted bank accounts, which the unfiltered list omits. Cards carry no status and are never returned when this is set.
"deleted"Filter to payment methods that have (true) or have not (false) funded a settled offramp payout. When set to false, cards are included in results. Omit to return all payment methods regardless of payout history.
false, true Response
Paginated list of payment methods. nextCursor and previousCursor are present when more pages exist in that direction.
Array of payment method objects for the current page.
A saved payment method. Sensitive fields (full PAN, CVC, full account numbers, IBANs, Bre-B keys) are never included.
- MX CLABE
- US bank account
- CO bank account
- SEPA IBAN
- PH bank account
- CO Bre-B key
- Card
Show child attributes
Show child attributes
{
"createdAt": "2025-01-15T10:30:00.000Z",
"paymentMethodId": "3f7a9c10-2a8b-4c5d-9e2f-1b3a4c5d6e7f",
"type": "card",
"updatedAt": "2025-01-15T10:30:00.000Z"
}
Cursor to fetch the next page. Absent or null when there are no more results.
Cursor to fetch the previous page. Absent or null on the first page.
Was this page helpful?

