NRS Invoice Gateway

Onboard your business, represent NRS-registered issuers, and run compliant e-invoicing from one Duplo Gateway integration.

Duplo's NRS Invoice Gateway gives a system integrator one approved domain for connecting its software to the Nigeria Revenue Service (NRS) e-invoicing APIs. The Gateway keeps each represented issuer isolated and bills your top-level business (your Duplo Dashboard account) only when an invoice reaches the signing route.

These pages document NRS, the regulator currently enabled for customer use. The NRS API stays the authority for its regulatory fields and resource values, so keep the NRS e-Invoicing documentation, version 1.1.6 open alongside this guide.

The short version

Use the API key generated in Duplo Dashboard on your approved Gateway domain, and add the represented business ID for invoice operations. Every NRS call is unbilled except the invoice signing route; see Billing and safe retries for the unconfirmed-outcome exception.

Understand the actors

Four parties touch every signed invoice. Knowing which one holds a given credential, identity, or responsibility tells you where to look when something fails, and what your own system still has to store.

ActorWhat it ownsWhat it does not own
Your top-level businessGateway domain, API key, NGN wallet, represented-business mappings, and the signing fees they incurAny represented business's NRS taxpayer identity
Represented businessNRS taxpayer identity, TIN, IRN template, and optional QR materialA Duplo Dashboard login, API key, or payer wallet of its own
DuploTenant routing, fee capture and reversal, Stored processing, and webhook deliveryThe NRS account itself, its registration, or its standing
NRSTaxpayer registration, IRN rules, validation, signing, transmission, and resource catalogsGateway availability, retry behavior, or signing fees

The represented business may be your own legal entity or a client whose invoices your software produces. In both cases, the represented business must already be active in NRS and must link Duplo as its e-invoicing application before Gateway onboarding.

End-to-end journey

Two flows take you from a new Duplo Dashboard account to a signed invoice at NRS. The first runs while you set the integration up. The second runs every time your software issues a document.

Set up the Gateway

Complete these four steps before your first invoice. Step 4 repeats for each new represented business you take on, and steps 2 and 3 repeat when you move a domain between test and live, which follows the go-live release path.

Process every invoice

This is the runtime path your software repeats for each document. Your approved mode decides how the validate and sign steps behave: Pass-through returns the NRS result synchronously, while Stored accepts the invoice and validates, bills, and signs it afterward.

Choose your integration mode

Your domain is approved in exactly one mode. The choice changes the request body and response behavior of the same public signing URL.

Both modes call the same signing URL, so the difference shows up in what you send, what you get back, and where the invoice lives afterward. Check each row below against your own system before you request approval, because the mode is fixed for the life of the domain.

ConcernPass-throughStored
Request bodyNRS invoice documentDuplo invoice intake document
ValidationYour explicit Gateway callProcessor-managed after acceptance
Signing responseSynchronous NRS-format response202 Accepted with a Duplo invoice ID
Billable actionSignSign, once the processor reaches it
TransmissionRaw NRS IRN pathDuplo invoice-ID path
Status readsYour own store and NRS reads; no Duplo endpointDuplo list and per-invoice status reads
Invoice stored by DuploNoYes

Mode is server-controlled

Do not add a mode, business state, parent business, domain, wallet, or fee to an invoice request. The Gateway resolves these values from the approved hostname and current API key. Changing mode or moving between test and live requires a controlled drain and reapproval.

Base URLs and placeholders

Examples use these placeholders:

Placeholders used in these examples
Dashboard:       https://dashboard.tryduplo.com
Gateway base:    https://<your-label>.invoice.tryduplo.com
API key:         <publicKey from Duplo Dashboard>
Issuer ID:       <gatewaySubBusinessId returned by POST /sub-businesses>

Test and live use the same host shape. The current state of your top-level business and the approved domain state select the NRS environment. Never select an NRS base URL in a customer request.

Prerequisites

Have the following ready:

  • A top-level business in Duplo Dashboard that is active and activated for e-invoicing.
  • A user role allowed to manage API keys and NRS settings, with two-factor authentication enabled for key generation.
  • An active NGN business wallet with enough balance for signing fees.
  • For every represented business: an active NRS account, transient NRS portal credentials, and a usable IRN template. Keep its TIN ready only when the NRS entity has multiple active businesses and you need to select one. NRS QR material is optional and can be added later.
  • An HTTPS webhook endpoint if you want inbound-invoice notifications.
  • A secure store for the Duplo Dashboard API key, represented-business mappings, idempotency keys, invoice responses, and support trace IDs.

Start here

The four cards below are in the order you would work through them. Each one opens the page that covers that step in full.

How is this guide?

Last updated on

On this page