Transmit e-invoices to NRS with a single API call.
Doftwerks is a midpoint Access Point gateway. Integrate once, send your invoices in our schema, and we sign, report and transmit them to Nigeria's National Revenue Service and your customers.
One integration
Send our schema. We map and route to the recipient Access Point Provider.
Secure by default
Per-environment client credentials, hashed and scoped to your account.
Clear results
A unified response with a code, message and receipt status every time.
Overview
How it works
You authenticate with a client id and secret, POST an invoice in the NRS schema below, and receive a unified response telling you exactly what happened — including the IRN, qr code and receipt status.
- 1
Get credentials
Register, get approved, then generate sandbox & production keys from your dashboard.
- 2
Send the invoice
POST your invoice JSON to the transmit endpoint with your headers.
- 3
Read the result
Use the code and receipt_status to confirm reporting & transmission.
Before you start
NRS resources
Before you can transmit an e-invoice, several fields in the payload must carry official codes issued by NRS/FIRS — not free text. NRS publishes these as reference (lookup) resources that you fetch from their API, persist in your own system, and use to map your invoice data onto our payload.
| Resource | Used to fill |
|---|---|
| Invoice type | invoice_type_code (e.g. 381, 380, 384) |
| Payment means | payment method / settlement codes |
| Tax categories | tax_total[].tax_subtotal[].tax_category.id and invoice_line[].tax_category.id (e.g. STANDARD_VAT) |
| Currencies | document_currency_code, tax_currency_code (e.g. NGN) |
| Invoice Quantity Codes | invoice_line[].price.price_unit (e.g. EA) |
| Products Codes | invoice_line[].hsn_code + product_category (goods lines) |
| Service Codes | invoice_line[].isic_code + service_category (service lines) |
| Local governments | postal_address.lga (e.g. NG-AB-ANO) |
| State codes | postal_address.state (e.g. NG-LA) |
| Countries | postal_address.country (e.g. NG) |
Retrieve once, persist, and map. Each integrating system should pull these resources from the NRS API and store them (refreshing periodically). You then use them to translate your own data into valid codes — the correct state, lga and country for a postal address; the price_unit for a line quantity; the hsn_code / product_category for a goods line, or the isic_code / service_category for a service line; and the right tax_category. A value that isn't in these lists fails validation.
Browse the NRS resource endpointsSecurity
Authentication
Every request is authenticated with a client id / secret pair issued per environment. Your account must be approved before credentials can be generated, and the secret is shown only once — store it securely on your server.
Sandbox
cli_test_…
Safe to experiment — nothing is reported to FIRS.
Production
cli_live_…
Live transmission to the National Revenue Service.
Request
Request headers
Send the following headers with every request. Missing or malformed headers return a specific error code (see below).
| Header | Example | Description |
|---|---|---|
| Accept required | application/json | Tells the gateway to return a JSON response. |
| Content-Type required | application/json | The request body is JSON. A different value returns code 20. |
| x-client-id required | cli_live_xxxxxxxxxxxx | Your public client identifier. Generate it from your dashboard (sandbox or production). |
| x-client-secret required | •••••••••••••••• | Your secret key. Keep it server-side; never expose it in browsers or mobile apps. |
Reference
Base URL
Every e-invoice endpoint shares one base URL. Append the endpoint path — for example /transmit — to build the full URL.
Reference
Transmit endpoint
Send a POST request to the transmit endpoint (base URL + /transmit). Pick your language below to see a ready-to-use example.
curl -X POST https://einvoice.doftwerks.com/api/v1/einvoice/transmit \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "x-client-id: cli_live_xxxxxxxxxxxx" \
-H "x-client-secret: ••••••••••••••••" \
-H "x-invoice-format: nrs" \
-d @invoice.jsonRequest
Transmit payload
The complete NRS invoice schema. Send this object as the raw JSON body. Every field is explained in the field reference below.
{
"business_id": "2f6e9e21-5441-4f05-8889-aacd116f3fc1",
"invoice_number": "INV202600001",
"irn": "INV202600001-68415441-20260101",
"payment_status": "PENDING",
"invoice_kind": "B2B",
"issue_date": "2026-01-01",
"issue_time": "00:00:00",
"due_date": "2026-01-31",
"invoice_type_code": "381",
"tax_point_date": "2026-01-31",
"document_currency_code": "NGN",
"tax_currency_code": "NGN",
"accounting_supplier_party": {
"party_name": "John & sons",
"tin": "57161140-8935",
"email": "[email protected]",
"telephone": "+2349122944976",
"business_description": "Technology Firm",
"postal_address": {
"street_name": "8000 Marina Blvd, Suite 300",
"city_name": "Victoria Island",
"postal_zone": "100323",
"lga": "NG-AB-EOS",
"state": "NG-LA",
"country": "NG"
}
},
"accounting_customer_party": {
"party_name": "Colleen Diaz Plc",
"tin": "22701248-8449",
"email": "[email protected]",
"telephone": "+2349122944976",
"business_description": "Professional Services",
"postal_address": {
"street_name": "4557 De Silva St",
"city_name": "Fremont",
"postal_zone": "100538",
"lga": "NG-AB-ANO",
"state": "NG-AB",
"country": "NG"
}
},
"payment_terms_note": "Net 30 days (30 days after the issue date)",
"tax_total": [
{
"tax_amount": 46125,
"tax_subtotal": [
{
"taxable_amount": 615000,
"tax_amount": 46125,
"tax_category": {
"id": "STANDARD_VAT",
"percent": 7.5
}
}
]
}
],
"legal_monetary_total": {
"line_extension_amount": 640000,
"tax_exclusive_amount": 615000,
"tax_inclusive_amount": 661125,
"payable_amount": 661125
},
"invoice_line": [
{
"invoiced_quantity": 1,
"line_extension_amount": 140000,
"item": {
"name": "[E-COM11] Cabinet with Doors",
"description": "[E-COM11] Cabinet with Doors",
"sellers_item_identification": "E-COM11"
},
"price": {
"price_amount": 140000,
"base_quantity": 1,
"price_unit": "EA"
},
"tax_category": [
{
"id": "STANDARD_VAT",
"percent": 7.5
}
],
"hsn_code": "7203.10",
"product_category": "Ferrous products; obtained by direct reduction of iron ore, in lumps, pellets or similar forms",
"isic_code": "",
"service_category": "",
"discount_rate": 0,
"discount_amount": 0,
"fee_rate": 0,
"fee_amount": 0
},
{
"invoiced_quantity": 100,
"line_extension_amount": 5000,
"item": {
"name": "Steel Pipes",
"description": "Hot water steel pipes for homes",
"sellers_item_identification": "687194817958-2"
},
"price": {
"price_amount": 5000,
"base_quantity": 1,
"price_unit": "EA"
},
"tax_category": [
{
"id": "STANDARD_VAT",
"percent": 7.5
}
],
"hsn_code": "7203.10",
"product_category": "Ferrous products; obtained by direct reduction of iron ore, in lumps, pellets or similar forms",
"isic_code": "",
"service_category": "",
"discount_rate": 5,
"discount_amount": 25000,
"fee_rate": 0,
"fee_amount": 0
}
],
"billing_reference": [
{
"irn": "INV202500031-68415441-20251231",
"issue_date": "2025-12-31"
},
{
"irn": "INV202500030-68415441-20251230",
"issue_date": "2025-12-30"
}
]
}Reference
Transmit field reference
What every line in the payload means. The whole payload — including the nested party, line, tax and total objects — is validated up front, so a request with problems is rejected with a single 422 that lists every field to fix, before anything reaches the Access Point. Required fields are marked below.
Invoice header
rootTop-level fields that describe the invoice document.
| Field | Type | Description |
|---|---|---|
| business_idrequired | uuid | Your NRS business identifier issued to the supplier entity. |
| invoice_numberrequired | string | Your invoice ID — the human-readable invoice number from your own system (e.g. INV202500015). Required on every request; an omitted invoice_number is rejected with code 90 (Invoice number not provided). |
| irnrequired | string | Invoice Reference Number — a unique identifier you generate per invoice. Missing IRN returns code 99. |
| payment_status | string | Settlement state of the invoice: PAID or PENDING. Initial invoice payment status cannot be PARTIAL or REJECTED |
| invoice_kindrequired | string | Transaction type — B2B, B2C or B2G. |
| issue_daterequired | date | Date the invoice was issued (YYYY-MM-DD). |
| issue_time | time | Time the invoice was issued (HH:MM:SS). |
| due_date | date | Date payment is due (YYYY-MM-DD) |
| invoice_type_coderequired | string | UBL invoice type code — 381 (commercial), 380 (credit note), 384 (debit note). |
| tax_point_date | date | Date used to determine the applicable VAT period (YYYY-MM-DD). |
| document_currency_coderequired | ISO 4217 | Currency the invoice is denominated in, e.g. NGN, USD. |
| tax_currency_coderequired | ISO 4217 | Currency in which tax amounts are reported. |
| payment_terms_note | string | Human-readable payment terms. |
Supplier party
accounting_supplier_partyThe seller issuing the invoice — this is your company (the registered tenant).
| Field | Type | Description |
|---|---|---|
| party_namerequired | string | Registered/legal name of the supplier. |
| tinrequired | string | Supplier Tax Identification Number. |
| emailrequired | Supplier contact email. | |
| telephone | string | Supplier phone (with country code, e.g. +234…). |
| business_description | string | Short description of the supplier business. Must be at least in length of 5 |
| postal_addressrequired | object | Supplier postal address (see Postal address below). |
Customer party
accounting_customer_party (Conditional)The buyer receiving the invoice. It is optional for B2C but required for B2B and B2G.
| Field | Type | Description |
|---|---|---|
| party_namerequired | string | Name of the customer/buyer. |
| tinrequired | string | Customer TIN (required for B2B / B2G). |
| emailrequired | Customer contact email. | |
| telephone | string | Customer phone number. |
| business_description | string | Short description of the customer. Must be at least in length of 5 |
| postal_addressrequired | object | Customer postal address (see Postal address below). |
Postal address
postal_addressShared address shape used by both supplier and customer parties.
| Field | Type | Description |
|---|---|---|
| street_namerequired | string | Street line of the address. |
| city_namerequired | string | City / town. |
| postal_zonerequired | string | Postal / ZIP code. |
| lgarequired | code | FIRS LGA code, e.g. NG-AB-ANO. |
| staterequired | code | FIRS state code, e.g. NG-AB. |
| countryrequired | ISO 3166-1 α2 | Two-letter country code, e.g. NG. |
Tax total
tax_total[]Array of tax groupings. Each entry carries a total tax amount and a breakdown by category.
| Field | Type | Description |
|---|---|---|
| tax_amountrequired | number | Total tax for this grouping. |
| tax_subtotal[].taxable_amountrequired | number | Net amount the tax is calculated on. |
| tax_subtotal[].tax_amountrequired | number | Tax charged on the taxable amount. |
| tax_subtotal[].tax_category.idrequired | string | Tax category — STANDARD_VAT, ZERO_VAT or EXEMPT. |
| tax_subtotal[].tax_category.percentrequired | number | Applied VAT rate, e.g. 7.5. |
Legal monetary total
legal_monetary_totalDocument-level monetary totals. These must reconcile with the invoice lines.
| Field | Type | Description |
|---|---|---|
| line_extension_amountrequired | number | Sum of all line net amounts. |
| tax_exclusive_amountrequired | number | Total before tax. |
| tax_inclusive_amountrequired | number | Total including tax. |
| payable_amountrequired | number | Final amount payable by the customer. |
Invoice lines
invoice_line[]One entry per line item on the invoice.
| Field | Type | Description |
|---|---|---|
| invoiced_quantityrequired | number | Quantity of the item sold. |
| line_extension_amountrequired | number | Net amount for the line (quantity × price − discounts). |
| item.namerequired | string | Product / service name. |
| item.descriptionrequired | string | Longer description of the item. |
| item.sellers_item_identificationrequired | string | Your internal SKU / item code. |
| price.price_amountrequired | number | Unit price. |
| price.base_quantityrequired | number | Quantity the unit price refers to (default 1). |
| price.price_unitrequired | code | NRS Invoice Quantity (unit of measure) code, e.g. "EA" for each. Fetch valid codes from the NRS resources (see the NRS resources section). |
| tax_category.idrequired | string | Tax category for the line. |
| tax_category.percentrequired | number | VAT rate for the line. |
| hsn_codeconditional | string | HS/product code — required for a GOODS line (paired with product_category). A service line sends this empty and uses isic_code instead. |
| isic_codeconditional | string | ISIC service code — required for a SERVICE line (paired with service_category). A goods line sends this empty. |
| product_categoryconditional | string | Product classification — required for a GOODS line, alongside hsn_code. |
| service_categoryconditional | string | Service classification — required for a SERVICE line, alongside isic_code. A non-empty value marks the line as a service. |
| discount_raterequired | number | Discount rate applied to the line. Set to zero 0 if not applicable |
| discount_amountrequired | number | Discount amount applied to the line. Set to zero 0 if not applicable |
| fee_raterequired | number | Additional fee rate. Set to zero 0 if not applicable |
| fee_amountrequired | number | Additional fee amount. Set to zero 0 if not applicable |
Billing reference
billing_reference[] (Optional)Optional. Required only when invoice_type_code is "380" (Credit Note) — it links this document to the original invoice(s) being corrected. Provide one entry per referenced invoice.
| Field | Type | Description |
|---|---|---|
| irnrequired | string | IRN of the original invoice this credit note references. |
| issue_daterequired | date | Issue date of that original invoice (YYYY-MM-DD). |
Response
Transmit responses
Every response shares the same envelope — a numeric code, a status, a human-readable message, your transmission reference, and a data object.
{
"code": 0,
"status": "success",
"message": "Invoice successfully transmitted",
"reference": "019e83c7-f554-72dd-a671-a1fcad002b4d",
"data": {
"irn": "INV202600001-68415441-20260101",
"qr_code": "iVBORw0KGgoAAAANSUhEUgAA…",
"receipt_status": 4,
"is_duplicate": false
}
}{
"code": 99,
"status": "error",
"message": "The irn (Invoice Reference Number) field is required.",
"reference": null,
"data": {
"errors": {
"irn": [
"The irn field is required."
]
}
}
}{
"code": 40,
"status": "error",
"message": "A goods line needs an hsn_code (HS/product code). A goods line needs a product_category. The accounting_customer_party.tin field is required.",
"reference": null,
"data": {
"errors": {
"invoice_line.0.hsn_code": [
"A goods line needs an hsn_code (HS/product code)."
],
"invoice_line.0.product_category": [
"A goods line needs a product_category."
],
"accounting_customer_party.tin": [
"The accounting_customer_party.tin field is required."
]
}
}
}Reference
Error codes
The code field tells you precisely what happened. Always branch on code, not the HTTP status alone.
| Code | HTTP | Meaning |
|---|---|---|
| 0 | 200 | Success The invoice was accepted and forwarded to the Access Point. Inspect data.receipt_status for the downstream stage. |
| 10 | 401 | Missing credentials The x-client-id and/or x-client-secret header was not provided. |
| 11 | 401 | Invalid credentials The client id/secret pair did not match an active client, or the client is disabled. |
| 12 | 401 | Account not approved Your company account is pending, suspended or rejected. Transmission is blocked until an administrator approves it. |
| 13 | 401 | Account not found No company account is linked to these credentials. |
| 14 | 401 | Crypto keys not found NRS public key and certificate not setup for this account. |
| 15 | 403 | Production disabled Production API access is disabled for this account because production billing has not been activated. |
| 16 | 429 | Too many requests You have exceeded the per-minute request limit for this endpoint. Wait the number of seconds in data.retry_after (and the Retry-After header) before retrying. |
| 17 | 401 | Business and Service ID maybe missing NRS Business ID and Service ID may not have been provided for this account. |
| 18 | 401 | Business ID mismatch Business ID in request payload not the same as the provided resolved client business id. |
| 19 | 401 | Tax ID mismatch Tax ID in request payload not the same as the provided resolved client TIN. |
| 20 | 415 | Unsupported content type The Content-Type header must be application/json. |
| 21 | 400 | Empty body No request body was sent. |
| 22 | 400 | Invalid JSON The request body could not be parsed as JSON. |
| 23 | 404 | IRN record not found The provided IRN record not found, please transmit. |
| 24 | 401 | Service ID mismatch IRN is badly formed. Service ID in iRN format is not the same as the provided resolved client service id. |
| 25 | 400 | Update invoice status failed Update invoice status failed on NRS server |
| 26 | 404 | APP not set on NRS portal We are not set as your Access Point Provider on the NRS portal, update your APP and retry. |
| 27 | 404 | E-invoicing not enabled on NRS portal Please confirm your NRS e-invoicing is enabled, and that we are set as your Access Point Provider on the NRS portal. |
| 28 | 422 | Acknowledge transmission failed Acknowledge Transmission failed, try again or contact APP support. |
| 30 | 422 | Invalid format header The x-invoice-format header must be "nrs". |
| 40 | 422 | Validation failed One or more required fields are missing or invalid. See data.errors for the exact fields. |
| 50 | 422 | Rejected by Access Point The downstream Access Point (e.g. FIRS) rejected the invoice. See data for the provider message. |
| 51 | 502 | Transmission failed An unexpected error occurred while forwarding the invoice to the Access Point. |
| 52 | 504 | Access Point unreachable The downstream Access Point did not respond in time. |
| 53 | 501 | Network connection error We are unable to reach the NRS network at this time. Try again later. If the problem persists, contact support. |
| 54 | 500 | Provider not configured Your account has not been configured with Access Point credentials. Contact support. |
| 55 | 501 | Network connection error Our network is currently down due to maintenance or technical issues. Try again later. If the problem persists, contact support. |
| 56 | 200 | Signed but not transmitted (APP Error) Invoice is Signed but could not transmit. Accounting parties APP might be offline or busy, Try again later. If the problem persists, contact support. |
| 90 | 422 | Invoice number not provided The required invoice number field is missing from the payload. |
| 91 | 422 | IRN not provided The required irn (Invoice Reference Number) field is missing from the payload. |
| 92 | 400 | Invalid IRN format The provided irn format is invalid. Check the irn format in the documentation. |
| 93 | 422 | Irn confirmation failed The irn confirmation failed, try again or check irn format. |
| 94 | 400 | Invalid business ID The provided business ID format is invalid. Check the business ID format in the documentation. |
| 95 | 422 | Invoice signing failed The invoice signing failed, might be due to a duplicate signing, try again or contact APP support. |
| 96 | 422 | Invoice transmission failed The invoice transmission failed, might be due to a duplicate request or network issues, try again or contact support. |
Reference
Receipt statuses
On success, data.receipt_status reports how far the invoice has progressed through the Access Point pipeline.
Initiated
Invoice transmission initiated, not yet signed or transmitted.
Signed
Invoice signed, but not yet transmitted to NRS.
Transmitting
Invoice is been transmitted, waiting for confirmation.
Transmitted
Invoice transmitted to NRS successfully.
Reference
Update payment status
After an invoice is transmitted you can update its recorded settlement status — for example when a pending invoice is paid. The IRN goes in the URL; send the new status in the body. When you mark it partial, also include the amount paid.
curl -X PATCH https://einvoice.doftwerks.com/api/v1/einvoice/update-status/{irn} \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "x-client-id: cli_live_xxxxxxxxxxxx" \
-H "x-client-secret: ••••••••••••••••" \
-d '{ "payment_status": "PAID" }'| Field | Type | Description |
|---|---|---|
| payment_statusrequired | string | New settlement state of the invoice: pending, partial, paid, or rejected (case-insensitive). |
| amount | number | Amount paid. Optional in general, but required when payment_status is partial — it records how much of the invoice has been settled. |
| reason | string | Optional note explaining the change (e.g. why an invoice was rejected). |
{
"payment_status": "PAID"
}{
"code": 0,
"status": "success",
"message": "Invoice status updated successfully",
"reference": "019e83c7-f554-72dd-a671-a1fcad002b4d",
"data": {
"irn": "INV202600001-68415441-20260101",
"payment_status": "paid",
"transmit_status": "transmitted"
}
}Reference
Report VAT (post-payment)
Report an invoice to NRS for financial (VAT) actions after a payment is received — partial or full. The supplier TIN (agent_tin) and our Access Point service id (integrator_service_id) are added automatically, so you don't send them.
curl -X POST https://einvoice.doftwerks.com/api/v1/einvoice/report \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "x-client-id: cli_live_xxxxxxxxxxxx" \
-H "x-client-secret: ••••••••••••••••" \
-d @report.json| Field | Type | Description |
|---|---|---|
| irnrequired | string | Invoice Reference Number of the transmitted invoice being reported. |
| beneficiary_tinrequired | string | Accounting Buyer Party TIN (the customer). |
| currencyrequired | ISO 4217 | Document currency code, e.g. NGN. |
| transaction_daterequired | date | Invoice issue date (YYYY-MM-DD). |
| base_amountrequired | string | Line extension amount — the amount to be taxed. |
| total_amountrequired | string | Payable amount — the amount to be collected. |
| vat_calculatedrequired | string | Tax amount for the tax category (STANDARD_VAT, ZERO_VAT or REDUCED_VAT). |
| vat_raterequired | string | Percentage attached to the tax category, e.g. 7.5. |
| vat_statusrequired | string | The VAT tax category ID, e.g. STANDARD_VAT. |
| other_taxes | string | Sum of non-VAT tax amounts. |
| item_description | string | Item description within the invoice line. |
{
"irn": "INV001-E9E0C0D3-20240619",
"beneficiary_tin": "29334238-0001",
"currency": "NGN",
"transaction_date": "2024-11-18",
"base_amount": "100000",
"total_amount": "112500",
"vat_calculated": "7500",
"vat_rate": "7.5",
"vat_status": "STANDARD_VAT",
"other_taxes": "5000",
"item_description": "Items"
}{
"code": 0,
"status": "success",
"message": "VAT reported successfully",
"reference": "INV001-E9E0C0D3-20240619",
"data": {
"ok": true,
"irn": "INV3030-09012ED1ES-20250912"
}
}Reference
Acknowledge a transmission
Acknowledging is you confirming that you have received a transmitted invoice. When you call this, we tell NRS that the received transmission has been received and acknowledged on your behalf. The IRN of the invoice goes in the URL — there is no request body.
You can turn on Auto-acknowledge in the portal (Settings → Auto-acknowledge) and we will acknowledge every transmitted invoice for you automatically. Leave it off to acknowledge yourself by calling this endpoint each time you receive a transmitted-invoice webhook.
curl -X POST https://einvoice.doftwerks.com/api/v1/einvoice/acknowledge/{irn} \
-H "Accept: application/json" \
-H "x-client-id: cli_live_xxxxxxxxxxxx" \
-H "x-client-secret: ••••••••••••••••"{
"code": 0,
"status": "success",
"message": "Transmission acknowledged successfully",
"reference": "INV202600003-4D9B5ECF-20260101",
"data": []
}Reference
Webhooks
Every business must provide a webhook URL that accepts POST requests. Whenever a transmitted invoice changes status, we POST a JSON event to that URL so your systems stay in sync without polling.
Respond with 200
Your endpoint must return an HTTP 200 success code to acknowledge receipt. Anything else is treated as a failed delivery and may be retried.
No body or query params
We don't read the response body and never send query parameters — only the JSON payload below in the request body and the 200 status code matter.
You configure your webhook URL from your portal Settings — separately for the sandbox and production environments. Here is a sample of the event we send:
{
"eventType": "TransmissionStatusEvent",
"irn": "INV202500015-4D9B5ECF-20251230",
"tenant": "abc-cde-fgh-ijk",
"status": "Transmitting",
"environment": "sandbox",
"timestamp": "2026-06-22T08:57:40+00:00",
"invoice": {
"irn": "INV202500015-4D9B5ECF-20251230",
"due_date": "2026-01-31",
"tax_total": [
{
"tax_amount": 10.5,
"tax_subtotal": [
{
"tax_amount": 10.5,
"tax_category": {
"id": "STANDARD_VAT",
"percent": 7.5
},
"taxable_amount": 140
}
]
}
],
"issue_date": "2025-12-30",
"issue_time": "00:00:00",
"business_id": "cb02f028-5ecf-4107-9c40-c1c6b6e64000",
"invoice_kind": "B2B",
"invoice_line": [
{
"item": {
"name": "[E-COM11] Cabinet with Doors",
"description": "[E-COM11] Cabinet with Doors",
"sellers_item_identification": "E-COM11"
},
"price": {
"price_unit": "EA",
"price_amount": 140,
"base_quantity": 1
},
"fee_rate": 0,
"hsn_code": "0101.30",
"isic_code": null,
"fee_amount": 0,
"discount_rate": 0,
"discount_amount": 0,
"product_category": "Office",
"service_category": null,
"invoiced_quantity": 1,
"line_extension_amount": 140,
"tax_category": [
{
"id": "STANDARD_VAT",
"percent": 7.5
}
]
}
],
"payment_status": "PENDING",
"tax_point_date": "2025-12-30",
"invoice_type_code": "381",
"tax_currency_code": "NGN",
"payment_terms_note": "End of Following Month",
"legal_monetary_total": {
"payable_amount": 150.5,
"tax_exclusive_amount": 140,
"tax_inclusive_amount": 150.5,
"line_extension_amount": 140
},
"document_currency_code": "NGN",
"accounting_customer_party": {
"tin": "68452114-4234",
"email": "[email protected]",
"telephone": "+2555958393",
"party_name": "Colleen Diaz",
"postal_address": {
"lga": "NG-AB-ANO",
"state": "NG-AB",
"country": "NG",
"city_name": "Fremont",
"postal_zone": "94538",
"street_name": "4557 De Silva St"
},
"business_description": "This is a sample info"
},
"accounting_supplier_party": {
"tin": "18221471-0001",
"email": "[email protected]",
"telephone": "+2349122944976",
"party_name": "John & sons",
"postal_address": {
"lga": "NG-AB-ANO",
"state": "NG-AB",
"country": "NG",
"city_name": "Island",
"postal_zone": "100323",
"street_name": "8000 Marina Blvd, Suite 300"
},
"business_description": "Here is a simple test"
}
}
}Ready to transmit your first invoice?
Create an account, get approved, and generate sandbox credentials in minutes.