invoices:write does not include reads. Most integrations request both scopes.
Status
paymentStatus tracks the payments on the invoice with the same values as on a payable: none, scheduled, processing, held, settled, failed and clawback.
Creating an invoice
- The total is the sum of the line totals. It must be at least $1.00.
- Each item needs a
nameand aunitAmountCentsof at least 1.quantitydefaults to 1 and can be up to 99,999,999. - The contact must be active, not archived, and set to
bidirectionalorcan_be_paid. - Without
send, the invoice is a draft. Withsend, Cleo checks that the business can receive, finalizes the invoice and emails it.sendneeds the edit permission thatinvoices:writegrants. send.emailsoverrides the recipients. By default Cleo uses the customer’s email on file.send.subjectandsend.messagechange the email.
Idempotency-Key returns that answer instead of creating a second invoice. Send it with POST /v1/invoices/{invoiceId}/send.
The pay link
enabled is true only while the customer can pay through the link: the link is on and not expired, the invoice is open with money still due, and the business can receive. The hosted page refuses draft, awaiting-approval, declined and blocked invoices. The PDF is never attached to the email; the hosted page offers it.
Can the business receive?
GET /v1/receiving answers before you send:
Sends and link changes that cannot proceed answer with the same codes.
Voiding and marking paid
- Void: only the business that created the invoice can void it. Paid, partly paid and scheduled invoices cannot be voided, and an invoice with a payment in flight answers
payment_in_progress. The customer seesreason. - Mark paid: records
amountCents(default: what is still due),method(check,ach,zelle,wire_transfer,cash,venmo,credit_cardorother) and anote. It works on an open invoice awaiting payment, a partly paid one, or one whose Cleo payment failed.
Events
Invoices sendinvoice.sent and invoice.paid, plus the payable.* events. See Webhooks.