Included with Pro
Billing for your app and your AI agents
Your booking form, shop, job software or AI agent already knows the work happened. The Billery API turns that into a branded invoice, quote or receipt - raised, numbered, emailed and paid - without anyone opening a dashboard.
Payments go straight to the business's own Stripe account or wallet. Billery never holds the money.
curl https://app.billery.io/api/v1/receipts \ -H "Authorization: Bearer blry_live_..." \ -H "Idempotency-Key: order-4821" \ -d '{ "customer": { "name": "Ada Okafor", "email": "ada@example.com" }, "items": [ { "description": "Boiler service", "quantity": 1, "unit_price": 120 } ], "payment_method": "Card", "send": true }'{ "object": "receipt", "number": "RCP-0007", "total": 120, "payment_method": "Card", "pdf_url": "https://app.billery.io/i/8f2c.../pdf", "sent_at": "2026-09-23T09:14:22.104Z"}What you can send
Four kinds of billing, one API.
Invoices
Raise an invoice with your own numbering, payment terms and branding. Track it from draft to sent to paid.
POST /v1/invoicesQuotes
Send a priced quote with an expiry date. Accepted quotes convert to an invoice without retyping anything.
POST /v1/quotesReceipts
Already taken the money? Send proof of payment instead. Receipts are API-only for now, and don't count towards your free allowance.
POST /v1/receiptsUsage
Billing by the unit? Record each ticket, report or call as it happens, and it's rolled into one invoice per customer at the end of the month.
POST /v1/usageAI agents
Let an agent bill, inside rules you set.
Give each AI agent its own key instead of full access. It can do the routine billing on its own, and anything outside its rules waits for a person to approve.
- May createWhether it can add customers, invoices, quotes and usage at all.
- SendingAutomatic, only with your approval, or never.
- LimitsSends above an amount, or beyond a number per day, wait for approval.
- ExpiryThe key simply stops working after a date you choose.
Agents connect over the REST API or Billery's MCP server, so tools that speak the Model Context Protocol can create, send and bill without any code. Every action lands in the agent's activity log.
{ "object": "invoice", "number": "INV-0052", "total": 480, "send_status": "pending_approval", "approval_id": "cmvqtgrxg000k..."} # Nothing sent yet. The owner was notified to approve it.Connect over MCP
URL: https://app.billery.io/mcp
Authorization: Bearer blry_live_...
Getting paid
Every invoice says how it can be paid.
Choose the methods per invoice with payment_methods. The money goes directly to the business, and paid invoices tell you how they were paid.
Card
The business connects its own Stripe account. Customers pay from the invoice page, and the invoice marks itself paid.
Bank transfer
Bank details and the invoice number as the reference, printed on the invoice, its PDF and its page.
USDC, for agents
Another AI agent can pay an invoice in USDC over x402, straight to the business's own wallet, with no person involved.
Invoices other agents can pay.
Every invoice link works for software too. Ask it for JSON and you get the invoice and how to pay it. Its USDC option follows the open x402 standard, so an agent paying for your customer can settle it on its own, and the invoice is marked paid.
USDC is a digital dollar. Payments go straight to the business's own wallet and are offered on USD invoices only.
# 1. Read the invoice link as JSONcurl https://app.billery.io/i/8f2c... -H "Accept: application/json" # 2. Ask its x402 pay URL what to paycurl -i https://app.billery.io/api/pay/8f2c.../x402# → 402 Payment Required · PAYMENT-REQUIRED: <amount, pay to> # 3. Sign the USDC transfer and send itcurl https://app.billery.io/api/pay/8f2c.../x402 \ -H "PAYMENT-SIGNATURE: eyJ4NDAyVmVyc2lvbiI6Mi..."# → 200 · { "status": "paid", "transaction": "0x688e..." }Built for production
The awkward parts, handled.
Billing code fails at the worst moments - a dropped connection, a duplicate submit, a retry that bills twice. These are the guarantees that stop that becoming your customer's problem.
Test keys that touch nothing
A test key validates and prices a request exactly like a live one, then writes nothing and emails nobody. Build the whole integration before a single real document exists.
Retries that can't double-bill
Send an idempotency key and a repeated request replays the original response instead of raising a second invoice - so a timeout on your side is safe to retry.
Signed webhooks
Get told when a document is sent, paid or converted. Every delivery is signed with HMAC-SHA256 over a timestamped payload, so you can prove it came from us.
Clear rate limits
120 requests a minute per key, with the remaining count on every successful response. No surprise throttling.
Totals we both agree on
You send line items; Billery does the arithmetic for subtotals, discount, tax and total. Your numbers and ours can't drift apart.
Plain JSON, no SDK needed
Bearer token, snake_case fields, standard status codes. If your language can make an HTTP request, it can use Billery.
Webhooks
Find out the moment something happens.
Point us at an endpoint and we'll POST a signed JSON event to it. Your system learns an invoice was paid without asking us over and over.
Each request carries an HMAC-SHA256 signature over a timestamped payload, so a captured request can't be replayed at you later. The docs include ready-made verification snippets for Node and Python.
invoice.sentAn invoice was emailed to a customerinvoice.paidAn invoice was marked paidquote.sentA quote was emailed to a customerquote.convertedA quote was turned into an invoicereceipt.createdA receipt was created
Where it fits
Wherever the work already starts.
AI agents
Your agent finishes a task, records the usage, and bills the customer at month end - within limits you've approved.
Booking systems
A customer books a slot and the invoice goes out with the confirmation - no one touches a keyboard.
Online shops
Issue a receipt the moment an order is paid, or invoice trade customers on account.
Job and field software
When an engineer marks a job complete, the invoice is raised from the job sheet and emailed before they've left.
Getting started
Three steps to your first call.
- 1
Upgrade to Pro
API access is part of the Pro plan at $20/month, alongside unlimited invoices and quotes.
- 2
Create a key
Settings → Developers for full access (start with a test key, which writes nothing), or the Agents page for a key with its own rules.
- 3
Make the call
Post your line items to /v1/invoices. Swap in a live key when you're happy.
Let your software, and your agents, do the invoicing.
Not a developer? Billery works just as well from your phone.