Landskerfi rafrænna reikninga í gegnum API

Forathugun (CIUS-RO fyrir Rúmeníu), sending í landskerfið, normaliseruð staða, undirritað svar og innhólf innkominna reikninga frá birgjum.

Forathugun (CIUS-RO fyrir Rúmeníu), sending í landskerfið, normaliseruð staða, undirritað svar og innhólf innkominna reikninga frá birgjum.

← Til baka í API-skjölin

Fyrsti reikningurinn þinn í 6 skrefum

  1. Keyrðu POST /v1/invoices/{id}/efactura/validate. Forathugunin (CIUS-RO fyrir Rúmeníu) sendir ekkert til landskerfisins og segir þér nákvæmlega hvað yrði hafnað.
  2. Skráðu hann með POST /v1/invoices/{id}/efactura/submit, alltaf með Idempotency-Key. Þú færð submission_id og stöðu.
  3. Fylgstu með GET /v1/efactura/submissions/{id} þar til hann nær accepted eða rejected.
  4. Þvingaðu nýja fyrirspurn til landskerfis rafrænna reikninga með POST /v1/efactura/submissions/{id}/refresh — hún telst í 10-á-mínútu fötuna.
  5. Sæktu undirritað svarskjalasafn landskerfisins með GET /v1/efactura/submissions/{id}/download.

Allir endapunktar

AðferðEndapunkturScopeIdempotency-KeyBeiðnir / mínútu
GET/invoices/{invoice_id}/xml
Sækja UBL XML (CIUS-RO fyrir Rúmeníu)
invoices:read—120
POST/invoices/{invoice_id}/efactura/validate
Forathugun — staðfesta án sendingar
efactura:read—120
POST/invoices/{invoice_id}/efactura/submit
Senda reikninginn í landskerfi rafrænna reikninga
efactura:submitkrafist10
GET/efactura/submissions
Lista sendingar í landskerfið
efactura:read—120
GET/efactura/submissions/{submission_id}
Sækja eina sendingu
efactura:read—120
POST/efactura/submissions/{submission_id}/refresh
Biðja landskerfið um núverandi stöðu
efactura:read—10
GET/efactura/submissions/{submission_id}/download
Sækja undirritað svarskjalasafn
efactura:read—120
GET/efactura/inbox
Reikningar birgja sem bárust um landskerfið
efactura:read—120
GET/efactura/inbox/{inbound_id}
Sækja einn innkominn reikning
efactura:read—120
GET/efactura/inbox/{inbound_id}/download
Sækja skjalasafn innkomins reiknings
efactura:read—120
POST/efactura/inbox/sync
Sækja ný skilaboð úr landskerfinu í innhólfið
efactura:read—10

Hvað eru forritaskil 4invoices

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)
bash
# Pull new SPV messages, then read the inbound supplier invoices.
curl -sS -X POST https://api.4invoices.net/v1/efactura/inbox/sync \
  -H "Authorization: Bearer $ACCESS_TOKEN"

curl -sS "https://api.4invoices.net/v1/efactura/inbox?limit=50" \
  -H "Authorization: Bearer $ACCESS_TOKEN"

# ANAF allows roughly ONE message-list call per minute per CIF,
# þannig að /inbox/sync telst í 10/mín sendingarfötuna. Keyrðu það af cron, ekki kanna það.

https://api.4invoices.net/v1 · https://api.4invoices.net/v1/openapi.json

Ferðin um landskerfi rafrænna reikninga

not_sentvalidatingqueuedsentprocessingacceptedrejectederror

Villur

StaðaTegundKóði
422invalid_request_errorcius_ro_incomplete

Algeng mistök

  • Normaliseraður lífsferill: not_sent → validating → queued → sent → processing → accepted | rejected | error.
  • accepted þýðir að hann var löglega sendur. rejected þýðir að landskerfi rafrænna reikninga hafnaði honum: lagfærðu og sendu aftur. error er flutningsbilun hjá okkur og er óhætt að endurreyna.
  • Sending er óafturkræf: afrit af sama reikningi verður ekki tekið til baka úr landskerfinu. Þess vegna er Idempotency-Key skylda.
  • GET /v1/invoices/{id}/xml gefur þér UBL XML (CIUS-RO fyrir Rúmeníu) án nokkurrar sendingar — fyrir þitt eigið safn eða endurskoðun.
  • Innhólf: POST /v1/efactura/inbox/sync sækir ný skilaboð, GET /v1/efactura/inbox listar þau, og /download sækir skjalasafn hvers innkomins reiknings.
  • e-Factura-endapunktarnir virka aðeins fyrir rúmenska leigjendur; annars færðu 404.

Spurningar og svör fyrir þróendur

Hversu lengi er landskerfi rafrænna reikninga að samþykkja reikning?

Það er breytilegt, frá sekúndum upp í klukkustundir. Ekki hindra söluna: sendu ósamstillt og meðhöndlaðu accepted og rejected sem atburði.

Get ég fengið XML reikningsins án þess að senda nokkuð til landskerfisins?

Já. GET /v1/invoices/{id}/xml myndar skjalið án sendingar, og /efactura/validate með include_xml=true skilar því base64-kóðuðu.

Hversu oft get ég keyrt inbox/sync?

Í mesta lagi 10 köll á mínútu, en í Rúmeníu leyfir ANAF í reynd u.þ.b. eitt kall á skilaboðalista á mínútu á hvert CIF. Keyrðu það af cron, á nokkurra mínútna fresti.

Hvað geri ég ef staðan er áfram error?

error er flutnings- eða auðkenningarbilun hjá okkur, þannig að óhætt er að endurreyna. Ef hún heldur áfram sendu request_id til aðstoðar.