Invoices
An invoice represents a single payment event — either a checkout completed by a customer or an automatic renewal of a recurring subscription. Invoices are immutable once created.
The Seller API exposes invoices read-only. The response shape mirrors the CSV export in your dashboard.
GET /v1/invoices
List invoices, most recent first.
Tier: C · Auth: required · Idempotent: N/A
At least one filter is required. To prevent accidental full-table scans, you must provide either a
createdAfter/createdBeforewindow or one ofstatus,paymentMethod,customerId,productId,subscriptionId. Calls with no filter return400 invalid_request.
Query parameters
| Parameter | Type | Description |
|---|---|---|
status | string | Filter by invoice status. One of created, paid, partiallypaid, paidout, completed, refunded. |
paymentMethod | string | One of stripe, crypto, free. |
customerId | string | Discord user ID. |
productId | integer | Filter by product. |
subscriptionId | integer | Filter by subscription. |
createdAfter | string | ISO 8601 UTC timestamp (inclusive). |
createdBefore | string | ISO 8601 UTC timestamp (inclusive). Window cannot exceed 365 days. |
limit | integer | Page size (max 100, default 50). |
cursor | string | Pagination cursor. |
Request
curl "https://subscord.com/api/v1/invoices?status=completed&createdAfter=2026-04-01T00:00:00Z&createdBefore=2026-05-01T00:00:00Z&limit=100" \
-H "Authorization: Bearer ssk_live_..."Response — 200 OK
{
"data": [
{
"id": "cs_test_b1nM3...",
"customerDiscordId": "987654321098765432",
"username": "johndoe",
"product": { "name": "Premium" },
"productOption": { "name": "Monthly" },
"discountCode": "LAUNCH20",
"paymentMethod": "stripe",
"origin": "Checkout",
"token": null,
"chain": null,
"createdAt": "2026-04-23T18:14:03.000Z",
"amount": 799,
"currency": "USD",
"status": "completed"
}
],
"nextCursor": "eyJjcmVhdGVkQXRNcyI6MTc0NTQzNzY0MzAwMCwiaWQiOiJjc190ZXN0XyJ9"
}GET /v1/invoices/{id}
Returns a single invoice.
Tier: A · Auth: required · Idempotent: N/A
Path parameters
| Parameter | Type | Description |
|---|---|---|
id | string | The invoice ID (treat as opaque — formats vary by payment method). |
Request
curl https://subscord.com/api/v1/invoices/cs_test_b1nM3... \
-H "Authorization: Bearer ssk_live_..."Response — 200 OK
Same shape as a single entry in the list response above.
Errors
| Status | Code | When |
|---|---|---|
| 400 | invalid_request | List call is missing all filters, or the date window is invalid. |
| 404 | not_found | No invoice with that ID exists for this server. |
Field reference
| Field | Type | Description |
|---|---|---|
id | string | Invoice ID. Format depends on the payment method (Stripe checkout session, crypto reference, etc.). |
customerDiscordId | string | The paying customer's Discord user ID. |
username | string | The customer's Discord username at the time of the response. |
product.name | string | null | The product name. |
productOption.name | string | null | The product option name. |
discountCode | string | null | The discount code applied at checkout, if any. |
paymentMethod | string | null | "stripe", "crypto", or "free". |
origin | string | null | "Checkout" for fresh purchases, "Auto-renewal" for recurring renewals, or null. |
token | string | null | For crypto payments, the token symbol used (e.g. "USDC"). null otherwise. |
chain | string | null | For crypto payments, the chain (e.g. "ethereum"). null otherwise. |
createdAt | string | null | UTC ISO 8601 timestamp when the invoice was recorded. |
amount | integer | null | Amount in minor units of currency (e.g. 999 = $9.99). null if the underlying amount is missing. See Conventions. |
currency | string | ISO 4217 currency code. |
status | string | One of created, paid, partiallypaid, paidout, completed, refunded. |