E-Invoicing for Nigeria API References


Introduction

Nigeria's Federal Inland Revenue Service (FIRS) is advancing its tax administration by implementing an electronic invoicing (e-invoicing) system. This initiative aims to enhance tax compliance, increase transparency, and reduce revenue losses, thereby improving the country's tax-to-GDP ratio.

Key Developments in Nigeria's E-Invoicing System:

  • Pilot Phase Initiation: In February 2025, FIRS launched a pilot phase of the e-invoicing system, targeting large taxpayers across various sectors. This phase is designed to gather insights and address potential challenges before a full-scale rollout.

  • Full Implementation Timeline: Based on the outcomes of the pilot, FIRS plans to fully implement the e-invoicing system by July 2025, encompassing Business-to-Business (B2B), Business-to-Consumer (B2C), and Business-to-Government (B2G) transactions.

  • System Features: The e-invoicing platform, known as the Merchant Buyer Solution (MBS), is designed to replace traditional paper-based invoicing with a digital framework that facilitates real-time validation and storage of transactions. It covers B2B, B2C, and B2G transactions, unifying transaction data to provide insights into supply chains, purchasing trends, and financial data to support data-driven fiscal and economic policies.

Technical Compliance:

To comply with the new regulations, businesses must use authorized e-invoicing solutions that integrate with the FIRS platform and meet the technical specifications laid out by FIRS. The system offers two main options:

  1. Direct Issuance: Businesses can generate invoices directly through the FIRS e-invoice portal.

  2. System Integration: Companies can integrate their existing invoicing software with the FIRS e-invoice system via API.

These developments underscore Nigeria's commitment to enhancing tax compliance and transparency through digital transformation.

Common Structs

1. Buyer Details accounting_customer_party

This contains comprehensive information about the customer to whom the invoice is being issued, including their name, contact details, billing address, and other relevant particulars.

  • Name
    party_name
    Type
    string
    Description

    The name of the customer.

  • Name
    tin
    Type
    string
    Description

    The TIN Registration number of the customer. (Mandatory)

  • Name
    email
    Type
    string
    Description

    The email address of the customer. (Mandatory)

  • Name
    telephone
    Type
    string (optional)
    Description

    Phone number of the customer. Must start with + (country code).

  • Name
    business_description
    Type
    string (optional)
    Description

    A brief description of the customer's business.

  • Name
    postal_address {}
    Type
    object
    Description
  • Name
    street_name
    Type
    string
    Description

    Street address of the customer.

  • Name
    city_name
    Type
    string
    Description

    City of the customer.

  • Name
    postal_zone
    Type
    string
    Description

    Postal code of the customer.

  • Name
    country
    Type
    string
    Description

    Country code of the customer (ISO 3166-1 alpha-2).


2. Line Items lineitems[]

This is an array of items inclduded in an invoice. One of such item should have below mentioned data points:

  • Name
    hsn_code
    Type
    string
    Description

    Harmonized System Nomenclature (HSN) code.

  • Name
    product_category
    Type
    string
    Description

    Category of the product (e.g., "Food and Beverages").

  • Name
    discount_rate
    Type
    float
    Description

    Discount rate as a percentage (e.g., 2.01 for 2.01%).

  • Name
    discount_amount
    Type
    float
    Description

    Discount amount in applicable currency.

  • Name
    fee_rate
    Type
    float
    Description

    Additional fee rate as a percentage.

  • Name
    fee_amount
    Type
    float
    Description

    Fixed fee amount in applicable currency.

  • Name
    invoiced_quantity
    Type
    float
    Description

    Quantity of items included in the invoice.

  • Name
    line_extension_amount
    Type
    float
    Description

    Total amount for the line item before tax.

  • Name
    item {}
    Type
    object
    Description
  • Name
    name
    Type
    string
    Description

    Name of the item.

  • Name
    description
    Type
    string
    Description

    Description of the item.

  • Name
    sellers_item_identification
    Type
    string (optional)
    Description

    Seller’s internal identification of the item.

  • Name
    price {}
    Type
    object
    Description
  • Name
    price_amount
    Type
    float
    Description

    Unit price of the item.

  • Name
    base_quantity
    Type
    float
    Description

    Base quantity that the price refers to.

  • Name
    price_unit
    Type
    string
    Description

    Measurement unit (e.g., "NGN per 1").


POSTapi/auth/taxpayer/login

Onboard New Supplier

This endpoint allows you to onboard new supplier to Flick. In this step, you will receive a participant-id that will be required to issue an einvoice.

Request Body

  • Name
    party_name
    Type
    string
    Description

    Official Registered Name of the Entity.

  • Name
    tin
    Type
    string
    Description

    Registered TIN of the Supplier. (Mandatory)

  • Name
    email
    Type
    string
    Description

    Supplier's business email address. (Mandatory)

  • Name
    password
    Type
    string
    Description

    Supplier's password used FIRS eInvoicing Portal. (Mandatory)

  • Name
    telephone
    Type
    string
    Description

    Phone number of the supplier. Must start with + (country code).

  • Name
    business_description
    Type
    string
    Description

    A brief description of the supplier's business. (Mandatory)

  • Name
    postal_address {}
    Type
    object
    Description
  • Name
    street_name
    Type
    string
    Description

    Street address of the supplier.

  • Name
    city_name
    Type
    string
    Description

    City name of the supplier.

  • Name
    postal_zone
    Type
    string
    Description

    Postal code of the supplier.

  • Name
    country
    Type
    string
    Description

    Country code of the supplier (ISO 3166-1 alpha-2).

Sample Request

POST
api/auth/taxpayer/login
curl --url https://sandbox-ng.flick.network/api/auth/taxpayer/login \
  --header 'x-flick-auth-key: {token}' \
  --header 'Content-Type: application/json' \
  --data '{
    "party_name": "Dangote Group", 
    "tin": "TIN-0099990001",
    "email": "supplier_business@email.com",
    "telephone": "+23480254099000",
    "business_description": "this entity is into sales of Cement and building materials",
    "postal_address": {
        "street_name": "32, owonikoko street", 
        "city_name": "Gwarikpa", 
        "postal_zone": "023401", 
        "country": "NG" 
    } 
}'

Sample Response

200
Success
{
  "status": "success",
  "message": "Supplier onboarded successfully.",
  "data": {
    "supplier_name": "Test Co.",
    "participant_id": "da5449e9-000a-4376-a603-d664422ac59e"
  }
}

POSTapi/invoice/generate

Generate E-Invoice

To Generate a new E-Invoice, this endpoint can be used along with the participant-id to which it belongs to. Give your onboarded supplier id in header to ensure its reported under that specific device.

Request Body

  • Name
    document_identifier
    Type
    string
    Description

    Document Reference Number or Identifier.

  • Name
    issue_date
    Type
    date: YYYY-MM-DD
    Description

    Date on which the invoice was issued.

  • Name
    due_date
    Type
    date: YYYY-MM-DD
    Description

    Due date for payment.

  • Name
    issue_time
    Type
    time: HH-MM-ss
    Description

    Time at which the invoice was issued.

  • Name
    invoice_type_code
    Type
    string
    Description

    Code representing the invoice type.

  • Name
    payment_status
    Type
    string
    Description

    Status of the payment. Defaults to PENDING if not provided.

  • Name
    buyer_reference
    Type
    string
    Description

    Reference code for the buyer.

  • Name
    invoice_delivery_period
    Type
    struct: invoice_delivery_period
    Description

    Period during which the invoice is valid.

  • Name
    accounting_customer_party
    Type
    struct: accounting_customer_party
    Description

    Details of the customer receiving the invoice.

  • Name
    lineitems
    Type
    struct: lineitems[]
    Description

    List of line items in the invoice. At least one item is mandatory.

Sample Request

POST
api/invoice/generate
curl --url https://sandbox-ng.flick.network/api/invoice/generate \
  --header 'x-flick-auth-key: {token}' \
  --header 'participant-id: {participant-id}' \
  --header 'Content-Type: application/json' \
  --data '
    {
      "document_identifier": "4600a55f14",
      "issue_date": "2025-08-20",
      "due_date": "2024-06-14",
			"document_currency_code": "NGN",
			"tax_currency_code": "NGN",
      "invoice_type_code": "396",
      "payment_status": "PENDING",
      "accounting_customer_party": {
          "party_name": "Dangote Group", 
          "tin": "TIN-000001",
          "email": "business@email.com", 
          "postal_address": {
              "street_name": "32, owonikoko street", 
              "city_name": "Gwarikpa", 
              "postal_zone": "023401", 
              "country": "NG" 
          } 
      },
      "invoice_line": [
        {
          "hsn_code": "CC-001",
          "product_category": "Food and Beverages",
          "discount_rate": 2.01,
          "discount_amount": 0.603,
          "invoiced_quantity": 15,
          "line_extension_amount": 30,
          "item": {
            "name": "item name",
            "description": "item description"
          },
          "price": {
            "price_amount": 10,
            "base_quantity": 3,
            "price_unit": "NGN per 1"
          }
        }
      ]
    }'

Sample Response

200
Success
    {
      "status": "submitted",
      "data": {
        "irn": "125-XXXX-20250820",
        "firs_response": {
          "code": 201,
          "data": {
            "ok": true
          }
        },
        "qr_code": "XtIv69xI4CDxAqrvPL+8c/JhHmwWxfOqo+IyTwHBZCf....",
        "steps_completed": [
          "irn_validation",
          "invoice_validation",
          "invoice_signing",
          "database_storage"
        ],
        "message": "Invoice generated, validated, and signed successfully",
        "invoice": {
          "id": "cmevl1eqm000011rwejuvwyvd",
          "irn": "125-XXXX-20250820",
          "businessId": "XXXX-4e6c-XXX-92b1-XXXX",
          "invoiceReference": "125-XXXX-20250820",
          "issueDate": "2025-08-20T00:00:00.000Z",
          "dueDate": "2024-06-14T00:00:00.000Z",
          "issueTime": null,
          "invoiceTypeCode": "396",
          "paymentStatus": "PENDING",
          "note": null,
          "taxPointDate": null,
          "documentCurrencyCode": "NGN",
          "taxCurrencyCode": "NGN",
          "accountingCost": null,
          "buyerReference": null,
          "orderReference": null,
          "actualDeliveryDate": null,
          "paymentTermsNote": null,
          "accountingSupplierParty": {
            "tin": "XXXXXX-0001",
            "email": "supplier_business@email.com",
            "telephone": "+23480254099000",
            "party_name": "Dangote Group",
            "postal_address": {
              "country": "NG",
              "city_name": "Gwarikpa",
              "postal_zone": "023401",
              "street_name": "32, owonikoko street"
            },
            "business_description": "this entity is into sales of Cement and building materials"
          },
          "accountingCustomerParty": {
            "tin": "TIN-XXXXX",
            "email": "business@email.com",
            "party_name": "Dangote Group",
            "postal_address": {
              "country": "NG",
              "city_name": "Gwarikpa",
              "postal_zone": "023401",
              "street_name": "32, owonikoko street"
            }
          },
          "lineExtensionAmount": "30",
          "taxExclusiveAmount": "30",
          "taxInclusiveAmount": "33",
          "payableAmount": "33",
          "status": "SIGNED",
          "firsResponse": {
            "code": 201,
            "data": {
              "ok": true
            }
          },
          "createdAt": "2025-08-28T15:52:31.966Z",
          "updatedAt": "2025-08-28T15:52:31.966Z",
          "invoiceLines": [
            {
              "id": "cmevl1eqn000111rw7cr0nw8z",
              "invoiceId": "cmevl1eqm000011rwejuvwyvd",
              "hsnCode": "CC-001",
              "productCategory": "Food and Beverages",
              "discountRate": "2.01",
              "discountAmount": "0.603",
              "feeRate": null,
              "feeAmount": null,
              "invoicedQuantity": 15,
              "lineExtensionAmount": "30",
              "item": {
                "name": "item name",
                "description": "item description"
              },
              "price": {
                "price_unit": "NGN per 1",
                "price_amount": 10,
                "base_quantity": 3
              }
            }
          ]
        },
        "timestamp": "2025-08-28T15:52:32.007Z"
      }
    }