Skip to content

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

  • q string
    Matches the name, email or ID.
  • blocked boolean
    true or false.
  • sort string
    created_at, last_payment_at, payments_count, volume or name, with - for descending. Defaults to -last_payment_at.
  • limit integer
    Page size, from 1 to 100. Defaults to 25.
  • cursor string
    The next_cursor from the previous page. See pagination.

Errors

  • 400 invalid_request
    A filter has a value it can't take, or the cursor belongs 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"
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"
}