Included with Pro

Send invoices from your own app

Your booking form, shop or job software already knows the work happened. The Billery API turns that into a branded invoice, quote or receipt - raised, numbered and emailed - without anyone opening a dashboard.

Billery handles the document, not the money. We never take payment from your customers.

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

Three documents, 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

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.

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 £10/month, alongside unlimited invoices and quotes.

  2. 2

    Create a key

    Settings → Developers. Start with a test key - it behaves exactly like a live one but writes nothing.

  3. 3

    Make the call

    Post your line items to /v1/invoices. Swap in a live key when you're happy.

Let your software do the invoicing.

Not a developer? Billery works just as well from your phone.