API Reference — Postpaid Wallets
Check accrued postpaid usage and report billable events. Endpoints live on the Control Plane API at https://cp-api.withpaygent.com and authenticate with your paygent-api-key header.
Prerequisites
Authentication
1paygent-api-key: YOUR_API_KEYAPI key in header only
paygent-api-key as an HTTP header, not as a query parameter.Get postpaid accrual
GET /api/v1/wallet/balance returns all wallets for a customer. For postpaid wallets, use postpaid_used and postpaid_limit only—do not use available (it stays 0).
1curl --location 'https://cp-api.withpaygent.com/api/v1/wallet/balance?customer_id=wallet-post-1' \
2--header 'accept: application/json' \
3--header 'paygent-api-key: YOUR_API_KEY'Example response (postpaid)
1{
2 "balances": {
3 "cx": {
4 "available": 0,
5 "pending": 0,
6 "overage_used": 0,
7 "overage_limit": 0,
8 "postpaid_used": 30,
9 "postpaid_limit": 0
10 }
11 }
12}Postpaid response fields
| Field | Description |
|---|---|
| postpaid_used | Credits accrued this billing period. Resets after invoice is generated. |
| postpaid_limit | Hard stop limit. 0 = no enforced limit. |
Send usage (accrue postpaid)
POST /api/v2/usage reports usage and accrues credits on the postpaid wallet when the indicator is priced in CREDITS. Processing is async via Kafka; balance updates within a few seconds.
1curl --location 'https://cp-api.withpaygent.com/api/v2/usage' \
2--header 'accept: application/json' \
3--header 'paygent-api-key: YOUR_API_KEY' \
4--header 'Content-Type: application/json' \
5--data '{
6 "agentId": "postpaid_1",
7 "customerId": "wallet-post-1",
8 "indicator": "per_minute",
9 "rawUsage": {
10 "provider": "OPENAI",
11 "model": "gpt-4o-mini",
12 "plan": "default",
13 "inputTokens": 120,
14 "outputTokens": 80
15 }
16}'Alternatively use the Python SDK: client.send_usage(agent_id, customer_id, indicator, usage_data). For local testing, set client.base_url to your Control Plane host.
Postpaid integration flow
GET /api/v1/wallet/balance— readpostpaid_usedandpostpaid_limit.- If under the limit (or limit is 0), perform the LLM / API work.
POST /api/v2/usage— accrue usage on the postpaid wallet.- Customer is invoiced at period end;
postpaid_usedresets to 0.
1import requests
2
3API_KEY = "YOUR_API_KEY"
4BASE = "https://cp-api.withpaygent.com"
5CUSTOMER = "wallet-post-1"
6CURRENCY = "cx"
7
8# 1. Check postpaid limit before usage
9resp = requests.get(
10 f"{BASE}/api/v1/wallet/balance",
11 params={"customer_id": CUSTOMER},
12 headers={"paygent-api-key": API_KEY},
13)
14state = resp.json()["balances"].get(CURRENCY, {})
15used = state.get("postpaid_used", 0)
16limit = state.get("postpaid_limit", 0)
17if limit > 0 and used >= limit:
18 raise Exception("Postpaid credit limit reached")
19
20# 2. After successful work, send usage
21# client.send_usage("postpaid_1", CUSTOMER, "per_minute", usage_data)Not supported via API
Prepaid wallets:
Need help? Contact us at support@withpaygent.com