Invoicing Flow
Summary
This page shows the invoicing leg of the Vertex API flow: how a client submits an invoice and
gets back a compliant e-invoice, once tax amounts are already known. Applies across Vertex's LatAm coverage:
The endpoints, call types, and webhook contract are the same regardless of country; only the
payload fields and the local tax authority differ.
Key things to know before reading the diagram:
- Invoices are issued one by one, not in bulk. Each
POST /invoicescall submits exactly
one invoice. There is no batch-submission endpoint — if you need to issue 500 invoices, that's
500 separate calls. - Your systems always initiate the request. Vertex only calls you back once, via webhook, to
confirm the outcome. - The webhook — not the sync response to
POST /invoices— is what tells you whether the
invoice actually succeeded. The sync response only confirms the request was well-formed.
Call sequence
sequenceDiagram
autonumber
participant Client
participant Vertex
participant Auth as Tax Authority
Client->>Vertex: POST /invoices
Vertex-->>Client: 200 status "received" / 400-500 schema error
rect rgba(168,118,15,0.08)
Note over Vertex,Auth: async backend — no client-facing call
Vertex->>Auth: transmit invoice to the local tax authority
Auth-->>Vertex: accept / reject
end
rect rgba(46,125,82,0.09)
Note over Client,Vertex: Scenario: created invoice
Vertex--)Client: webhook — status: created
Client->>Vertex: GET /invoices/{invoice_id}
Vertex-->>Client: invoice_key, documents, country fields
end
rect rgba(178,58,58,0.09)
Note over Client,Vertex: Scenario: failed invoice
Vertex--)Client: webhook — status: failed
end
Every call above the shaded amber band is client-initiated and synchronous. Inside that band,
Vertex talks to the local tax authority with no client visibility. The webhook is the only call
Vertex initiates, and it always carries one of exactly two outcomes — created or failed —
shown above as two mutually exclusive scenarios. created ends after the GET in step 5;
failed ends at the webhook itself.
Step reference
endpoints as called against api.brinta.com
| # | Endpoint | Direction | Type | Notes |
|---|---|---|---|---|
| 1 | POST /invoices | Client → Vertex | SYNC | Submit invoice. Sync response is a schema check only: valid → status: received; invalid → 400/500. |
| 2 | — | Vertex → Tax Authority | ASYNC | Vertex transmits the invoice to the local tax authority. |
| 3 | — | Tax Authority → Vertex | ASYNC | Authority accepts or rejects. |
| 4 | Webhook | Vertex → Client | WEBHOOK | The only call Vertex initiates. Payload: invoice_id, invoice_external_id, status. 2 possible outcomes: created (tax authority accepted) or failed (rejected). For rejected invoices, errors will be sent in the webhook body |
| 5 | GET /invoices/{invoice_id} | Client → Vertex | SYNC | Only when step 4's status is created — a failed webhook is terminal, there's nothing to fetch. Works with invoice_id, or with invoice_external_id by adding ?use_external_id=true (docs). Returns invoice_key, documents (PDF/XML or country equivalent), and country-specific fields. |
Vertex API · api.brinta.com — request examples: Postman collection
Updated 4 days ago
