4invoices avalik API saadab arveldusandmed sinu süsteemist 4invoices'i ja viib arve kuni riigi e-arvete süsteemini välja (Rumeenias ANAF SPV). Üks tootmishost, üks client_credentials-voog, idempotentsed fiskaalkirjutused ja üks veavastuse struktuur igal teel.
https://api.4invoices.net/v1 · OpenAPI spetsifikatsioon (võtit pole vaja)
Mis on 4invoices API
- 4invoices avalik API on REST HTTPS-i kaudu, JSON sisse ja JSON välja.
- Üks tootmishost: https://api.4invoices.net/v1. Eraldi testkeskkonda pole.
- OpenAPI 3.1 spetsifikatsioon on avalik ja võtmeta — impordi see otse Postmani või kliendigeneraatorisse.
- Igal vastusel on päis X-Request-Id; tsiteeri seda, kui küsid tuge.
- Iga fiskaalkirjutus on idempotentne: uuesti proovimine pärast aegumist ei loo kunagi teist dokumenti.
- Kogu riigi e-arvete süsteemi ring API kaudu (Rumeenias ANAF e-Factura): eelkontroll, esitamine, jälgimine, allkirjastatud vastus ja sissetulev kast. Ükski Rumeenia konkurent ei paku seda.
- SmartBill-il pole ühtegi lõpp-punkti arvete esitamiseks riigi e-arvete süsteemi (Rumeenias ANAF) — saatmine on ainult kasutajaliidese konto seade — ja arvete loetelu lõpp-punkti pole üldse.
- Oblio saab kliente ja tooteid luua ainult dokumendi väljastamise kõrvalmõjuna, mitte esmaklassiliste ressurssidena.
- UBL XML-i genereerimine (Rumeenias CIUS-RO) ilma esitamata: saad õigusliku dokumendi failina, puutumata riigi e-arvete süsteemi.
- Idempotentsus fiskaalkirjutustes: pärast aegumist uuesti proovimine ei tooda teist arvet ega kuluta teist numbrit.
- Programmiliselt loetav tarnijaarvete sissetulev kast — automaatse vastavuskontrolli alus.
Esimene arve 6 sammuga
- Loo paneelis jaotises Arveldus → Seaded → API juurdepääs volitus ja kopeeri client_secret — see kuvatakse ainult üks kord.
- Täida ettevõtte profiil ja aktiveeri vähemalt üks fiskaalne seeria (fiscale), muidu annab väljastamine issuer_profile_incomplete või no_series_configured.
- Loo paneelis jaotises Arveldus → Seaded → API juurdepääs volitus ja kopeeri client_secret — see kuvatakse ainult üks kord.
- Täida ettevõtte profiil ja aktiveeri vähemalt üks fiskaalne seeria (fiscale), muidu annab väljastamine issuer_profile_incomplete või no_series_configured.
- Vaheta volitus tokeni vastu: POST /v1/auth/token, grant_type client_credentials. Token kehtib tund — puhverda see, ära too uut igal päringul.
- Väljasta arve: POST /v1/invoices koos päisega Idempotency-Key ja vat_rate protsendina (21, mitte 0.21).
- Käivita eelkontroll (Rumeenias CIUS-RO) POST /v1/invoices/{id}/efactura/validate abil ja seejärel saada arve riigi e-arvete süsteemi POST /v1/invoices/{id}/efactura/submit abil.
- Jälgi staatust GET /v1/efactura/submissions/{id} abil, kuni see jõuab olekusse accepted või rejected.
bash
# 1 — token (1 tund, puhverda see)
ACCESS_TOKEN=$(curl -sS -X POST https://api.4invoices.net/v1/auth/token \
-H 'Content-Type: application/json' \
-d '{"grant_type":"client_credentials","client_id":"cli_XXX","client_secret":"sec_XXX"}' \
| python3 -c 'import sys,json; print(json.load(sys.stdin)["access_token"])')
# 2 — väljasta arve (Idempotency-Key on KOHUSTUSLIK)
curl -sS -X POST https://api.4invoices.net/v1/invoices \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: order-10457-invoice' \
-d '{"buyer":{"name":"Exemplu Comert SRL","tax_id":"RO12345678","county":"Cluj","city":"Cluj-Napoca","country":"RO"},
"lines":[{"description":"Abonament SaaS","quantity":1,"unit_price":400,"vat_rate":21}]}'
# 3 — preflight CIUS-RO, then send to ANAF
curl -sS -X POST https://api.4invoices.net/v1/invoices/inv_01J7ABC/efactura/validate \
-H "Authorization: Bearer $ACCESS_TOKEN"
curl -sS -X POST https://api.4invoices.net/v1/invoices/inv_01J7ABC/efactura/submit \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H 'Idempotency-Key: efactura-inv_01J7ABC-1'javascript
const BASE = "https://api.4invoices.net/v1";
const token = await fetch(`${BASE}/auth/token`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
grant_type: "client_credentials",
client_id: process.env.FOURINVOICES_CLIENT_ID,
client_secret: process.env.FOURINVOICES_CLIENT_SECRET,
}),
}).then((r) => r.json()).then((d) => d.access_token);
const invoice = await fetch(`${BASE}/invoices`, {
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
"Idempotency-Key": `order-${orderId}-invoice`,
},
body: JSON.stringify({
buyer: { name: "Exemplu Comert SRL", tax_id: "RO12345678", county: "Cluj", city: "Cluj-Napoca", country: "RO" },
lines: [{ description: "Abonament SaaS", quantity: 1, unit_price: 400, vat_rate: 21 }],
currency: "RON",
metadata: { order_id: String(orderId) },
}),
}).then((r) => r.json());
console.log(invoice.number, invoice.totals); // "FCT-000123" { net, vat, gross }python
import os, uuid, requests
BASE = "https://api.4invoices.net/v1"
token = requests.post(f"{BASE}/auth/token", json={
"grant_type": "client_credentials",
"client_id": os.environ["FOURINVOICES_CLIENT_ID"],
"client_secret": os.environ["FOURINVOICES_CLIENT_SECRET"],
}, timeout=30).json()["access_token"]
headers = {
"Authorization": f"Bearer {token}",
# Üks võti LOOGILISE toimingu kohta — kasuta seda kordusel uuesti, ära genereeri uut.
"Idempotency-Key": f"order-{order_id}-invoice",
}
invoice = requests.post(f"{BASE}/invoices", headers=headers, json={
"buyer": {"name": "Exemplu Comert SRL", "tax_id": "RO12345678",
"county": "Cluj", "city": "Cluj-Napoca", "country": "RO"},
"lines": [{"description": "Abonament SaaS", "quantity": 1,
"unit_price": 400, "vat_rate": 21}], # protsent, mitte 0.21
"currency": "RON",
}, timeout=60).json()
print(invoice["number"], invoice["totals"])Autentimine
- Voog on client_credentials: vahetad client_id + client_secret paari Bearer access_token'i vastu.
- Token aegub 3600 sekundi pärast. Uuenda seda enne aegumist, mitte igal päringul — POST /auth/token-il on oma IP-põhine päringupiirang.
- client_secret salvestatakse ainult räsina ja seda ei saa taastada. Kui kaotad selle, loo uus volitus ja tühista vana.
- Ainult serverist serverisse. CORS ei luba ühtegi brauseri päritolu: lehe JavaScriptis lekiks secret külastajale.
- Scope'id antakse volituse kaupa. Loo iga süsteemi jaoks eraldi volitus ja anna igale neist minimaalsed vajalikud scope'id.
Arveldus → Seaded → API juurdepääs
bash
curl -sS -X POST https://api.4invoices.net/v1/auth/token \
-H 'Content-Type: application/json' \
-d '{
"grant_type": "client_credentials",
"client_id": "cli_XXXXXXXXXXXX",
"client_secret": "sec_XXXXXXXXXXXXXXXXXXXX"
}'
# → {"access_token":"eyJ...","token_type":"Bearer","expires_in":3600,
# "scope":"invoices:read invoices:write efactura:submit"}javascript
// Puhverda token; ära loo igale päringule uut.
let cached = { token: "", expiresAt: 0 };
async function getToken() {
if (cached.token && Date.now() < cached.expiresAt - 60_000) return cached.token;
const res = await fetch("https://api.4invoices.net/v1/auth/token", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
grant_type: "client_credentials",
client_id: process.env.FOURINVOICES_CLIENT_ID,
client_secret: process.env.FOURINVOICES_CLIENT_SECRET,
}),
});
if (!res.ok) throw new Error(`token ${res.status}`);
const data = await res.json();
cached = { token: data.access_token, expiresAt: Date.now() + data.expires_in * 1000 };
return cached.token;
}Käibemaksumäärad on protsendid
vat_rate: 21 ✓ · vat_rate: 0.19 ✗ · vat_rate: 1 ✗- vat_rate on PROTSENT: 21 tähendab 21%.
- Väärtused vahemikus (0, 1] lükatakse tagasi — 0.19 on murd ja 1 on mitmetähenduslik (1% või 100%).
- 0 on lubatud ja tähendab maksuvabastust või pöördmaksustamist; kirjuta õiguslik viide märkusse notes.
- unit_price on NETO ühikuhind, kui väljastaja on käibemaksukohuslane.
- Vajad summasid enne kinnitamist? POST /v1/invoices/preview-totals teeb sama arvutuse ilma fiskaalnumbrit kulutamata.
Idempotentsus fiskaalkirjutustes
- Idempotency-Key päis on KOHUSTUSLIK päringutel POST /invoices, POST /invoices/{id}/storno ja POST /invoices/{id}/efactura/submit.
- Võtmeid mäletatakse 24 tundi. Sama võtme korduv esitus sama kehaga tagastab algtulemuse ja seab Idempotency-Replayed: true.
- Sama võti erineva kehaga tagastab 409 idempotency_key_reuse — juba väljastatud fiskaaldokumenti ei kirjutata kunagi üle.
- Üks võti LOOGILISE toimingu kohta, mitte HTTP-katse kohta: order-10457-invoice, mitte uus UUID igal uuesti proovimisel.
- Põhjus on õiguslik, mitte tehniline: kasutatud fiskaalnumbrit ja riigi e-arvete süsteemi esitatud arvet ei saa tagasi võtta.
bash
curl -sS -X POST https://api.4invoices.net/v1/invoices \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: order-10457-invoice' \
-d '{
"buyer": {
"name": "Exemplu Comert SRL",
"tax_id": "RO12345678",
"address": "Str. Fabricii 12",
"city": "Cluj-Napoca",
"county": "Cluj",
"country": "RO",
"email": "[email protected]"
},
"lines": [
{ "description": "Abonament SaaS, iulie", "quantity": 1, "unit_price": 400, "vat_rate": 21, "unit": "buc" },
{ "description": "Implementare", "quantity": 6, "unit_price": 250, "vat_rate": 21, "unit": "ora" }
],
"currency": "RON",
"document_kind": "factura",
"due_date": "2026-08-15",
"metadata": { "order_id": "10457" }
}'Kõik lõpp-punktid
| Meetod | Lõpp-punkt | Scope | Idempotency-Key | Päringuid / minut |
|---|---|---|---|---|
| POST | /auth/token Vaheta volitus juurdepääsutõendi vastu | — | — | 120 |
| GET | /me Tenant, scope'id ja praegused piirangud | invoices:read | — | 120 |
| POST | /invoices Väljasta arve või proformaarve | invoices:write | kohustuslik | 30 |
| GET | /invoices Loetle arved (kursoripõhine lehekülgimine) | invoices:read | — | 120 |
| POST | /invoices/preview-totals Arvuta summad ilma midagi loomata | invoices:read | — | 120 |
| GET | /invoices/{invoice_id} Too üks arve | invoices:read | — | 120 |
| GET | /invoices/{invoice_id}/pdf Laadi arve PDF alla | invoices:read | — | 120 |
| GET | /invoices/{invoice_id}/xml Laadi alla UBL XML (Rumeenias CIUS-RO) | invoices:read | — | 120 |
| POST | /invoices/{invoice_id}/storno Väljasta kreeditarve, mis tühistab selle arve | invoices:write | kohustuslik | 30 |
| POST | /invoices/{invoice_id}/payments Märgi arve tasutuks | invoices:write | — | 30 |
| DELETE | /invoices/{invoice_id}/payments Märgi arve tasumata olevaks | invoices:write | — | 30 |
| GET | /clients Loetle kliendid | clients:read | — | 120 |
| POST | /clients Loo või uuenda klient | clients:write | — | 30 |
| GET | /lookup/company/{tax_id} Valideeri CUI Rumeenia ANAF-i registri vastu | clients:read | — | 120 |
| GET | /series Loetle numbriseeriad | invoices:read | — | 120 |
| POST | /invoices/{invoice_id}/efactura/validate Eelkontroll (Rumeenias CIUS-RO) — valideeri saatmata | efactura:read | — | 120 |
| POST | /invoices/{invoice_id}/efactura/submit Esita arve riigi e-arvete süsteemi | efactura:submit | kohustuslik | 10 |
| GET | /efactura/submissions Loetle e-arvete süsteemi esitused | efactura:read | — | 120 |
| GET | /efactura/submissions/{submission_id} Too üks esitus | efactura:read | — | 120 |
| POST | /efactura/submissions/{submission_id}/refresh Küsi riigi e-arvete süsteemilt praegune olek | efactura:read | — | 10 |
| GET | /efactura/submissions/{submission_id}/download Laadi alla allkirjastatud vastuste arhiiv | efactura:read | — | 120 |
| GET | /efactura/inbox Riigi e-arvete süsteemi kaudu saadud tarnijaarved | efactura:read | — | 120 |
| GET | /efactura/inbox/{inbound_id} Too üks sissetulev arve | efactura:read | — | 120 |
| GET | /efactura/inbox/{inbound_id}/download Laadi alla sissetuleva arve arhiiv | efactura:read | — | 120 |
| POST | /efactura/inbox/sync Too riigi e-arvete süsteemi uued sõnumid sissetulevasse kasti | efactura:read | — | 10 |
25 endpoints · https://api.4invoices.net/v1/openapi.json
Scope'id
- invoices:read
- invoices:write
- clients:read
- clients:write
- efactura:read
- efactura:submit
Riigi e-arvete süsteem
- Tegelik erinevus: kogu riigi e-arvete süsteemi ring (Rumeenias ANAF e-Factura) käib API kaudu, mitte ainult dokumendi loomine.
- POST /invoices/{id}/efactura/validate käivitab eelkontrolli (Rumeenias CIUS-RO) ja tagastab täpselt need väljad, mida riigi e-arvete süsteem tagasi lükkaks, ilma midagi saatmata.
- GET /invoices/{id}/xml genereerib UBL XML-i (Rumeenias CIUS-RO) ilma esitamata — kasulik oma arhiivi või sisemise auditi jaoks.
- POST /invoices/{id}/efactura/submit esitab arve riigi e-arvete süsteemi. See on pöördumatu: sama arve teist koopiat ei saa süsteemist tagasi võtta.
- Elutsükkel on normaliseeritud: not_sent → validating → queued → sent → processing → accepted | rejected | error. accepted tähendab seaduslikult edastatud; error on meie poolne edastusviga ja selle võib turvaliselt uuesti proovida.
- GET /efactura/submissions/{id}/download laadib arhiivi koos riigi e-arvete süsteemi allkirjastatud vastusega.
- Sissetulev pool on samuti olemas: POST /efactura/inbox/sync toob riigi e-arvete süsteemist uued sõnumid ja GET /efactura/inbox loetleb sinu tarnijate saadetud arved.
bash
# CIUS-RO preflight. Sends NOTHING to ANAF.
curl -sS -X POST "https://api.4invoices.net/v1/invoices/inv_01J7ABC/efactura/validate?include_xml=true" \
-H "Authorization: Bearer $ACCESS_TOKEN"
# → {"invoice_id":"inv_01J7ABC","valid":false,
# "errors":["buyer.county is required for RO buyers"],
# "xml_base64":"PD94bWwg..."}bash
curl -sS -X POST https://api.4invoices.net/v1/invoices/inv_01J7ABC/efactura/submit \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H 'Idempotency-Key: efactura-inv_01J7ABC-1'
# → {"submission_id":"sub_01J7XYZ","status":"queued"}python
import time, requests
BASE = "https://api.4invoices.net/v1"
TERMINAL = {"accepted", "rejected"}
H = {"Authorization": f"Bearer {token}"}
def wait_for_anaf(submission_id, timeout=900):
deadline = time.time() + timeout
delay = 15
while time.time() < deadline:
r = requests.get(f"{BASE}/efactura/submissions/{submission_id}", headers=H, timeout=30)
r.raise_for_status()
status = r.json()["status"]
if status in TERMINAL:
return r.json()
# /refresh asks ANAF directly and shares the 10/min submit bucket.
requests.post(f"{BASE}/efactura/submissions/{submission_id}/refresh", headers=H, timeout=30)
time.sleep(delay)
delay = min(delay * 2, 120)
raise TimeoutError(submission_id)Vead
- Iga 4xx ja 5xx vastab sama ümbrisega: { "error": { type, code, message, param?, doc_url, request_id, errors? } }.
- type on karm klass, mille järgi otsustad („kas uuesti proovida?”), ja code on püsiv põhjus, mille kaardistad oma süsteemi.
- param on rikkuva välja punktidega eraldatud tee, näiteks lines.0.vat_rate.
- errors[] ilmub, kui ühel päringul on probleeme rohkem kui ühes väljas.
- request_id logitakse meie poolel. Tsiteeri seda igas toepiletis — see täpsustab päringu.
- 404 tagastatakse ka teise tenant'i ID puhul: me ei kinnita kunagi, et kellegi teise andmed on olemas.
json
{
"error": {
"type": "invalid_request_error",
"code": "validation_failed",
"message": "Datele trimise nu sunt valide.",
"param": "lines.0.vat_rate",
"doc_url": "https://4invoices.net/ro/api-dezvoltatori#errors",
"request_id": "req_8a893f2f33d4472da8d6e144",
"errors": [
{ "param": "lines.0.vat_rate", "message": "VAT rate must be a percent (21), not a fraction", "type": "value_error" }
]
}
}| Staatus | Tüüp | Kood |
|---|---|---|
| 401 | authentication_error | missing_bearer_token |
| 401 | authentication_error | invalid_client |
| 401 | authentication_error | token_expired |
| 401 | authentication_error | invalid_token |
| 401 | authentication_error | unauthorized |
| 403 | permission_error | insufficient_scope |
| 403 | permission_error | forbidden |
| 404 | not_found_error | not_found |
| 409 | conflict_error | idempotency_key_reuse |
| 409 | conflict_error | idempotency_in_progress |
| 409 | conflict_error | no_series_configured |
| 422 | invalid_request_error | validation_failed |
| 422 | invalid_request_error | issuer_profile_incomplete |
| 422 | invalid_request_error | cius_ro_incomplete |
| 422 | invalid_request_error | cannot_storno_draft |
| 422 | invalid_request_error | nothing_to_storno |
| 422 | invalid_request_error | invalid_json_number |
| 429 | rate_limit_error | rate_limit_exceeded |
| 502 | upstream_error | upstream_error |
| 503 | service_unavailable_error | service_unavailable |
Päringupiirangud
| Grupp | Päringuid / minut | Mida see tähendab |
|---|---|---|
| read | 120 | GET *, POST /invoices/preview-totals, POST /invoices/{id}/efactura/validate |
| write | 30 | POST /invoices, POST /invoices/{id}/storno, POST|DELETE /invoices/{id}/payments, POST /clients |
| submit | 10 | POST /invoices/{id}/efactura/submit, POST /efactura/submissions/{id}/refresh, POST /efactura/inbox/sync |
- Piirangud on volituse kohta minutis: 120 lugemist, 30 kirjutamist, 10 e-arvete süsteemi operatsiooni (submit, refresh, inbox/sync).
- X-RateLimit-Limit, X-RateLimit-Remaining ja X-RateLimit-Reset ilmuvad IGAL vastusel, ka 429-l.
- 429 annab ka Retry-After sekundites. Järgi seda; ära proovi tihedas tsüklis uuesti.
- 10/min grupp on olemas, sest Rumeenia ANAF lubab umbes ühe sõnumiloendi päringu minutis maksukohustuslase numbri (CIF) kohta.
- Pane /efactura/inbox/sync ajastatult (cron), mitte agressiivsesse küsitlusse.
- Vajad suuremaid piire? Küsi kontakti kaudu, teatades oodatava päevamahu.
X-RateLimit-Limit · X-RateLimit-Remaining · X-RateLimit-Reset · Retry-After
http
HTTP/2 429
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1785312000
Retry-After: 17
Content-Type: application/json
{"error":{"type":"rate_limit_error","code":"rate_limit_exceeded",
"message":"...","doc_url":"https://4invoices.net/ro/api-dezvoltatori#errors",
"request_id":"req_..."}}javascript
// Järgi Retry-After; ära proovi uuesti ühtegi 4xx-i peale 429.
async function call(url, init, attempt = 0) {
const res = await fetch(url, init);
if (res.status === 429 || res.status >= 500) {
if (attempt >= 5) return res;
const retryAfter = Number(res.headers.get("Retry-After")) || 2 ** attempt;
await new Promise((r) => setTimeout(r, retryAfter * 1000));
return call(url, init, attempt + 1);
}
return res;
}
// Kirjutamise uuesti proovimisel PEAB kasutama SAMA Idempotency-Key'd, muidu väljastad
// teise fiskaaldokumendi.Juhendid teemade kaupa
Igal teemal on oma leht, kus on asjakohased lõpp-punktid, näited ja vead.
- Autentimine 4invoices API-sVaheta client_id ja client_secret ühetunnise Bearer-tokeni vastu — ainult serverist serverisse.
- Arvete väljastamine API kauduPOST /invoices koos Idempotency-Key'ga, käibemaks protsentidena, plus loend, storno ja märgistamine tasutuks.
- Kliendid ja otsing ametlikust äriregistristtax_id järgi dubleerimata lisamine või uuendamine (upsert) ja äriregistri päring (Rumeenias ANAF), et e-arvet tagasi ei lükataks.
- Riigi e-arvete süsteem API kauduEelkontroll (Rumeenias CIUS-RO), esitamine süsteemi, normaliseeritud staatus, allkirjastatud vastus ja sissetulev tarnijate kast.
- Numbriseeriad API-sIlma aktiivse fiskaalse seeriata (fiscale) annab väljastamine 409 no_series_configured.
- Veakoodid ja veaümbrisÜks kuju igal teel: type, code, message, param, doc_url, request_id ja errors.
- Päringupiirangud ja uuesti proovimised120 lugemist, 30 kirjutamist ja 10 e-arvete süsteemi operatsiooni minutis volituse kohta, X-RateLimit-* päistega.
Levinud vead
- Käibemaksu saatmine murdena (0.19) või arvuna 1. Mõlemad lükatakse tagasi; saada 19 või 21.
- Token iga päringu kohta. Token kehtib tund; puhverda see, muidu jõuad token-lõpp-punkti IP-põhise piirini.
- Uue idempotentsusvõtme genereerimine iga uuesti proovimise kohta — täpselt see stsenaarium tekitab dubleeritud arveid.
- Kutsumine brauseri JavaScriptist. CORS blokeerib kõik päritolud ja secret avaldataks igal juhul.
- Esitamine riigi e-arvete süsteemi ilma eelkontrollita. Vale esitust ei saa tagasi võtta.
- /efactura/submissions/{id}/refresh küsitlemine rohkem kui 10 korda minutis — see grupp on jagatud esitamisega.
- Arvete väljastamine enne, kui ettevõtte profiil on täielik ja aktiivne fiskaalne seeria olemas.
Arendajate küsimused ja vastused
Kuidas ma saan 4invoices API volitused?
Paneelis jaotises Arveldus → Seaded → API juurdepääs. Saad client_id ja client_secret; secret kuvatakse üks kord ja salvestatakse ainult räsina.
Kui kaua access_token kehtib?
3600 sekundit ehk üks tund. Puhverda see ja uuenda enne aegumist — tokeni lõpp-punktil on oma IP-põhine päringupiirang.
Kuidas ma saadan käibemaksumäära?
Protsendina: 21 tähendab 21%. Väärtused vahemikus (0, 1] lükatakse tagasi, seega nii 0.19 kui ka 1 ebaõnnestuvad valideerimisel.
Milliseid päringuid nõuab Idempotency-Key?
POST /invoices, POST /invoices/{id}/storno ja POST /invoices/{id}/efactura/submit. Võtmeid mäletatakse 24 tundi ja korduv esitus tagastab algse dokumendi koos päisega Idempotency-Replayed: true.
Kas ma saan arve riigi e-arvete süsteemi esitada otse API kaudu?
Jah — Rumeenia turul ANAF e-Factura süsteemi. Käivita eelkontroll lõpp-punktiga /efactura/validate, esita arve lõpp-punktiga /efactura/submit, küsi normaliseeritud staatust lõpp-punktist /efactura/submissions/{id} ja laadi alla süsteemi allkirjastatud vastus.
Millised on päringupiirangud?
Volituse kohta minutis: 120 lugemist, 30 kirjutamist ja 10 e-arvete süsteemi operatsiooni. Iga vastus sisaldab X-RateLimit-* päiseid ning 429 lisab Retry-After.
Kas ma saan API-d oma esilehelt kutsuda?
Ei. See on ainult serverist serverisse: ükski brauseri päritolu ei läbi CORS-i ning client_secret ei kuulu koodi, mis jõuab külastajani.
Miks ma saan esimesel arvel vea issuer_profile_incomplete?
Ettevõtte profiil on puudulik või aktiivset fiskaalset seeriat pole. Täida mõlemad paneelis; API keeldub koostamast vigast fiskaaldokumenti.