Документація

Документація 4invoices має два шари: панель, якою користуються без коду, і публічне API, через яке ваша система виставляє рахунки й доводить документ через національну систему електронного фактурування (у Румунії: e-Factura ANAF). Ця сторінка — вхід до другого шару.

Відкрити повну документацію API →

Що можна автоматизувати

Публічне API охоплює виставлення рахунків і проформ, сторно, клієнтів із перевіркою в реєстрі юридичних осіб (у Румунії: реєстр ANAF), серії нумерації та весь національний шлях електронного фактурування (у Румунії: e-Factura): передперевірку CIUS-RO, подання до SPV, відстеження статусу, підписану відповідь і вхідні рахунки від постачальників.

https://api.4invoices.net/v1 · 25 endpoints · Специфікація OpenAPI (без ключа)

invoices:read · invoices:write · clients:read · clients:write · efactura:read · efactura:submit

Автентифікація

Перед першим викликомВиставлення рахунків → Налаштування → Доступ до API
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"}
Лише сервер-до-сервер. Ніколи не викликайте API з браузерного JavaScript: client_secret потрапить до відвідувача, а CORS усе одно блокує будь-який джерело.

Перший рахунок за 6 кроків

  1. Згенеруйте облікові дані в панелі, у Виставлення рахунків → Налаштування → Доступ до API, і скопіюйте client_secret — його показують лише один раз.
  2. Заповніть профіль компанії та активуйте щонайменше одну серію типу fiscale, інакше виставлення поверне issuer_profile_incomplete або no_series_configured.
  3. Обміняйте облікові дані на токен: POST /v1/auth/token із grant_type client_credentials. Токен живе одну годину — кешуйте його, не беріть новий на кожен запит.
  4. Виставте рахунок: POST /v1/invoices із заголовком Idempotency-Key і vat_rate у відсотках (21, а не 0.21).
  5. Виконайте передперевірку (у Румунії — CIUS-RO) через POST /v1/invoices/{id}/efactura/validate, а потім надішліть рахунок до національної системи електронного виставлення рахунків (у Румунії — ANAF) через POST /v1/invoices/{id}/efactura/submit.
  6. Стежте за станом через GET /v1/efactura/submissions/{id}, доки він не стане accepted або rejected.
bash
# 1 — токен (1 година, зберігайте в кеші)
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 — виставте рахунок (Idempotency-Key ОБОВ'ЯЗКОВИЙ)
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'

Посібники за темами

Кожна тема має власну сторінку з відповідними ендпоїнтами, прикладами та помилками.

Відкрити повну документацію API →