Create a sample test contract
POST /v1/billing/contracts with `{ customer_id }`. Lucius generates the contract id, a sample CSA, and usage metrics `domestic_wire` and `international_wire`.
A dashboard customer is not a billing contract. After you create the customer under Counterparties, call this endpoint with that UUID.
curl -X POST https://api-dev.lucius.finance/v1/billing/contracts \
-H "Authorization: Bearer luc_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"customer_id":"YOUR_CUSTOMER_UUID"}'Production host: https://api.lucius.finance. Body is only customer_id —
do not send a name or a contract id. Lucius sets id to {slug}-test
(timestamp suffix if that id already exists).
API key as Bearer token: Authorization: Bearer luc_live_.... Create keys in the dashboard under Settings > API Keys.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
curl -X POST "https://example.com/v1/billing/contracts" \ -H "Content-Type: application/json" \ -d '{ "customer_id": "316301ff-ecd8-48cc-a4c4-92c7c6ba33f1" }'{ "object": "contract", "id": "acme-corp-test", "customer_id": "316301ff-ecd8-48cc-a4c4-92c7c6ba33f1", "customer_name": "Acme Corp", "status": "active", "start_date": "2026-09-29", "end_date": "2027-09-29", "currency": "USD", "billing_cadence": "monthly", "metrics": [ "domestic_wire", "international_wire" ], "pdf_url": "https://example.blob.vercel-storage.com/sample.pdf", "sample": true}{ "error": "Missing API key"}{ "error": "Not found"}