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",
"type": "bank-account-us",
"status": "active",
"reason": null,
"bankAccount": {
"bankName": "Chase",
"accountSuffix": "7899",
"currency": "usd",
"country": "US",
"entityType": "individual",
"bankAddress": {
"line1": "123 Main St",
"city": "New York",
"stateOrRegion": "NY",
"postalCode": "10001",
"country": "US"
},
"routingNumber": "071000013",
"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",
"status": "active",
"reason": null,
"bankAccount": {
"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 by User
Retrieve the bank account payout methods saved for a given user.
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",
"type": "bank-account-us",
"status": "active",
"reason": null,
"bankAccount": {
"bankName": "Chase",
"accountSuffix": "7899",
"currency": "usd",
"country": "US",
"entityType": "individual",
"bankAddress": {
"line1": "123 Main St",
"city": "New York",
"stateOrRegion": "NY",
"postalCode": "10001",
"country": "US"
},
"routingNumber": "071000013",
"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",
"status": "active",
"reason": null,
"bankAccount": {
"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"
}Returns
An object with adata array of PaymentMethod objects. Use the cursor parameter to paginate; when nextCursor is present, more pages are available.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, bre-b 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 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.
Array of payment method objects for the current page.
A saved bank account payout method. Sensitive fields (full account numbers and IBANs) are never included in responses.
- Bank account
- Bank account
- Bre-B key
Show child attributes
Show child attributes
Cursor to fetch the next page. null when there are no more results.
Cursor to fetch the previous page. null on the first page.
Was this page helpful?

