nenoDevelopers
⌘K
v1

Guides

Invoice a customer

Create an invoice, send it, and follow it through to payment.

In a single call

If your system already has the final figures, you can create, number and send the invoice in one request by setting send to true. The response has status sent and an invoiceNumber.

cURL
curl -X POST https://api.neno.co/public/v1/invoices \
-H "Authorization: Bearer $NENO_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"customerName": "Aalto Studio BV",
"currencyCode": "EUR",
"dueDate": "2026-10-24",
"lineItems": [
{
"description": "Brand identity, phase 2",
"quantity": "1",
"unitPriceMinor": "125000",
"taxRatePercent": "21"
}
],
"send": true,
"sendTo": ["[email protected]"],
"sendMessage": "Thanks for your business."
}'

sendTo replaces the customer’s email address on file for this send only. sendMessage is added to the body of the email.

Step by step

When someone needs to check the invoice before it goes out, split the work up:

  1. Create it with POST /invoices and leave out finalize and send. It’s saved as a draft.
  2. Make changes with PATCH /invoices/{id} while it’s still a draft.
  3. Lock it and assign a number with POST /invoices/{id}/finalize.
  4. Email it with POST /invoices/{id}/send.

Get the PDF

The PDF uses the workspace’s invoice template and the invoice’s language. Use it to archive a copy or attach it in your own system.

cURL
curl https://api.neno.co/public/v1/invoices/inv_7Hq2c9LmX4/pdf \
-H "Authorization: Bearer $NENO_API_KEY" \
-o 2026-0142.pdf

Check payment status

Fetch the invoice with GET /invoices/{id}, or list with status=paid and issuedAfter to pick up recent payments. Once an invoice is paid, paidAt holds the time the payment was recorded.