Skip to main content

Validate Invoice

Submit a full invoice payload to eTranzact for validation.

Nested Pydantic models automatically coerce dates, times, UUIDs, phone numbers, and decimal values.

Endpoint

POST /api/v1/nrs/validate

Request Body

{
"accounting_cost": "2000.00",
"accounting_customer_party": {
"business_description": "Retail",
"email": "customer@example.com",
"id": "CUS-001",
"party_name": "Demo Customer",
"postal_address": {
"city_name": "Lagos",
"country": "NG",
"lga": "NG-LA-EPE",
"postal_zone": "NG-LA",
"state": "NG-LA",
"street_name": "Victoria Island"
},
"telephone": "+23480254000000",
"tin": "00311855-0001"
},
"accounting_supplier_party": {
"business_description": "Software services",
"email": "billing@example.com",
"id": "SUP-001",
"party_name": "Avetium Consult",
"postal_address": {
"city_name": "Lagos",
"country": "NG",
"lga": "NG-LA-EPE",
"postal_zone": "NG-LA",
"state": "NG-LA",
"street_name": "8 Alausa Road"
},
"telephone": "2348090780097",
"tin": "00311855-0001"
},
"actual_delivery_date": "2026-03-28",
"additional_document_reference": [
{
"irn": "INV000049-F6B4C898-20260327",
"issue_date": "2026-03-27"
}
],
"allowance_charge": [
{
"amount": "800.60",
"charge_indicator": true
}
],
"billing_reference": [
{
"irn": "INV000049-F6B4C898-20260327",
"issue_date": "2026-03-27"
}
],
"business_id": "9819d1a4-c898-401a-90d3-3dfe42891f8b",
"buyer_reference": "2772947000005108043",
"contract_document_reference": {
"irn": "INV000049-F6B4C898-20260327",
"issue_date": "2026-03-27"
},
"dispatch_document_reference": {
"irn": "INV000049-F6B4C898-20260327",
"issue_date": "2026-03-27"
},
"document_currency_code": "NGN",
"due_date": "2026-03-28",
"invoice_delivery_period": {
"end_date": "2026-03-28",
"start_date": "2026-03-27"
},
"invoice_kind": "B2B",
"invoice_line": [
{
"discount_amount": "20",
"discount_rate": "20",
"fee_amount": "50",
"fee_rate": "1.1",
"hsn_code": "3301.90",
"invoiced_quantity": "5",
"item": {
"description": "Invoice line item",
"name": "INV-00049",
"sellers_item_identification": "INV-00049"
},
"line_extension_amount": "2000.00",
"price": {
"base_quantity": "1",
"price_amount": "2000.00",
"price_unit": "NGN per 1"
},
"product_category": "Food and Beverages"
}
],
"invoice_type_code": "381",
"irn": "INV000049-F6B4C898-20260327",
"issue_date": "2026-03-27",
"issue_time": "15:32:01",
"legal_monetary_total": {
"line_extension_amount": "2000.00",
"payable_amount": "2150.00",
"tax_exclusive_amount": "2000.00",
"tax_inclusive_amount": "2150.00"
},
"note": "Thank you for the payment.",
"order_reference": "8215",
"originator_document_reference": {
"irn": "INV000049-F6B4C898-20260327",
"issue_date": "2026-03-27"
},
"payment_means": [
{
"payment_due_date": "2026-03-28",
"payment_means_code": "42"
}
],
"payment_status": "PENDING",
"payment_terms_note": "Net 1 day",
"receipt_document_reference": {
"irn": "INV000049-F6B4C898-20260327",
"issue_date": "2026-03-27"
},
"tax_currency_code": "NGN",
"tax_point_date": "2026-03-27",
"tax_total": [
{
"tax_amount": "150.00",
"tax_subtotal": [
{
"tax_amount": "150.00",
"tax_category": {
"id": "STANDARD_GST",
"percent": "7.5"
},
"tax_category_percent": "7.5",
"taxable_amount": "2000.00"
}
]
}
]
}

Response

{
"endpoint": "string",
"status_code": 0,
"ok": true,
"timestamp": "string",
"attempts": 1,
"retried": false,
"request_payload": {
"additionalProp1": {}
},
"response_body": "string"
}

Status Codes

CodeDescription
200Validation request completed
400Validation or upstream request error
422Validation error
500Local proxy failure

Validation Error Example

{
"detail": [
{
"loc": [
"string",
0
],
"msg": "string",
"type": "string",
"input": "string",
"ctx": {}
}
]
}

Server Error Example

{
"endpoint": "string",
"status_code": 0,
"ok": false,
"error": "string"
}

Notes

  • Dates must use the YYYY-MM-DD format.
  • issue_time must use the HH:MM:SS format.
  • Decimal fields are automatically coerced and validated.
  • Nested invoice objects are validated using Pydantic models.
  • UUID and phone number fields are sanitized before upstream submission.
  • The payload is forwarded to eTranzact for invoice validation.