Skip to main content

Invoice numbers, void, the invoice PDF, and two new webhooks

Reeds Engineering
Reeds Engineering
Developer platform

For platform accounts billed monthly, invoices now carry everything you need to reconcile them.

The Invoice object​

  • number: RDS-2026-000123 (TEST-2026-000123 in test mode), numbered per mode and year with no gaps.
  • discounts and adjustments (credit notes, debit notes, credit carried from an earlier invoice), so delivery_fees + vat + service_charges - discounts + adjustments = total.
  • amount_paid, amount_credited and amount_due: what is still owed after payments and credits.
  • voided_at, and a new status, void: Reeds cancelled the invoice and it owes nothing. A corrected one is issued in its place with a new number. GET /invoices?status=void lists them.

VAT is still on the delivery fee only; the service charge carries none.

The PDF​

GET /invoices/{id}/pdf returns the invoice as an A4 PDF, with every line. It answers 304 to a matching If-None-Match.

New webhooks​

  • invoice.paid: an invoice was paid in full, by a payment, a transfer Reeds recorded, or a credit that settled it.
  • invoice.overdue: an invoice passed its due date unpaid. The account is on hold until it is paid: new bookings get 403 ACCOUNT_ON_HOLD.

Both carry data.invoice, like invoice.issued.

Nothing is removed or renamed. Clients that ignore unknown fields and unknown event types need no change.