Authorization
default A public key (pk./pk_test.) is accepted on /payments, /customers, /links, /invoices and the catalogue reads (/channels, /providers, /countries, /currencies); anything that moves money out, reads the balance or manages the account answers 406 to it. It is an identifier, never an authorization. Use a secret key (sk./sk_test.) for sensitive operations (transfers, refunds, balance), or a restricted key (rk./rk_test.) scoped to specific permissions. The _test. variant of any key selects the sandbox environment, there is no separate sandbox URL. Never expose your secret key in client-side code.
In: header
Query Parameters
One of your customers, by its `cus_` id.
Lower bound on `total`, in the major unit, as `total` reads. Each invoice is compared in its own currency.
Upper bound on `total`, in the major unit.
The `next_cursor` of a previous response, a numbered page included: switches the list to cursor pagination.
Results per page, 1 to 100. Defaults to 25.
The page to read, from 1, for offset pagination. Ignored with `cursor`.
Search over the name and email written on the invoice.
Only invoices in this status.
"draft""sent""viewed""partial""paid""overdue""cancelled""refunded"The field to order by. Defaults to `created_at`. Any order other than `created_at` `desc` is paged by number: `cursor` is ignored and `meta` has neither `next_cursor` nor `has_more`.
"created_at""invoice_date""due_date""total""amount_paid""status"The direction of the order. Defaults to `desc`.
"asc""desc"Only invoices paid this far, read from `amount_paid` against `total`.
"unpaid""partially_paid""fully_paid"Lower bound on `invoice_date`, a date.
Upper bound on `invoice_date`, a date on or after `date_from`.
Lower bound on `due_date`, a date.
Upper bound on `due_date`, a date on or after `due_date_from`.
Response Body
application/json
application/json
application/json
curl -X GET "https://api.wajub.com/invoices?customer_id=cus_7Kq2mX9vL4tRb3nP8sZcWd1e&amount_min=10000&amount_max=500000&per_page=10&page=2&search=amina&status=sent&sort_by=due_date&sort_dir=asc&payment_status=unpaid&date_from=2026-09-01&date_to=2026-09-30&due_date_from=2026-10-01&due_date_to=2026-10-31"{ "code": 200, "status": "OK", "message": "Invoices retrieved", "items": [ { "id": "inv_Hq7Lm2Xp9Rt4Vb8Nc3Kd", "invoice_number": "INV-2026-0001", "document_type": "invoice", "status": "sent", "customer": null, "customer_id": null, "customer_name": "Amina Diallo", "customer_email": "amina@example.com", "customer_company_name": null, "customer_phone": null, "customer_address": null, "invoice_date": "2026-09-16", "due_date": "2026-09-30", "currency": "XAF", "language": "fr", "subtotal": 50000, "discount_amount": 0, "tax_amount": 0, "total": 50000, "amount_paid": 0, "amount_due": 50000, "payment_type": "full", "is_recurring": false, "recurring_interval": null, "next_invoice_date": null, "recurring_parent": null, "notes": null, "terms": null, "footer": null, "accept": null, "sent_at": "2026-09-16T10:15:37+00:00", "paid_at": null, "cancelled_at": null, "items": [ { "id": "9d3f6a2e-4b1c-4e8a-9f27-6c5d8b1a0e43", "name": "Website design", "description": null, "quantity": 1, "unit": null, "unit_price": 50000, "tax_rate": 0, "tax_amount": 0, "discount_type": null, "discount_value": 0, "discount_amount": 0, "subtotal": 50000, "total": 50000, "sort_order": 0 } ], "created_at": "2026-09-16T09:12:04+00:00", "updated_at": "2026-09-16T10:15:37+00:00" } ], "meta": { "current_page": 1, "last_page": 1, "per_page": 25, "total": 1, "next_cursor": null, "has_more": false }}Invoices