Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET | /invoices | List invoices |
GET | /invoices/:id | Get invoice |
POST | /invoices | Create invoice |
PUT | /invoices/:id | Update invoice |
POST | /invoices/:id/send | Send invoice |
POST | /invoices/:id/void | Void invoice |
List Invoices
Query Parameters
| Parameter | Type | Description |
|---|---|---|
page | number | Page number (default: 1) |
limit | number | Items per page (default: 20, max: 100) |
status | string | Filter by status: draft, sent, viewed, paid, overdue, void |
clientId | string | Filter by client ID |
search | string | Search invoice number or client name |
Response
Get Invoice
Response
Create Invoice
Request Body
Fields
| Field | Type | Required | Description |
|---|---|---|---|
clientId | string | Yes | Client ID |
currency | string | Yes | HTG or USD |
dueDate | string | Yes | Due date (YYYY-MM-DD) |
lineItems | array | Yes | At least one line item |
lineItems[].description | string | Yes | Item description |
lineItems[].quantity | number | Yes | Quantity |
lineItems[].unitPrice | number | Yes | Price per unit |
memo | string | No | Note for customer |
sendImmediately | boolean | No | Send after creation (default: false) |
Response
Returns the created invoice (same format as Get Invoice).Update Invoice
Request Body
Send Invoice
Request Body
Fields
| Field | Type | Required | Description |
|---|---|---|---|
channels | array | No | email, sms, or both (default: both if available) |
Response
Void Invoice
Request Body
Response
Errors
| Status | Code | Description |
|---|---|---|
| 400 | invalid_client | Client ID not found |
| 400 | invalid_line_items | Line items validation failed |
| 400 | cannot_update | Invoice not in draft status |
| 400 | cannot_void | Invoice already paid |
| 404 | not_found | Invoice not found |
Webhooks
Subscribe to invoice events:invoice.createdinvoice.sentinvoice.viewedinvoice.paidinvoice.overdueinvoice.voided