Skip to main content

FIRS E-Invoice API Documentation

The Wragby NRS API acts as a secure proxy between your application and the FIRS Electronic Invoice Validation and Compliance (EIVC) platform. It exposes endpoints for invoice validation, signing, IRN lookup, invoice transmission, VAT/NRS reporting, and reference data retrieval.

Overview

Base URL

https://nrsmockapi.azurewebsites.net

Authentication

No authentication headers are required from API consumers. The Wragby NRS API server injects the required upstream x-api-key and x-api-secret credentials when communicating with the FIRS platform.

Response format

Successful requests return:

{
"message": "Request completed successfully.",
"data": {}
}

Errors return:

{
"code": 400,
"message": "error has occurred",
"error": {
"id": "bec38e04-7558-4fa2-a1b3-d96e554f433f",
"handler": "invoice_actions",
"details": "invoicerequest.invoice.taxcurrencycode is required",
"public_message": "validation failed: unable to process your request"
}
}
CodeMeaning
200Request processed successfully.
400Missing required fields or invalid values.
401Server-side upstream credentials are invalid.
404Requested IRN or resource was not found.
422FIRS business-rule validation failed or invoice state is invalid.
500Unexpected server-side error.
503FIRS platform could not be reached.
504Upstream request timed out.

Quickstart

Validate an invoice, sign the same payload, then transmit or confirm by IRN.

curl https://nrsmockapi.azurewebsites.net/validate-invoice \
-H "Content-Type: application/json" \
-d '{
"business_id": "fd1267b0-8f0d-4809-bb1f-e99fe0025c43",
"irn": "TOSV00180-56F38F0D-20260205",
"issue_date": "2026-02-05",
"invoice_type_code": "381",
"document_currency_code": "NGN",
"tax_currency_code": "NGN",
"accounting_supplier_party": {
"party_name": "Sample Supplier",
"tin": "71687109-1946",
"email": "supplier@example.com",
"postal_address": {
"street_name": "21A Example Street",
"city_name": "Lagos",
"postal_zone": "100001",
"country": "NG"
}
},
"legal_monetary_total": {
"line_extension_amount": 817.10,
"tax_exclusive_amount": 817.10,
"tax_inclusive_amount": 878.38,
"payable_amount": 878.38
},
"invoice_line": [],
"tax_total": []
}'

Validate Invoice

POST/validate-invoice

Validates an invoice against FIRS EIVC platform rules before signing.

Required fields

FieldTypeDescription
business_idstringUnique business identifier registered on the FIRS platform.
irnstringInvoice Reference Number, for example TOSV00180-56F38F0D-20260205.
issue_datestringInvoice issue date in YYYY-MM-DD format.
invoice_type_codestringUBL invoice type code, for example 381 or 396.
document_currency_codestringISO 4217 document currency code, for example NGN.
tax_currency_codestringISO 4217 tax currency code.
accounting_supplier_partyPartySeller or supplier object.
legal_monetary_totalLegalMonetaryTotalInvoice monetary totals.
invoice_lineInvoiceLine[]One or more invoice line items.
tax_totalTaxTotal[]Tax total breakdown with subtotals.

Optional fields

due_date, issue_time, payment_status, note, tax_point_date, accounting_cost, buyer_reference, order_reference, invoice_delivery_period, billing_reference, dispatch_document_reference, receipt_document_reference, originator_document_reference, contract_document_reference, _document_reference, accounting_customer_party, payee_party, tax_representative_party, actual_delivery_date, payment_means, payment_terms_note, and allowance_charge.

Example response

{
"message": "Request completed successfully.",
"data": {
"ok": true
}
}

Sign Invoice

POST/sign-invoice

Submits an invoice to the FIRS platform for cryptographic signing and official registration. The signed invoice receives a QR code and digital signature that can be used for compliance verification.

Use the same invoice payload structure documented under Validate Invoice.

{
"message": "Request completed successfully.",
"data": {
"irn": "TOSV00180-56F38F0D-20260205",
"signed": true
}
}

Transmit Invoice

POST/transmit-invoice/{irn}

Transmits a signed invoice to the recipient through the FIRS platform. The IRN must already be signed before transmission.

ParameterTypeRequiredDescription
irnstringYesInvoice Reference Number.

Pull Invoice

GET/transmit/pull

Returns a paginated list of invoices that have been transmitted to the customer or receiving party.

Query parameterTypeRequiredDescription
pageintegerNoPage number to retrieve. Defaults to 1.
sizeintegerNoNumber of items per page. Defaults to 10.
{
"message": "Request completed successfully.",
"data": {
"items": [
{
"irn": "TOSV00180-56F38F0D-20260205",
"pushed_at": "2026-04-08T01:48:57.812317Z",
"confirmed_at": "2026-04-08T01:55:46.409796Z"
}
],
"page": {
"page": 1,
"size": 10,
"hasNextPage": false,
"hasPreviousPage": false,
"totalCount": 5
},
"attributes": null
}
}

Confirm Receipt

PATCH/confirm-receipt/{irn}

Confirms receipt of a transmitted invoice on the FIRS platform. This acknowledges to the sender that the invoice has been received.

Confirm Invoice

GET/confirm-invoice/{irn}

Confirms an invoice by IRN and returns status and compliance metadata.

{
"message": "Request completed successfully.",
"data": {
"issue_date": "2026-02-05",
"due_date": "",
"sync_date": "2026-04-08",
"payment_status": "PENDING",
"entry_status": "TRANSMITTED",
"transmitted": true,
"delivered": true
}
}

Report E-Invoice

POST/report-einvoice

Reports invoices to the NRS e-invoice team for financial actions and forwards payment data to the NRS VAT post-payment endpoint.

FieldTypeDescription
agent_tinstringAccounting supplier party TIN.
base_amountstringAmount to be taxed.
beneficiary_tinstringAccounting buyer party TIN.
currencystringDocument currency code, for example NGN.
item_descriptionstringInvoice line item description.
irnstringInvoice Reference Number.
other_taxesstringSum of tax amounts outside VAT.
total_amountstringPayable amount.
transaction_datestringIssue date in YYYY-MM-DD format.
vat_calculatedstringVAT tax amount.
integrator_service_idstringService ID of the Access Point Provider.
vat_ratestringVAT percentage, for example 7.5.
vat_statusstringVAT category, for example STANDARD_VAT.

Reference Data

Get Countries

GET/get-countries

Returns the list of countries supported by FIRS EIVC. Use returned alpha_2 values in postal address country fields.

Get Product Codes

GET/get-product-codes

Returns Harmonized System product codes recognised by FIRS. Use hscode values in invoice line item hsn_code.

Get Product Services

GET/get-product-services

Returns service codes supported by FIRS. Use these for service-based invoice line items.

Get Tax Categories

GET/get-tax-categories

Returns tax categories defined on the FIRS platform. Use code values in tax_category.id.

Object Reference

Party

FieldTypeRequiredDescription
party_namestringYesLegal name of the party.
tinstringYesTax Identification Number.
emailstringYesContact email address.
postal_addressAddressYesPhysical address.
telephonestringNoContact phone number.
business_descriptionstringNoBrief description of business activities.

Address

FieldTypeRequiredDescription
street_namestringYesStreet name and number.
city_namestringYesCity or locality name.
postal_zonestringYesPostal or ZIP code.
countrystringYesISO 3166-1 alpha-2 country code, for example NG.

LegalMonetaryTotal

FieldTypeRequiredDescription
line_extension_amountnumberYesSum of invoice line extension amounts before tax.
tax_exclusive_amountnumberYesAmount excluding tax.
tax_inclusive_amountnumberYesAmount including tax.
payable_amountnumberYesFinal amount payable.

InvoiceLine

FieldTypeRequiredDescription
hsn_codestringYesProduct or service code.
product_categorystringYesProduct or service category description.
invoiced_quantitynumberYesQuantity invoiced.
line_extension_amountnumberYesLine total before tax.
itemItemYesItem name and description.
pricePriceYesPrice amount, base quantity, and price unit.

TaxTotal

FieldTypeRequiredDescription
tax_amountnumberYesTotal tax amount.
tax_subtotalTaxSubtotal[]YesTax breakdown by category.