List customers
List the people who have paid you or started to, with totals for each.
A customer is added when checkout collects an email, when a payment names one in customer_email, or when you create one, so a customer can have no payments yet. In stats, payments_count and volume count succeeded payments, and incomplete_count counts the rest. volume.amount and average.amount are decimal strings in their currency.
Query
qstringMatches the name, email or ID.blockedbooleantrueorfalse.sortstringcreated_at,last_payment_at,payments_count,volumeorname, with-for descending. Defaults to-last_payment_at.limitintegerPage size, from 1 to 100. Defaults to 25.cursorstringThenext_cursorfrom the previous page. See pagination.
Errors
- 400
invalid_requestA filter has a value it can't take, or thecursorbelongs to another list.
Any request can also fail on its key or its body. See errors.
Request
curl "https://api.402pay.co/api/v1/customers?limit=10" \
-H "Authorization: Bearer $PAY402_SECRET_KEY"const response = await fetch("https://api.402pay.co/api/v1/customers?limit=10", {
headers: {
Authorization: `Bearer ${process.env.PAY402_SECRET_KEY}`,
},
});
const { data } = await response.json();import os
import requests
response = requests.get(
"https://api.402pay.co/api/v1/customers?limit=10",
headers={
"Authorization": f"Bearer {os.environ['PAY402_SECRET_KEY']}",
},
)
data = response.json()["data"]Response200 OK
{
"data": [
{
"id": "cst_gWFWcc7Ga0Pv7LSC",
"kind": "customer",
"name": "Harper Wilson",
"email": "[email protected]",
"blocked": false,
"note": "",
"stats": {
"payments_count": 2,
"incomplete_count": 2,
"volume": {
"amount": "228.10",
"currency": "USD"
},
"average": {
"amount": "114.05",
"currency": "USD"
},
"last_payment_at": "2026-09-26T21:22:47.082Z",
"preferred_rail": "crypto"
},
"created_at": "2026-09-26T21:01:16.809Z",
"updated_at": "2026-09-26T21:01:16.809Z"
}
],
"has_more": true,
"next_cursor": "cst_gWFWcc7Ga0Pv7LSC"
}