Hosted HTTP API
Run pnpm dev:billing-api (default :8788) or deploy apps/billing-api.
Authenticate with x-autlantic-api-key (or Authorization: Bearer). Mode follows the key:
abk_test_…→ Test · Base Sepoliaabk_live_…→ Live · Base mainnet
Catalog, subscriptions, invoices, payments, payment links, and webhooks are scoped to that mode.
Machine-readable
| Artifact | URL |
|---|---|
| OpenAPI 3.1 | OpenAPI guide · raw /openapi.yaml |
| Postman collection | Postman guide · raw JSON |
Import either into Postman, Insomnia, Speakeasy, or your codegen tool. Production server: https://billing.autlantic.com.
Public checkout (no API key)
| Method | Path | Purpose |
|---|---|---|
GET | /checkout/subscribe/:id | Hosted HTML subscription checkout |
GET | /checkout/subscribe/:id.json | Session JSON |
POST | /checkout/subscribe/:id/activate | Activate (test or live with { onChainSubscriptionId }) |
GET | /checkout/pay/:id | Hosted one-time payment checkout |
GET | /checkout/pay/:id/status | Payment session JSON |
POST | /checkout/pay/:id/confirm | Confirm payment ({ txHash? }) |
GET | /checkout/link/:id | Payment link landing (URL / QR target) |
GET | /checkout/link/:id/status | Payment link status JSON |
POST | /checkout/link/:id/open | Mint a one-time payment from the link ({ customerWallet? }) |
Authenticated (X-Autlantic-Api-Key)
| Method | Path | Purpose |
|---|---|---|
GET | /v1/products | List active catalog products and prices |
POST | /v1/payments | Create one-time payment (priceId once or amountUsdc) |
GET | /v1/payments/:id | Fetch payment |
POST | /v1/payment-links | Create shareable payment link (returns url) |
GET | /v1/payment-links | List payment links |
GET | /v1/payment-links/:id | Fetch payment link |
POST | /v1/payment-links/:id/disable | Disable a payment link |
GET | /v1/subscriptions | List (?status=active) |
POST | /v1/subscriptions | Create (priceId or amountUsdc + interval) |
GET | /v1/subscriptions/:id | Fetch |
PATCH | /v1/subscriptions/:id | Update |
POST | /v1/subscriptions/:id/complete | Complete mandate |
POST | /v1/subscriptions/:id/activate | Activate |
POST | /v1/subscriptions/:id/cancel | Cancel |
GET | /v1/invoices | List (?subscriptionId=) |
GET | /v1/invoices/:id | Fetch |
POST | /v1/invoices/:id/charge | Charge |
POST | /v1/invoices/:id/refund | Refund |
POST | /v1/invoices/:id/void | Void |
Create payment link body
{
"amountUsdc": 42,
"merchantRefPrefix": "invoice",
"description": "Consulting",
"maxUses": 1,
"expiresAt": null,
"payoutAddressEvm": "0x…"
}Or pass a catalog priceId with interval "once" instead of amountUsdc. Response includes paymentLink and url (/checkout/link/:id). Encode url as a QR for in-person or shareable pay.
Idempotency
Pass Idempotency-Key on POST requests. Replays return the cached response for 24 hours.
Renewals
Due invoices are processed by apps/billing-worker. Test invoices sandbox-charge; live invoices use the mainnet vault/relayer path.