API üzərindən milli elektron qaimə

İlkin yoxlama (Rumıniya üçün CIUS-RO), milli sistemə təqdimat, normallaşdırılmış status, imzalanmış cavab və təchizatçıların gələn qutusu.

İlkin yoxlama (Rumıniya üçün CIUS-RO), milli sistemə təqdimat, normallaşdırılmış status, imzalanmış cavab və təchizatçıların gələn qutusu.

← API sənədləşməsinə qayıt

6 addımda ilk fakturanız

  1. POST /v1/invoices/{id}/efactura/validate-i işə salın. İlkin yoxlama (Rumıniya üçün CIUS-RO) milli sistemə heç nə göndərmir və nəyin rədd olunacağını dəqiq göstərir.
  2. POST /v1/invoices/{id}/efactura/submit ilə təqdim edin, həmişə Idempotency-Key ilə. submission_id və status alırsınız.
  3. accepted və ya rejected olana qədər GET /v1/efactura/submissions/{id} ilə yoxlayın.
  4. POST /v1/efactura/submissions/{id}/refresh ilə milli elektron qaimə sistemindən təzə sorğu tələb edin — dəqiqədə 10 limitinə daxildir.
  5. GET /v1/efactura/submissions/{id}/download ilə milli elektron qaimə sisteminin imzalanmış cavab arxivini yükləyin.

Bütün son nöqtələr

MetodSon nöqtəƏhatəIdempotency-KeySorğu / dəqiqə
GET/invoices/{invoice_id}/xml
UBL XML-i yükləyir (Rumıniya üçün CIUS-RO)
invoices:read—120
POST/invoices/{invoice_id}/efactura/validate
İlkin yoxlama — göndərmədən yoxlayır
efactura:read—120
POST/invoices/{invoice_id}/efactura/submit
Fakturanı milli elektron qaimə sisteminə təqdim edir
efactura:submittələb olunur10
GET/efactura/submissions
Milli sistemə təqdimatları siyahılayır
efactura:read—120
GET/efactura/submissions/{submission_id}
Bir təqdimatı gətirir
efactura:read—120
POST/efactura/submissions/{submission_id}/refresh
Milli sistemdən cari vəziyyəti soruşur
efactura:read—10
GET/efactura/submissions/{submission_id}/download
İmzalanmış cavab arxivini yükləyir
efactura:read—120
GET/efactura/inbox
Milli sistem vasitəsilə alınan təchizatçı fakturaları
efactura:read—120
GET/efactura/inbox/{inbound_id}
Bir gələn fakturanı gətirir
efactura:read—120
GET/efactura/inbox/{inbound_id}/download
Gələn faktura arxivini yükləyir
efactura:read—120
POST/efactura/inbox/sync
Milli sistemdən yeni mesajları gələn qutuya çəkir
efactura:read—10

4invoices API nədir

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,
# buna görə /inbox/sync dəqiqədə 10 qrupundan sayılır. Cron-a qoyun, polling etməyin.

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

Milli elektron qaimə dövrü

not_sentvalidatingqueuedsentprocessingacceptedrejectederror

Xətalar

StatusNövKod
422invalid_request_errorcius_ro_incomplete

Ümumi səhvlər

  • Normallaşdırılmış həyat dövrü: not_sent → validating → queued → sent → processing → accepted | rejected | error.
  • accepted qanuni ötürüldüyü deməkdir. rejected milli elektron qaimə sisteminin rədd etdiyi deməkdir: düzəldin və yenidən təqdim edin. error bizim tərəfdə nəqliyyat xətasıdır və təhlükəsiz şəkildə təkrar cəhd edilə bilər.
  • Təqdimat geri dönməzdir: eyni fakturanın ikinci nüsxəsi milli sistemdən geri alına bilməz. Buna görə Idempotency-Key məcburidir.
  • GET /v1/invoices/{id}/xml təqdimat olmadan UBL XML verir (Rumıniya üçün CIUS-RO) — öz arxivinizə və ya audit üçün.
  • Gələn qutu: POST /v1/efactura/inbox/sync yeni mesajları çəkir, GET /v1/efactura/inbox onları siyahılayır, /download isə hər gələn fakturanın arxivini yükləyir.
  • e-Factura son nöqtələri yalnız rumıniyalı müştərilər üçün işləyir; əks halda 404 alırsınız.

İnkişafçılar üçün suallar və cavablar

Milli elektron qaimə sistemi fakturanı qəbul etmək üçün nə qədər vaxt aparır?

Saniyələrdən saatlara qədər dəyişir. Satışı bloklamayın: asinxron təqdim edin və accepted və rejected-i hadisə kimi qəbul edin.

Milli sistemə heç nə göndərmədən faktura XML-ini ala bilərəmmi?

Bəli. GET /v1/invoices/{id}/xml sənədi təqdimat olmadan generasiya edir, include_xml=true ilə /efactura/validate isə onu base64 kodlaşdırılmış qaytarır.

inbox/sync-i nə qədər tez-tez işlədə bilərəm?

Dəqiqədə ən çox 10 çağırış, lakin praktikada Rumıniyada ANAF hər CIF üçün dəqiqədə təxminən bir mesaj siyahısı çağırışına icazə verir. Onu cron-dan, hər bir neçə dəqiqədə bir işlədin.

Status error-də qalarsa nə etməliyəm?

error bizim tərəfdə nəqliyyat və ya autentifikasiya xətasıdır, buna görə təhlükəsiz şəkildə təkrar cəhd edilə bilər. Davam edərsə, request_id-ni dəstəyə göndərin.