Earnipay E-Invoice
FIRS-compliant e-invoicing platform API for Nigeria
Build FIRS-compliant e-invoicing integrations for Nigeria with the Earnipay API. Create invoices, submit them to FIRS via Access Point Providers (APPs), generate IRNs (Invoice Reference Numbers), and manage your full invoicing workflow programmatically.
| Detail | Value |
|---|---|
| Base URL | https://e-invoicing.earnipay.com/v1 |
| API Version | 1.0 |
| Spec Format | OpenAPI 3.0.0 |
| Authentication | JWT Bearer Token or API Key (X-API-Key header) |
Authentication
The Earnipay API supports two authentication methods:
Use JWT authentication for user-facing flows. Call the login endpoint with your credentials to receive an access token, then include it in subsequent requests.
curl -X POST https://e-invoicing.earnipay.com/v1/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "[email protected]",
"password": "your-password"
}'curl https://e-invoicing.earnipay.com/v1/users/me \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..."When the access token expires, call POST /v1/auth/refresh with your refresh token to get a new one.
Invoice Lifecycle
Invoices follow a status-based workflow from creation through FIRS submission:
DRAFT → PENDING_APPROVAL → APPROVED → PENDING → SUBMITTED → FIRS_APPROVED / FIRS_REJECTED / PAID / CANCELLED
| Invoice Type | Description |
|---|---|
STANDARD | Regular tax invoice |
PROFORMA | Pre-sale invoice before goods/services are delivered |
CREDIT_NOTE | Adjustment reducing the amount owed |
DEBIT_NOTE | Adjustment increasing the amount owed |
You can configure automatic approval or require manual approval per business via PATCH /v1/businesses/{id}/settings.
API Modules
Pagination & Filtering
All list endpoints support consistent pagination and sorting parameters:
| Parameter | Type | Description |
|---|---|---|
page | integer | Page number (starts at 1) |
limit | integer | Items per page |
search | string | Search query to filter results |
sortBy | string | Field name to sort by |
sortOrder | string | asc or desc |
Updated 2 days ago