NF-e · NFC-e · CT-e · CT-e OS · MDF-e

Your system calls one API. SEFAZ stays out of your way.

NF-e, NFC-e, CT-e, CT-e OS, and MDF-e — request one, get back a signed, authorized document. When the origin SEFAZ is down we retry through the state's SVC, then EPEC if you're authorized, automatically. Your webhook fires the moment the status changes.

POST /api/v1/nfe
curl -X POST https://nfja.com.br/api/v1/nfe \
  -H "Authorization: Bearer SEU_TOKEN" \
  -H "Idempotency-Key: 6f1c9c0e-3b7a-..." \
  -d '{
    "ref": "pedido-2001",
    "recipient": { "name": "Cliente Exemplo Ltda" },
    "items": [ ... ]
  }'
202 Accepted status: processing_authorization
webhook · nfe.status_changed

Autorizado o uso da NF-e

sefaz_code 100 · pedido-2001
XML and DANFE ready

Integrations

  • SEFAZ
  • CNPJá
  • IBPT
  • NFePHP
  • Direct to SEFAZ
  • A1 certificate
  • Automatic SVC/EPEC contingency
  • Data handled under the LGPD

Modules

Six pieces. One API.

Each piece removes a manual step — no spreadsheet on the side, no certificate juggling, no second system to double-check SEFAZ.

01

Issue by API

Call one endpoint — we build, sign, and transmit the XML for you.

02

Automatic failover

Origin SEFAZ down? We retry through the state's SVC, then EPEC if you're authorized — no extra call from you.

03

Webhooks

The moment status changes, your system knows — no polling.

04

A1 certificate

Upload it once. We sign every document with it until it expires.

05

Multi-company

One account, as many issuing companies as you need, each with its own environment and numbering.

06

Operations panel

Every SEFAZ interaction, XML, and DANFE — one click away.

app.nfja.com.br · issued documents
Empresa Exemplo Ltda 00.000.000/0001-00
  • pedido-2001 NF-e · 55 Authorized Protocol received
  • pedido-2002 NFC-e · 65 Authorized XML and DANFE ready
  • frete-0417 CT-e · 57 Processing Awaiting SEFAZ
  • manifesto-88 MDF-e · 58 Authorized Webhook delivered

Illustration of the Documents screen in the panel (sample data).

Pipeline

From your call to an authorized document in seconds, not tickets.

This is the actual path a document takes through the gateway — nothing hidden.

  1. 01

    NF-e, CT-e, or MDF-e request

    arrives through the API

  2. 02

    XML built and signed

    with your company's A1 certificate

  3. 03

    Sent to SEFAZ

    origin, then SVC, then EPEC if needed

  4. 04

    Authorized

    a protocol number comes back

  5. 05

    Your system is notified

    webhook fires, XML and DANFE ready

Your API call reaches the gateway. The XML is assembled field by field. Signed with your company's A1 certificate. Transmitted to SEFAZ — origin, then SVC, then EPEC. SEFAZ answers with a protocol number. Your webhook fires; XML and DANFE are ready.

How it works

From your first call to an authorized document, step by step.

Nothing hidden — this is exactly what runs, in this order.

  1. 01

    Get a token

    An account token creates companies and certificates; a company token issues documents — each scoped to only the abilities you grant.

  2. 02

    Register the company and its certificate

    CNPJ and A1 certificate, validated and stored once.

  3. 03

    Call the document endpoint

    POST to /nfe, /nfce, /cte, or /mdfe with the payload — we build, sign, and transmit it.

  4. 04

    We handle SEFAZ

    Origin down? We retry through the SVC, then EPEC if authorized — you never see the outage.

  5. 05

    Your system gets notified

    A webhook fires on every status change; XML and DANFE are ready to download.

How to use

One request in, one authorized document out.

Send the JSON with your company token. The gateway answers right away and notifies your webhook when SEFAZ decides.

POST to /api/v1/nfe with your company token. The Idempotency-Key makes retries safe. Replace SEU_TOKEN with your token.

Copy
curl -X POST https://nfja.com.br/api/v1/nfe \
  -H "Authorization: Bearer SEU_TOKEN" \
  -H "Idempotency-Key: 6f1c9c0e-3b7a-4d52-9d3e-1c2f8a7b5e10" \
  -H "Content-Type: application/json" \
  -d '{
    "ref": "pedido-2001",
    "identification": {
      "operation_nature": "Venda de mercadoria",
      "operation_type": 1,
      "destination": 2,
      "purpose": 1,
      "final_consumer": 0,
      "buyer_presence": 9
    },
    "recipient": {
      "name": "Cliente Exemplo Ltda",
      "cnpj": "11222333000181",
      "state_registration_indicator": 1,
      "state_registration": "12345678"
    },
    "items": [
      {
        "code": "CAN-AZ-001",
        "description": "Caneta esferográfica azul",
        "ncm": "96081000",
        "cfop": "6101",
        "commercial_unit": "CX",
        "commercial_quantity": "10.0000",
        "commercial_unit_price": "25.0000000000",
        "gross_amount": "250.00"
      }
    ],
    "totals": {
      "products_amount": "250.00",
      "document_amount": "250.00"
    },
    "payments": [
      { "indicator": 1, "method": "15", "amount": "250.00", "date": "2026-10-13" }
    ],
    "transport": { "freight_mode": 9 }
  }'

202 Accepted: the document is processing while SEFAZ answers. Fields shown are the main ones.

Copy
HTTP/1.1 202 Accepted

{
  "id": "0198f2a4-5c1e-7d3b-9a64-2b8f1e0c7d55",
  "ref": "pedido-2001",
  "model": 55,
  "environment": 2,
  "status": "processing_authorization",
  "emission_type": 1,
  "series": 1,
  "number": 1042,
  "access_key": null,
  "protocol": null,
  "sefaz_code": null,
  "sefaz_message": null,
  "transmission_attempts": 0,
  "links": {
    "self": "/api/v1/nfe/pedido-2001",
    "xml": "/api/v1/nfe/pedido-2001/xml",
    "danfe": "/api/v1/nfe/pedido-2001/danfe"
  }
}

When the status changes we POST this event to your URL, signed in the X-Fiscal-Gateway-Signature header.

Copy
POST https://seu-sistema.com.br/webhooks/nfja
X-Fiscal-Gateway-Signature: t=1760659200,v1=<hmac-sha256>
X-Fiscal-Gateway-Event-Id: 0198f2a4-9e10-7a21-8c3d-5f6b7a8c9d01

{
  "id": "0198f2a4-9e10-7a21-8c3d-5f6b7a8c9d01",
  "type": "nfe.status_changed",
  "occurred_at": "2026-10-16T21:41:07-03:00",
  "environment": 2,
  "company_id": "0198f2a3-1b2c-7d4e-8f50-6a7b8c9d0e1f",
  "document": {
    "ref": "pedido-2001",
    "model": 55,
    "status": "authorized",
    "emission_type": 1,
    "sequence": 2,
    "series": 1,
    "number": 1042,
    "access_key": "35261011222333000181550010000010421000010427",
    "protocol": "135260000012345",
    "sefaz_code": 100,
    "sefaz_message": "Autorizado o uso da NF-e",
    "transmission_attempts": 1,
    "links": {
      "self": "/api/v1/nfe/pedido-2001",
      "xml": "/api/v1/nfe/pedido-2001/xml",
      "danfe": "/api/v1/nfe/pedido-2001/danfe"
    }
  }
}

Abbreviated payload — every field is described in the API reference.

Read the docs

Pay for volume. No surprise on the invoice.

Every plan includes the full API, webhooks, the A1 certificate, and the panel. What changes is the monthly volume and the document models.

Start

To start integrating and issuing.

R$ 79 /month

200 documents/month

overage R$ 0,49/doc

  • NF-e and NFC-e
  • Webhooks
  • A1 certificate
  • 1 issuing company
  • Operations panel
Choose Start

Pro

HIGHLIGHT

For operations with more than one model.

R$ 199 /month

1.000 documents/month

overage R$ 0,32/doc

  • Everything in Start
  • CT-e, CT-e OS, and MDF-e
  • SVC/EPEC contingency
  • Tax calculation
  • Up to 5 issuing companies
Choose Pro

Escala

For high volume and several companies.

R$ 449 /month

5.000 documents/month

overage R$ 0,22/doc

  • Everything in Pro
  • GNRE
  • DF-e distribution service
  • Unlimited issuing companies
Choose Escala

Enterprise

Custom volume and terms.

Contact us

volume on request

overage on request

  • Everything in Escala
  • Negotiated commercial terms
  • Implementation support
Talk to us

FAQ

Frequently asked questions

Next step

Stop managing SEFAZ. Start issuing.

Put fiscal document issuance behind one API — with automatic contingency and a webhook for every change.

Multi-company Automatic failover Webhooks Operations panel