Developers

Jabuntu Public API

Read invoices, drafts, customers, products, NRS submissions and reports, and create drafts and customers. Version 1.0.0.

Download PDF

Overview

The Jabuntu Public API lets a business read its invoices, drafts, customers, products, NRS submissions and financial reports, and create drafts and customers. Invoices are prepared, validated and signed through the NRS MBS inside the application; the API gives integrators read access to the results and the ability to prepare drafts. Nothing in the API submits directly to NRS — drafts are reviewed and submitted in the app.

Base URL

https://erp.jabuntu.com/api/public/v1

Authentication

Every request carries a Bearer credential: Authorization: Bearer <credential>

  • API key — created by the business owner under Developer; prefix jbt_pk_…
  • OAuth access token — issued via the OAuth flow; prefix jbt_at_…

Each credential carries a set of scopes, a per-minute rate limit, and optionally an IP allowlist.

Scopes

  • invoices:read — read invoices
  • drafts:read / drafts:write — read and create invoice drafts
  • customers:read / customers:write — read and create customers
  • products:read — read products and stock on hand
  • submissions:read — read NRS submission status
  • reports:read — read financial reports

Rate limiting and idempotency

Exceeding the per-minute limit returns HTTP 429 with a Retry-After header. POST requests require an Idempotency-Key header (8–80 characters: letters, digits, - or _). Repeating the same key returns the first result; reusing a key with a different request body returns HTTP 422.

Endpoints

EndpointPurpose
GET /meThe business, the credential’s scopes and whether the business is a developer sandbox
GET /invoicesNRS-cleared and other invoices (scope invoices:read)
GET /invoices/{number}One invoice (scope invoices:read)
GET /draftsInvoice drafts (scope drafts:read)
POST /draftsCreate an invoice draft (scope drafts:write); it is not submitted to NRS
GET /drafts/{id}One draft (scope drafts:read)
GET /customersCustomers (scope customers:read)
POST /customersCreate a customer (scope customers:write)
GET /productsProducts with stock on hand (scope products:read)
GET /submissionsWhere each invoice is on its way to NRS (scope submissions:read)
GET /reports/trial-balanceTrial balance (scope reports:read)
GET /reports/profit-and-lossProfit and loss (scope reports:read)

Errors

  • 401 — missing or invalid credential.
  • 403 — the credential lacks the required scope (or IP not allowlisted).
  • 404 — the resource does not exist for this business.
  • 422 — validation failed, or an idempotency key was reused with a different body.
  • 429 — rate limit exceeded; honour Retry-After.

E-invoicing (NRS MBS) flow

Invoices are prepared, validated and signed against the NRS Merchant Buyer System (MBS) inside the application. The application endpoints below drive the flow; signing (the IRN and QR code) is performed by NRS.

StepEndpoint
Create / edit a draftPOST /api/erp/drafts, PUT /api/erp/drafts/{id}
Local validationPOST /api/erp/drafts/{id}/validate-local
Prepare the MBS payloadPOST /api/erp/drafts/{id}/prepare-mbs-local
Submit for NRS validation & signingPOST /api/erp/drafts/{id}/submit
Check status (NRS confirmation, QR)GET /api/erp/mbs/journey, POST /api/erp/mbs/journey/{requestId}/check

Example invoice payload (MBS)

The payload prepared for the NRS MBS. Mandatory fields: irn, issue_date/issue_time, invoice_type_code, invoice_kind (B2B, B2G or B2C), document_currency_code, accounting_supplier_party (with tin), accounting_customer_party for B2B/B2G, invoice_line (goods carry an hsn_code, services an isic_code), tax_total and legal_monetary_total. Values below are synthetic test data.

{
  "business_id": "11111111-1111-4111-8111-111111111111",
  "irn": "LOCALTEST001-TEST0001-20260907",
  "issue_date": "2026-09-07",
  "issue_time": "10:00:00",
  "due_date": "2026-09-21",
  "invoice_type_code": "380",
  "invoice_kind": "B2B",
  "document_currency_code": "NGN",
  "tax_currency_code": "NGN",
  "accounting_supplier_party": {
    "party_name": "Synthetic Supplier - NOT A REAL TAXPAYER",
    "tin": "00000000-0001",
    "email": "supplier@example.invalid",
    "postal_address": {
      "street_name": "1 Synthetic Test Street",
      "city_name": "Synthetic Test City",
      "postal_zone": "000000",
      "lga": "NG-LA-IKE",
      "state": "NG-LA",
      "country": "NG"
    }
  },
  "accounting_customer_party": {
    "party_name": "Synthetic Buyer - NOT A REAL TAXPAYER",
    "tin": "00000000-0002",
    "email": "buyer@example.invalid",
    "postal_address": {
      "street_name": "1 Synthetic Test Street",
      "city_name": "Synthetic Test City",
      "postal_zone": "000000",
      "lga": "NG-LA-IKE",
      "state": "NG-LA",
      "country": "NG"
    }
  },
  "invoice_line": [
    {
      "hsn_code": "8471.30",
      "product_category": "Portable computers",
      "invoiced_quantity": 2.0,
      "line_extension_amount": 200000.0,
      "item": {
        "name": "Synthetic portable computer",
        "description": "Synthetic portable computer"
      },
      "price": {
        "price_amount": 100000.0,
        "base_quantity": 1,
        "price_unit": "EA"
      }
    },
    {
      "isic_code": "6201",
      "service_category": "Computer programming",
      "invoiced_quantity": 1.0,
      "line_extension_amount": 50000.0,
      "item": {
        "name": "Synthetic software service",
        "description": "Synthetic software service"
      },
      "price": {
        "price_amount": 50000.0,
        "base_quantity": 1,
        "price_unit": "EA"
      }
    }
  ],
  "tax_total": [
    {
      "tax_amount": 18750.0,
      "tax_subtotal": [
        {
          "taxable_amount": 250000.0,
          "tax_amount": 18750.0,
          "tax_category": {
            "id": "STANDARD_VAT",
            "percent": 7.5
          }
        }
      ]
    }
  ],
  "legal_monetary_total": {
    "line_extension_amount": 250000.0,
    "tax_exclusive_amount": 250000.0,
    "tax_inclusive_amount": 268750.0,
    "payable_amount": 268750.0
  }
}

The irn shown is a placeholder: the authoritative Invoice Reference Number, the cryptographic stamp (CSID) and the QR code are issued by NRS when the invoice is validated and signed.

Specification

A full OpenAPI 3 specification is published with the service and is the authoritative reference for request and response schemas.