👥 Customers & VaultCustomers

Get customer billing state

Return the Polar-shaped job snapshot for one customer: identity, active and recent subscriptions, and recent invoices with overdue flags. Use this instead of chaining customers_get + subscriptions_list + invoices_list.

GET/customers/{id}/state

Return the Polar-shaped job snapshot for one customer: identity, active and recent subscriptions, and recent invoices with overdue flags. Use this instead of chaining customers_get + subscriptions_list + invoices_list.

The snapshot includes subscriptions and invoices, so the key needs customers:read, subscriptions:read and invoices:read; a key missing any of them gets 403.


Related endpoints

  • POST /customers — Create a new customer
  • GET /customers — List customers
  • GET /customers/{id} — Get customer by ID
  • PATCH /customers/{id} — Update customer details
  • GET /customers/{id}/payment-methods — Get customer payment methods

Common errors

  • 401 authentication_error — missing, invalid, expired, or revoked credential. Codes: authentication_failed, invalid_api_key, expired_api_key, api_key_revoked, session_invalid, merchant_required. Carries a WWW-Authenticate: Bearer challenge.
  • 403 authorization_error — the caller is identified but the action is denied. Codes include insufficient_permissions, ip_not_allowed, merchant_mismatch, and origin_not_allowed.
  • 404 resource_missing — the referenced resource does not exist or is not visible to your key.

Authorization

x-api-key<token>

Your RevKeen merchant API key. Create and manage keys in Dashboard → Settings → Developer. Use rk_sandbox_* for staging/test and rk_live_* for production. The same key may be sent as Authorization: Bearer <key> if that suits your HTTP client better. A missing, invalid, expired, or revoked key returns 401 with a WWW-Authenticate: Bearer challenge; a valid key without the required scope returns 403.

In: header

Scope: customers:read, invoices:read, subscriptions:read

Path Parameters

id*string

Customer UUID

Formatuuid

Response Body

application/json

application/json

application/json

application/json

application/json

Stuck on an error response? Ask the RevKeen assistant to explain it.
curl -X GET "https://api.revkeen.com/v2/customers/11111111-1111-4111-8111-111111111111/state" \
  -H "x-api-key: $REVKEEN_API_KEY"

Synthetic documentation data, validated against the response schema; not a live API result.

{  "data": {    "customer": {      "id": "00000000-0000-4000-8000-000000000001",      "email": "string",      "name": "string",      "company_name": "string",      "created_at": "2019-08-24T14:15:22Z"    },    "subscriptions": {      "active": [        {          "id": "00000000-0000-4000-8000-000000000001",          "status": "string",          "amount_minor": 0,          "currency": "string",          "current_period_end": "2019-08-24T14:15:22Z",          "product_id": "string",          "price_id": "string"        }      ],      "active_has_more": true,      "all": [        {          "id": "00000000-0000-4000-8000-000000000001",          "status": "string",          "amount_minor": 0,          "currency": "string",          "current_period_end": "2019-08-24T14:15:22Z",          "product_id": "string",          "price_id": "string"        }      ],      "all_has_more": true    },    "invoices": {      "overdue": [        {          "id": "00000000-0000-4000-8000-000000000001",          "status": "string",          "amount_due_minor": 0,          "currency": "string",          "due_date": "2019-08-24T14:15:22Z",          "overdue": true        }      ],      "overdue_has_more": true,      "recent": [        {          "id": "00000000-0000-4000-8000-000000000001",          "status": "string",          "amount_due_minor": 0,          "currency": "string",          "due_date": "2019-08-24T14:15:22Z",          "overdue": true        }      ],      "recent_has_more": true    }  }}

Put this endpoint to work