All systems operational--:--:-- UTC

Invoices

Create, send and reconcile invoices with line items, tax and e-invoicing formats.

On this page

Invoices request payment from a customer. They post to the ledger when issued and when paid, so receivables are always current.

Create an invoice

const invoice = await cl.payments.invoices.create({
  customer: 'cus_Halvorsen',
  currency: 'EUR',
  dueInDays: 30,
  lines: [
    { description: 'AMR fleet management, October 2026', quantity: 140, unitAmount: '110.00', taxRate: 'de_vat_19' },
    { description: 'Firmware rollout support', quantity: 6, unitAmount: '150.00', taxRate: 'de_vat_19' },
  ],
});

The invoice is created as a draft with a number assigned from your sequence, such as INV-2049.

Lifecycle

StatusMeaning
draftEditable, not sent, no ledger effect
openIssued and sent; posted to receivables
paidFully paid; cash posted against receivables
overduePast due date and still open
voidCancelled with a reversing posting

Send a draft with POST /v1/payments/invoices/{id}/send. The customer receives an email with a PDF and a payment link that accepts cards, SEPA Direct Debit and bank transfer.

Reminders

Configure reminders per workspace, for example three days before the due date, on the due date and seven days after. Reminders stop automatically when the invoice is paid.

E-invoicing

Invoices can be issued as XRechnung (Germany) or via the Peppol network for customers that require structured e-invoices. Set format: 'xrechnung' or format: 'peppol' and provide the customer's routing identifier.

Reconciliation

Incoming bank transfers are matched to open invoices by reference, amount and payer. About 99.6% match automatically. Unmatched payments wait in Payments, Reconciliation with a suggested match.