Matt O'Bell NRS System Integrator
NRS E-Invoice API — Create Invoice Request Payload
Prepared by Matt O'Bell Limited • 1 September 2026
1. NRS API Operation
NRS documents the invoice request under Invoice Schema and identifies
POST base_url/api/v1/invoice/validate. The schema is UBL-based and supports JSON and XML.
2. Complete Top-Level Request Schema
| JSON field | Requirement | Description |
|---|---|---|
business_id | Mandatory | Unique business identification number. |
irn | Mandatory | Unique invoice tracking number. |
issue_date | Mandatory | Invoice issue date (YYYY-MM-DD). |
due_date | Optional | Payment due date. |
issue_time | Optional | Issue time (HH:MM:SS). |
invoice_type_code | Mandatory | Invoice type code. |
invoice_kind | Mandatory | Invoice kind, e.g. B2B. |
payment_status | Optional | Invoice payment status. |
note | Optional | Additional invoice note. |
tax_point_date | Optional | Date tax becomes applicable. |
document_currency_code | Mandatory | Invoice currency. |
tax_currency_code | Mandatory | Tax calculation currency. |
accounting_cost | Optional | Accounting cost centre. |
buyer_reference | Optional | Buyer reference. |
invoice_delivery_period | Optional | Start/end delivery period. |
order_reference | Optional | Order reference. |
billing_reference | Optional / repeatable | Previous billing document reference. |
dispatch_document_reference | Optional | Despatch reference. |
receipt_document_reference | Optional | Receipt reference. |
originator_document_reference | Optional | Originator reference. |
contract_document_reference | Optional / repeatable | Contract reference. |
additional_document_reference | Optional | Additional document reference. |
accounting_supplier_party | Mandatory | Seller issuing invoice. |
payee_party | Optional | Payee where different. |
bill_party | Optional | Billing party. |
ship_party | Optional | Shipping party. |
tax_representative_party | Optional | Tax representative. |
actual_delivery_date | Optional | Actual delivery date. |
payment_means | Optional / repeatable | Payment method and due date. |
payment_terms_note | Optional | Payment terms. |
allowance_charge | Optional / repeatable | Discounts/charges. |
tax_total | Mandatory / repeatable | Tax total and subtotals. |
legal_monetary_total | Mandatory | Invoice monetary totals. |
invoice_line | Mandatory / repeatable | Goods/services invoiced. |
3. Complete Create Invoice Request — JSON
Complete illustrative request. Optional structures should only be populated when applicable.
{
"business_id": "f771e1dd-b3ba-4628-83d0-5f3d8a52f890",
"irn": "INV202600002-4894B3BA-20260813",
"issue_date": "2026-08-13",
"due_date": "2026-08-14",
"issue_time": "00:00:00",
"invoice_type_code": "381",
"invoice_kind": "B2B",
"payment_status": "PENDING",
"note": "Odoo Implementation & Configuration",
"tax_point_date": "2026-08-13",
"document_currency_code": "NGN",
"tax_currency_code": "NGN",
"accounting_cost": "2000",
"buyer_reference": "ITW001-E9E0C0D3-20260813",
"invoice_delivery_period": {
"start_date": "2026-08-13",
"end_date": "2026-08-13"
},
"order_reference": "ITW001-E9E0C0D3-20260813",
"billing_reference": [
{
"irn": "ITW001-E9E0C0D3-20260812",
"issue_date": "2026-08-12"
}
],
"dispatch_document_reference": {
"irn": "ITW001-E9E0C0D3-20260812",
"issue_date": "2026-08-12"
},
"receipt_document_reference": {
"irn": "ITW001-E9E0C0D3-20260812",
"issue_date": "2026-08-12"
},
"originator_document_reference": {
"irn": "ITW001-E9E0C0D3-20260812",
"issue_date": "2026-08-12"
},
"contract_document_reference": [
{
"irn": "CTR001-94ND90NR-20260801",
"issue_date": "2026-08-01"
}
],
"additional_document_reference": {
"irn": "DOC001-94ND90NR-20260801",
"issue_date": "2026-08-01"
},
"accounting_supplier_party": {
"party_name": "Mattobell Limited",
"tin": "14530564-0001",
"email": "erp@mattobell.net",
"telephone": "+2347068693119",
"business_description": "Business activity",
"postal_address": {
"street_name": "71 CMD Road",
"city_name": "Magodo",
"postal_zone": "23401",
"country": "NG",
"state": "Lagos State",
"lga": ""
}
},
"accounting_customer_party": {
"party_name": "Example Customer Limited",
"tin": "12345678-0001",
"email": "customer@example.com",
"telephone": "+2348000000000",
"business_description": "Customer business activity",
"postal_address": {
"street_name": "10 Customer Street",
"city_name": "Ikeja",
"postal_zone": "100001",
"country": "NG",
"state": "Lagos State",
"lga": ""
}
},
"payee_party": {
"party_name": "Mattobell Limited",
"tin": "14530564-0001",
"email": "erp@mattobell.net",
"telephone": "+2347068693119",
"business_description": "Business activity",
"postal_address": {
"street_name": "71 CMD Road",
"city_name": "Magodo",
"postal_zone": "23401",
"country": "NG"
}
},
"bill_party": {
"party_name": "Mattobell Limited",
"tin": "14530564-0001",
"email": "erp@mattobell.net",
"telephone": "+2347068693119",
"business_description": "Business activity",
"postal_address": {
"street_name": "71 CMD Road",
"city_name": "Magodo",
"postal_zone": "23401",
"country": "NG"
}
},
"ship_party": {
"party_name": "Mattobell Limited",
"tin": "14530564-0001",
"email": "erp@mattobell.net",
"telephone": "+2347068693119",
"business_description": "Business activity",
"postal_address": {
"street_name": "71 CMD Road",
"city_name": "Magodo",
"postal_zone": "23401",
"country": "NG"
}
},
"tax_representative_party": {
"party_name": "Mattobell Limited",
"tin": "14530564-0001",
"email": "erp@mattobell.net",
"telephone": "+2347068693119",
"business_description": "Tax filings and compliance",
"postal_address": {
"street_name": "71 CMD Road",
"city_name": "Magodo",
"postal_zone": "23401",
"country": "NG"
}
},
"actual_delivery_date": "2026-08-13",
"payment_means": [
{
"payment_means_code": "10",
"payment_due_date": "2026-08-14"
}
],
"payment_terms_note": "Payment due within 30 days of invoice issue.",
"allowance_charge": [
{
"charge_indicator": true,
"discount_rate": 0,
"discount_amount": 0,
"fee_rate": 0,
"fee_amount": 0
}
],
"tax_total": [
{
"tax_amount": 6750.0,
"tax_subtotal": [
{
"taxable_amount": 90000.0,
"tax_amount": 6750.0,
"tax_category": {
"id": "STANDARD_VAT",
"percent": 7.5
}
}
]
}
],
"legal_monetary_total": {
"line_extension_amount": 90000.0,
"tax_exclusive_amount": 90000.0,
"tax_inclusive_amount": 96750.0,
"payable_amount": 96750.0
},
"invoice_line": [
{
"discount_amount": 0.0,
"discount_rate": 0.0,
"fee_amount": 0.0,
"fee_rate": 0.0,
"hsn_code": "",
"invoiced_quantity": 1.0,
"isic_code": "7020",
"item": {
"description": "Odoo Implementation & Configuration",
"name": "Odoo Implementation & Configuration",
"sellers_item_identification": ""
},
"line_extension_amount": 90000.0,
"price": {
"base_quantity": 1,
"price_amount": 90000.0,
"price_unit": "XBG"
},
"product_category": "",
"service_category": "Management consultancy activities"
}
]
}
4. Invoice Line Schema
| Field | Requirement / Applicability | Description |
|---|---|---|
discount_amount | Optional | Line discount amount. |
discount_rate | Optional | Line discount rate. |
fee_amount | Optional | Line fee amount. |
fee_rate | Optional | Line fee rate. |
hsn_code | Goods | NRS HSN/product code. |
invoiced_quantity | Mandatory | Quantity invoiced. |
isic_code | Services | NRS four-digit ISIC code. |
item | Mandatory | Item/service object. |
line_extension_amount | Mandatory | Line amount. |
price | Mandatory | Price object. |
product_category | Goods | NRS product category. |
service_category | Services | NRS service category. |
5. Price Object
{"price_amount":90000.0,"base_quantity":1,"price_unit":"XBG"}
6. Tax and Monetary Totals
TaxTotal contains TaxAmount and TaxSubtotal. LegalMonetaryTotal contains line_extension_amount, tax_exclusive_amount, tax_inclusive_amount and payable_amount.
7. IRN
Invoice Number + Service ID + YYYYMMDD. Mattobell test: INV202600002-4894B3BA-20260813.
8. Test Evidence
Mattobell successfully demonstrated validation HTTP 200 and signing HTTP 201 in Sandbox.
9. Terminology Note
The public NRS documentation uses POST base_url/api/v1/invoice/validate. This documentation does not invent a separate undocumented Create Invoice endpoint.
Matt O'Bell NRS System Integrator
NRS E-Invoice API — Create Invoice Request Payload
Prepared by Matt O'Bell Limited • 1 September 2026
1. NRS API Operation
NRS documents the invoice request under Invoice Schema and identifies
POST base_url/api/v1/invoice/validate. The schema is UBL-based and supports JSON and XML.
2. Complete Top-Level Request Schema
| JSON field | Requirement | Description |
|---|---|---|
business_id | Mandatory | Unique business identification number. |
irn | Mandatory | Unique invoice tracking number. |
issue_date | Mandatory | Invoice issue date (YYYY-MM-DD). |
due_date | Optional | Payment due date. |
issue_time | Optional | Issue time (HH:MM:SS). |
invoice_type_code | Mandatory | Invoice type code. |
invoice_kind | Mandatory | Invoice kind, e.g. B2B. |
payment_status | Optional | Invoice payment status. |
note | Optional | Additional invoice note. |
tax_point_date | Optional | Date tax becomes applicable. |
document_currency_code | Mandatory | Invoice currency. |
tax_currency_code | Mandatory | Tax calculation currency. |
accounting_cost | Optional | Accounting cost centre. |
buyer_reference | Optional | Buyer reference. |
invoice_delivery_period | Optional | Start/end delivery period. |
order_reference | Optional | Order reference. |
billing_reference | Optional / repeatable | Previous billing document reference. |
dispatch_document_reference | Optional | Despatch reference. |
receipt_document_reference | Optional | Receipt reference. |
originator_document_reference | Optional | Originator reference. |
contract_document_reference | Optional / repeatable | Contract reference. |
additional_document_reference | Optional | Additional document reference. |
accounting_supplier_party | Mandatory | Seller issuing invoice. |
payee_party | Optional | Payee where different. |
bill_party | Optional | Billing party. |
ship_party | Optional | Shipping party. |
tax_representative_party | Optional | Tax representative. |
actual_delivery_date | Optional | Actual delivery date. |
payment_means | Optional / repeatable | Payment method and due date. |
payment_terms_note | Optional | Payment terms. |
allowance_charge | Optional / repeatable | Discounts/charges. |
tax_total | Mandatory / repeatable | Tax total and subtotals. |
legal_monetary_total | Mandatory | Invoice monetary totals. |
invoice_line | Mandatory / repeatable | Goods/services invoiced. |
3. Complete Create Invoice Request — JSON
Complete illustrative request. Optional structures should only be populated when applicable.
{
"business_id": "f771e1dd-b3ba-4628-83d0-5f3d8a52f890",
"irn": "INV202600002-4894B3BA-20260813",
"issue_date": "2026-08-13",
"due_date": "2026-08-14",
"issue_time": "00:00:00",
"invoice_type_code": "381",
"invoice_kind": "B2B",
"payment_status": "PENDING",
"note": "Odoo Implementation & Configuration",
"tax_point_date": "2026-08-13",
"document_currency_code": "NGN",
"tax_currency_code": "NGN",
"accounting_cost": "2000",
"buyer_reference": "ITW001-E9E0C0D3-20260813",
"invoice_delivery_period": {
"start_date": "2026-08-13",
"end_date": "2026-08-13"
},
"order_reference": "ITW001-E9E0C0D3-20260813",
"billing_reference": [
{
"irn": "ITW001-E9E0C0D3-20260812",
"issue_date": "2026-08-12"
}
],
"dispatch_document_reference": {
"irn": "ITW001-E9E0C0D3-20260812",
"issue_date": "2026-08-12"
},
"receipt_document_reference": {
"irn": "ITW001-E9E0C0D3-20260812",
"issue_date": "2026-08-12"
},
"originator_document_reference": {
"irn": "ITW001-E9E0C0D3-20260812",
"issue_date": "2026-08-12"
},
"contract_document_reference": [
{
"irn": "CTR001-94ND90NR-20260801",
"issue_date": "2026-08-01"
}
],
"additional_document_reference": {
"irn": "DOC001-94ND90NR-20260801",
"issue_date": "2026-08-01"
},
"accounting_supplier_party": {
"party_name": "Mattobell Limited",
"tin": "14530564-0001",
"email": "erp@mattobell.net",
"telephone": "+2347068693119",
"business_description": "Business activity",
"postal_address": {
"street_name": "71 CMD Road",
"city_name": "Magodo",
"postal_zone": "23401",
"country": "NG",
"state": "Lagos State",
"lga": ""
}
},
"accounting_customer_party": {
"party_name": "Example Customer Limited",
"tin": "12345678-0001",
"email": "customer@example.com",
"telephone": "+2348000000000",
"business_description": "Customer business activity",
"postal_address": {
"street_name": "10 Customer Street",
"city_name": "Ikeja",
"postal_zone": "100001",
"country": "NG",
"state": "Lagos State",
"lga": ""
}
},
"payee_party": {
"party_name": "Mattobell Limited",
"tin": "14530564-0001",
"email": "erp@mattobell.net",
"telephone": "+2347068693119",
"business_description": "Business activity",
"postal_address": {
"street_name": "71 CMD Road",
"city_name": "Magodo",
"postal_zone": "23401",
"country": "NG"
}
},
"bill_party": {
"party_name": "Mattobell Limited",
"tin": "14530564-0001",
"email": "erp@mattobell.net",
"telephone": "+2347068693119",
"business_description": "Business activity",
"postal_address": {
"street_name": "71 CMD Road",
"city_name": "Magodo",
"postal_zone": "23401",
"country": "NG"
}
},
"ship_party": {
"party_name": "Mattobell Limited",
"tin": "14530564-0001",
"email": "erp@mattobell.net",
"telephone": "+2347068693119",
"business_description": "Business activity",
"postal_address": {
"street_name": "71 CMD Road",
"city_name": "Magodo",
"postal_zone": "23401",
"country": "NG"
}
},
"tax_representative_party": {
"party_name": "Mattobell Limited",
"tin": "14530564-0001",
"email": "erp@mattobell.net",
"telephone": "+2347068693119",
"business_description": "Tax filings and compliance",
"postal_address": {
"street_name": "71 CMD Road",
"city_name": "Magodo",
"postal_zone": "23401",
"country": "NG"
}
},
"actual_delivery_date": "2026-08-13",
"payment_means": [
{
"payment_means_code": "10",
"payment_due_date": "2026-08-14"
}
],
"payment_terms_note": "Payment due within 30 days of invoice issue.",
"allowance_charge": [
{
"charge_indicator": true,
"discount_rate": 0,
"discount_amount": 0,
"fee_rate": 0,
"fee_amount": 0
}
],
"tax_total": [
{
"tax_amount": 6750.0,
"tax_subtotal": [
{
"taxable_amount": 90000.0,
"tax_amount": 6750.0,
"tax_category": {
"id": "STANDARD_VAT",
"percent": 7.5
}
}
]
}
],
"legal_monetary_total": {
"line_extension_amount": 90000.0,
"tax_exclusive_amount": 90000.0,
"tax_inclusive_amount": 96750.0,
"payable_amount": 96750.0
},
"invoice_line": [
{
"discount_amount": 0.0,
"discount_rate": 0.0,
"fee_amount": 0.0,
"fee_rate": 0.0,
"hsn_code": "",
"invoiced_quantity": 1.0,
"isic_code": "7020",
"item": {
"description": "Odoo Implementation & Configuration",
"name": "Odoo Implementation & Configuration",
"sellers_item_identification": ""
},
"line_extension_amount": 90000.0,
"price": {
"base_quantity": 1,
"price_amount": 90000.0,
"price_unit": "XBG"
},
"product_category": "",
"service_category": "Management consultancy activities"
}
]
}
4. Invoice Line Schema
| Field | Requirement / Applicability | Description |
|---|---|---|
discount_amount | Optional | Line discount amount. |
discount_rate | Optional | Line discount rate. |
fee_amount | Optional | Line fee amount. |
fee_rate | Optional | Line fee rate. |
hsn_code | Goods | NRS HSN/product code. |
invoiced_quantity | Mandatory | Quantity invoiced. |
isic_code | Services | NRS four-digit ISIC code. |
item | Mandatory | Item/service object. |
line_extension_amount | Mandatory | Line amount. |
price | Mandatory | Price object. |
product_category | Goods | NRS product category. |
service_category | Services | NRS service category. |
5. Price Object
{"price_amount":90000.0,"base_quantity":1,"price_unit":"XBG"}
6. Tax and Monetary Totals
TaxTotal contains TaxAmount and TaxSubtotal. LegalMonetaryTotal contains line_extension_amount, tax_exclusive_amount, tax_inclusive_amount and payable_amount.
7. IRN
Invoice Number + Service ID + YYYYMMDD. Mattobell test: INV202600002-4894B3BA-20260813.
8. Test Evidence
Mattobell successfully demonstrated validation HTTP 200 and signing HTTP 201 in Sandbox.
9. Terminology Note
The public NRS documentation uses POST base_url/api/v1/invoice/validate. This documentation does not invent a separate undocumented Create Invoice endpoint.