curl --request GET \
--url https://staging.crossmint.com/api/unstable/payment-methods \
--header 'X-API-KEY: <api-key>'import requests
url = "https://staging.crossmint.com/api/unstable/payment-methods"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
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 => [
"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>")
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>")
.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>'
response = http.request(request)
puts response.read_body{
"data": [
{
"paymentMethodId": "dd8a59c6-aac0-47c2-9c21-686caf7f0359",
"default": false,
"displayName": "Chime ••6259",
"type": "bank-account-us",
"bankAccount": {
"billing": {
"name": "Alice Smith",
"phone": "+12125551234",
"address": {
"line1": "123 Main St",
"city": "New York",
"stateOrRegion": "NY",
"postalCode": "10001",
"country": "US"
}
},
"bankName": "Chime",
"accountSuffix": "6259",
"currency": "usd",
"country": "US",
"entityType": "individual",
"bankAddress": {
"line1": "123 Main St",
"city": "New York",
"stateOrRegion": "NY",
"postalCode": "10001",
"country": "US"
},
"routingNumber": "091300010",
"accountType": "checking"
},
"lastPayoutAt": "2026-06-15T18:00:00.000Z"
},
{
"paymentMethodId": "3323460b-d9d2-4ec6-b380-8a3e01e3f226",
"default": false,
"displayName": "SEPA Account ••6789",
"type": "bank-account-sepa-iban",
"bankAccount": {
"billing": {
"name": "Hans Müller",
"phone": "+4915112345678",
"address": {
"line1": "Unter den Linden 1",
"city": "Berlin",
"stateOrRegion": "BE",
"postalCode": "10117",
"country": "DE"
}
},
"bankName": null,
"accountSuffix": "6789",
"currency": "eur",
"country": "DE",
"entityType": "individual",
"bic": "COBADEFFXXX"
},
"lastPayoutAt": "2026-06-15T18:00:00.000Z"
}
],
"nextCursor": "eyJsYXN0SWQiOiI2NDUifQ==",
"previousCursor": null
}{
"error": true,
"message": "userLocator is required when not using JWT authentication",
"code": "PAYMENT_METHOD_INVALID_USER_LOCATOR"
}{
"error": true,
"message": "Missing or invalid API key."
}{
"error": true,
"message": "Payment methods are not allowed with this authentication source"
}{
"error": true,
"message": "User not found for the provided locator"
}List Payment Methods
List all payment methods for the authenticated user.
API scope required: payment-methods.read
curl --request GET \
--url https://staging.crossmint.com/api/unstable/payment-methods \
--header 'X-API-KEY: <api-key>'import requests
url = "https://staging.crossmint.com/api/unstable/payment-methods"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
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 => [
"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>")
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>")
.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>'
response = http.request(request)
puts response.read_body{
"data": [
{
"paymentMethodId": "dd8a59c6-aac0-47c2-9c21-686caf7f0359",
"default": false,
"displayName": "Chime ••6259",
"type": "bank-account-us",
"bankAccount": {
"billing": {
"name": "Alice Smith",
"phone": "+12125551234",
"address": {
"line1": "123 Main St",
"city": "New York",
"stateOrRegion": "NY",
"postalCode": "10001",
"country": "US"
}
},
"bankName": "Chime",
"accountSuffix": "6259",
"currency": "usd",
"country": "US",
"entityType": "individual",
"bankAddress": {
"line1": "123 Main St",
"city": "New York",
"stateOrRegion": "NY",
"postalCode": "10001",
"country": "US"
},
"routingNumber": "091300010",
"accountType": "checking"
},
"lastPayoutAt": "2026-06-15T18:00:00.000Z"
},
{
"paymentMethodId": "3323460b-d9d2-4ec6-b380-8a3e01e3f226",
"default": false,
"displayName": "SEPA Account ••6789",
"type": "bank-account-sepa-iban",
"bankAccount": {
"billing": {
"name": "Hans Müller",
"phone": "+4915112345678",
"address": {
"line1": "Unter den Linden 1",
"city": "Berlin",
"stateOrRegion": "BE",
"postalCode": "10117",
"country": "DE"
}
},
"bankName": null,
"accountSuffix": "6789",
"currency": "eur",
"country": "DE",
"entityType": "individual",
"bic": "COBADEFFXXX"
},
"lastPayoutAt": "2026-06-15T18:00:00.000Z"
}
],
"nextCursor": "eyJsYXN0SWQiOiI2NDUifQ==",
"previousCursor": null
}{
"error": true,
"message": "userLocator is required when not using JWT authentication",
"code": "PAYMENT_METHOD_INVALID_USER_LOCATOR"
}{
"error": true,
"message": "Missing or invalid API key."
}{
"error": true,
"message": "Payment methods are not allowed with this authentication source"
}{
"error": true,
"message": "User not found for the provided locator"
}Authorizations
Query Parameters
Identifies the target user. Format: <type>:<value> (e.g., email:alice@example.com, userId:abc123). Required with server API key auth; ignored with JWT.
Filter by payment method type. Without this filter, all types are returned.
bank-account-us, bank-account-mx-clabe, bank-account-co, bank-account-sepa-iban Opaque pagination cursor from a previous response. Pass to retrieve the next page.
Maximum number of results per page (1-100, default 30).
1 <= x <= 100Sort by creation date: asc (oldest first) or desc (newest first, default).
asc, desc Filter to payout methods that have (true) or have not (false) funded a settled offramp payout. Omit to return all payout methods regardless of payout history.
true, false Response
Paginated list of PaymentMethod objects. nextCursor and previousCursor are included when additional pages exist in that direction.
Paginated list of payment methods.
Was this page helpful?

