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.

Request
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
}'
Response · 201 Created
{
"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/invoices

Quotes

Send a priced quote with an expiry date. Accepted quotes convert to an invoice without retyping anything.

POST /v1/quotes

Receipts

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/receipts

Usage

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/usage

AI 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.

Over its limit · 201 Created
{
"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.

Paying an invoice over x402
# 1. Read the invoice link as JSON
curl https://app.billery.io/i/8f2c... -H "Accept: application/json"
 
# 2. Ask its x402 pay URL what to pay
curl -i https://app.billery.io/api/pay/8f2c.../x402
# → 402 Payment Required · PAYMENT-REQUIRED: <amount, pay to>
 
# 3. Sign the USDC transfer and send it
curl 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 customer
  • invoice.paidAn invoice was marked paid
  • quote.sentA quote was emailed to a customer
  • quote.convertedA quote was turned into an invoice
  • receipt.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. 1

    Upgrade to Pro

    API access is part of the Pro plan at $20/month, alongside unlimited invoices and quotes.

  2. 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. 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.