WelcomeBun venit
Fint exposes a JSON API that lets developers integrate Romanian financial services into their app: open-banking statements, e-invoicing, company lookups and official exchange rates.
Fint expune un API JSON care permite dezvoltatorilor să integreze servicii financiare românești în aplicația lor: extrase bancare open banking, facturare electronică, căutări de companii și cursuri oficiale de schimb.
Versiunea în limba română este oferită pentru comoditate și este tradusă automat. Versiunea în limba engleză este cea de referință - pentru numele câmpurilor, exemplele de cod și detaliile de integrare îți recomandăm să urmezi documentația în engleză (comută la EN din colțul de sus).
Fint account required. API access requires a pre-registered and active Fint account. If you do not have one yet, sign up and complete onboarding at https://fint.ro/.
Cont Fint necesar. Accesul la API necesită un cont Fint preînregistrat și activ. Dacă nu ai încă unul, înregistrează-te și finalizează onboarding-ul la https://fint.ro/.
Production API. These docs describe the live production API at https://api.fint.ro. To build and test without touching real providers or data, use the Sandbox.
API de producție. Această documentație descrie API-ul live de producție de la https://api.fint.ro. Pentru a dezvolta și testa fără a afecta furnizori sau date reale, folosește Sandbox.
ServicesServicii
Fint exposes multiple independent services, each activated separately on a company license. You can use any service on its own or combine them: for example, use eFactura alone to handle Romanian e-invoicing, pair it with Extrase to reconcile bank transactions against invoices, or use Info CUI and Schimb valutar as utility services in any financial workflow. Each company API key you create specifies exactly which services it is allowed to call.
Fint expune mai multe servicii independente, fiecare activat separat pe licența unei companii. Poți folosi orice serviciu individual sau le poți combina: de exemplu, folosește eFactura singur pentru facturarea electronică românească, asociază-l cu Extrase pentru reconcilierea tranzacțiilor bancare cu facturile, sau folosește Info CUI și Schimb valutar ca servicii utilitare în orice flux financiar. Fiecare cheie API de companie pe care o creezi specifică exact ce servicii are voie să apeleze.
Base URLURL de bază
All API requests are made to the base URL:
Toate cererile API se fac către URL-ul de bază:
https://api.fint.roEvery request must be authenticated with two API keys. See Authentication to get started, or jump to the Quick Start for your first call. Shared response and error conventions are documented under Conventions.
Fiecare cerere trebuie autentificată cu două chei API. Consultă Autentificare pentru a începe, sau treci la Start rapid pentru primul apel. Convențiile comune pentru răspunsuri și erori sunt documentate la Convenții.
Account modelModel de cont
Fint structures access around three entities: an organization, the companies it owns, and the users who belong to it. Understanding this hierarchy is the foundation for working with API keys and services.
Fint structurează accesul în jurul a trei entități: o organizație, companiile pe care le deține și utilizatorii care aparțin organizației. Înțelegerea acestei ierarhii este baza pentru lucrul cu cheile API și serviciile.
OrganizationOrganizație
An organization is the top-level entity registered on Fint. It is the billing unit and owns everything beneath it: companies, API keys, and team members. Every API request must be authenticated with the organization key (X-Org-Key), which you create under User menu → API → Chei API in the Fint UI.
Organizația este entitatea de nivel superior înregistrată pe Fint. Este unitatea de facturare și deține tot ce se află sub ea: companii, chei API și membri ai echipei. Fiecare cerere API trebuie autentificată cu cheia de organizație (X-Org-Key), pe care o creezi în Meniu utilizator → API → Chei API în interfața Fint.
An organization can own multiple companies, each representing a distinct legal entity or operational scope. This makes Fint suitable not only for businesses integrating their own financial operations, but also for software companies and SaaS platforms that embed Fint as a third-party provider for their clients: each client company can be managed as a separate company under the same organization.
O organizație poate deține mai multe companii, fiecare reprezentând o entitate juridică sau un domeniu operațional distinct. Asta face Fint potrivit nu doar pentru afaceri care își integrează propriile operațiuni financiare, ci și pentru companii de software și platforme SaaS care integrează Fint ca furnizor terț pentru clienții lor: fiecare companie client poate fi gestionată ca o companie separată sub aceeași organizație.
Company (license)Companie (licență)
A company, also called a license, is the operational unit within an organization. Each company typically corresponds to a Romanian legal entity with its own CUI. Companies activate services independently: a company may have Extrase and eFactura enabled while another in the same organization has only Info CUI.
O companie, numită și licență, este unitatea operațională din cadrul unei organizații. Fiecare companie corespunde de obicei unei entități juridice românești cu propriul CUI. Companiile activează serviciile independent: o companie poate avea Extrase și eFactura activate, iar alta din aceeași organizație poate avea doar Info CUI.
Each company holds one or more company-level API keys (X-Api-Key), created under Configurare → Chei API in the Fint UI sidebar for the active company. Every company key is scoped to exactly one company and to a chosen subset of that company's active services. A request made with a company key always acts on that specific company.
Fiecare companie deține una sau mai multe chei API de nivel companie (X-Api-Key), create în Configurare → Chei API din bara laterală Fint, pentru compania activă. Fiecare cheie de companie este limitată la exact o companie și la un subset ales din serviciile active ale companiei. O cerere făcută cu o cheie de companie acționează întotdeauna asupra acelei companii.
Companies, services and company API keys can be managed in the Fint UI or programmatically via the Organization API (Enterprise plan). See Self-service API for what can be done through the UI versus the API.
Companiile, serviciile și cheile API de companie pot fi gestionate în interfața Fint sau programatic prin API-ul Organizație (planul Enterprise). Vezi API self-service pentru ce se poate face prin interfață față de API.
Users and rolesUtilizatori și roluri
Users are team members invited to an organization. Each user has one of two roles:
Utilizatorii sunt membri ai echipei invitați într-o organizație. Fiecare utilizator are unul din două roluri:
- Admin: full control over the organization, including managing companies, inviting and removing users, creating and deleting API keys, billing, and configuring service consents.
- Admin: control complet asupra organizației, inclusiv gestionarea companiilor, invitarea și eliminarea utilizatorilor, crearea și ștergerea cheilor API, facturare și configurarea consimțămintelor pentru servicii.
- User: operational access to the platform with limited administrative capabilities. Admins define which actions a user may perform.
- User: acces operațional la platformă cu capabilități administrative limitate. Adminii definesc ce acțiuni poate efectua un utilizator.
User roles are managed entirely in the Fint UI and do not affect API key permissions directly. API access is controlled by the key's own service scope, regardless of the role of the person who created the key.
Rolurile utilizatorilor sunt gestionate integral în interfața Fint și nu afectează direct permisiunile cheilor API. Accesul la API este controlat de domeniul de servicii al cheii, indiferent de rolul persoanei care a creat cheia.
How it maps to the APICum se reflectă în API
Every API request carries both keys: X-Org-Key identifies the organization; X-Api-Key identifies the company and enforces its service scope. You never pass a company ID or CUI as an authorization parameter; Fint resolves both from the keys and validates that the company key belongs to the organization key's organization.
Fiecare cerere API poartă ambele chei: X-Org-Key identifică organizația; X-Api-Key identifică compania și aplică domeniul ei de servicii. Nu trimiți niciodată un ID de companie sau CUI ca parametru de autorizare; Fint le rezolvă pe ambele din chei și validează că cheia de companie aparține organizației cheii de organizație.
| ConceptConcept | API representationReprezentare API | Where to createUnde se creează |
|---|---|---|
| OrganizationOrganizație | X-Org-Key header | User menu → API → Chei APIMeniu utilizator → API → Chei API |
| CompanyCompanie | X-Api-Key header | Configurare → Chei API |
| User roleRol utilizator | Not sent in API requestsNu se trimite în cererile API | Team management in the Fint UIGestionarea echipei în interfața Fint |
See Authentication for the full list of header requirements and error codes.
Consultă Autentificare pentru lista completă a cerințelor de header și codurilor de eroare.
Quick StartStart rapid
Make your first authenticated request in a few minutes.
Fă prima cerere autentificată în câteva minute.
StepsPași
- Make sure you have an active company with the service activated Fint requires at least one active company (license) before the API can be used. A first company is created automatically when you sign up; you can add more from the dashboard billing / subscription page or, on the Enterprise plan, via the Organization API. The company must also have the service you intend to call (eFactura, Extrase, Info CUI, Schimb valutar) activated. See the Account model for the organization → company hierarchy.
- Asigură-te că ai o companie activă cu serviciul activat Fint necesită cel puțin o companie activă (licență) înainte de a putea folosi API-ul. O primă companie este creată automat la înregistrare; poți adăuga altele din pagina de facturare / abonament a panoului sau, pe planul Enterprise, prin API-ul Organizație. Compania trebuie să aibă și serviciul pe care vrei să-l apelezi (eFactura, Extrase, Info CUI, Schimb valutar) activat. Vezi Modelul de cont pentru ierarhia organizație → companie.
- Get your organization key In the Fint dashboard, open the user menu → API → Chei API and create an organization key. This identifies your organization.
- Obține cheia de organizație În panoul Fint, deschide meniul utilizator → API → Chei API și creează o cheie de organizație. Aceasta identifică organizația ta.
- Get a company key Switch to the company you want to act on, then go to Configurare → Chei API in the sidebar and create a company key. Choose which services the key may call - each must be active on the company (eFactura, Extrase, Info CUI, Schimb valutar).
- Obține o cheie de companie Comută la compania asupra căreia vrei să acționezi, apoi mergi la Configurare → Chei API din bara laterală și creează o cheie de companie. Alege ce servicii poate apela cheia - fiecare trebuie să fie activ pe companie (eFactura, Extrase, Info CUI, Schimb valutar).
-
Send both keys on every request
Pass the org key as
X-Org-Keyand the company key asX-Api-Key. -
Trimite ambele chei la fiecare cerere
Trimite cheia de organizație ca
X-Org-Keyși cheia de companie caX-Api-Key.
Your first callPrimul apel
Look up a Romanian company by its CUI:
Caută o companie românească după CUI:
curl -sS 'https://api.fint.ro/v1/infocui?cui=12345678' \
-H 'X-Org-Key: YOUR_ORG_KEY' \
-H 'X-Api-Key: YOUR_COMPANY_KEY'
A successful response returns the company data envelope:
Un răspuns reușit returnează envelopa cu datele companiei:
{
"status": "success",
"msg": null,
"reason": null,
"data": {
"cui": "12345678",
"name": "Exemplu SRL",
"registrationNumber": "J40/1234/2010",
"vatRegistered": true
}
}
Path note. On the API host api.fint.ro, endpoints are reachable at /v1/....
Notă despre cale. Pe hostul API api.fint.ro, endpoint-urile sunt accesibile la /v1/....
Next: read Authentication for key scoping and error codes, then explore the service references.
Urmează: citește Autentificare pentru domeniul cheilor și codurile de eroare, apoi explorează referințele serviciilor.
AuthenticationAutentificare
Fint uses dual-key authentication: an organization key plus a company key, sent on every request.
Fint folosește autentificare cu două chei: o cheie de organizație plus o cheie de companie, trimise la fiecare cerere.
Required headersHeader-e obligatorii
| HeaderHeader | ValueValoare |
|---|---|
X-Org-Key | Organization key (identifies your organization)Cheie de organizație (identifică organizația ta) |
X-Api-Key | Company key (selects the company and its allowed services)Cheie de companie (selectează compania și serviciile permise) |
Alternatively, the company key may be sent as Authorization: Bearer <company_key>; the org key must still be sent as X-Org-Key.
Alternativ, cheia de companie poate fi trimisă ca Authorization: Bearer <company_key>; cheia de organizație trebuie trimisă tot ca X-Org-Key.
curl -sS 'https://api.fint.ro/v1/extrase/accounts' \
-H 'X-Org-Key: YOUR_ORG_KEY' \
-H 'X-Api-Key: YOUR_COMPANY_KEY'
Key scopingDomeniul cheilor
Two key types work together:
Două tipuri de chei lucrează împreună:
- Organization key: one per organization, created under User menu → API → Chei API. Identifies the organization; it has no per-service scope.
- Cheie de organizație: una per organizație, creată în Meniu utilizator → API → Chei API. Identifică organizația; nu are domeniu per serviciu.
- Company key: one per company, created under Configurare → Chei API in the sidebar for the active company. Selects which company the request acts on and which services the key may call.
- Cheie de companie: una per companie, creată în Configurare → Chei API din bara laterală, pentru compania activă. Selectează compania asupra căreia acționează cererea și serviciile pe care cheia le poate apela.
Company keys carry a services set (efactura, extrase, infocui, schimbvalutar) enforced at runtime. In addition, the company’s license must have the called service activated.
Cheile de companie poartă un set services (efactura, extrase, infocui, schimbvalutar) aplicat la runtime. În plus, licența companiei trebuie să aibă serviciul apelat activat.
No cui for authorization. eFactura, Extrase and Schimb valutar resolve the company from the company key; do not send cui for authorization. The only exception is Info CUI, where cui in the query string is the lookup target, not an auth parameter.
Fără cui pentru autorizare. eFactura, Extrase și Schimb valutar rezolvă compania din cheia de companie; nu trimite cui pentru autorizare. Singura excepție este Info CUI, unde cui din query string este ținta căutării, nu un parametru de autentificare.
Authentication errorsErori de autentificare
All errors use status: "error" with a human-readable msg and a stable reason. Branch on reason.
Toate erorile folosesc status: "error" cu un msg lizibil și un reason stabil. Ramifică pe reason.
| HTTP | reason | WhenCând |
|---|---|---|
| 401 | missing_org_api_key | No X-Org-Key headerLipsește header-ul X-Org-Key |
| 401 | missing_api_key | No company key / Bearer tokenLipsește cheia de companie / token Bearer |
| 401 | invalid_org_api_key | Unknown or deleted org keyCheie de organizație necunoscută sau ștearsă |
| 401 | invalid_api_key | Unknown or deleted company keyCheie de companie necunoscută sau ștearsă |
| 403 | org_api_key_disabled | Org key exists but disabledCheia de organizație există dar este dezactivată |
| 403 | organization_disabled | Organization is not enabledOrganizația nu este activă |
| 403 | api_key_disabled | Company key exists but disabledCheia de companie există dar este dezactivată |
| 403 | license_disabled | Linked license is not enabledLicența asociată nu este activă |
| 403 | api_key_service_denied | Company key’s services don’t include the called serviceServiciile cheii de companie nu includ serviciul apelat |
| 403 | license_service_denied | Service not activated on the companyServiciul nu este activat pe companie |
| 403 | org_mismatch | Company key’s license is not in the org key’s organizationLicența cheii de companie nu aparține organizației cheii de organizație |
| 405 | method_not_allowed | Wrong HTTP method for the endpointMetodă HTTP greșită pentru endpoint |
| 429 | limit_exceeded | Usage at/over plan limit with extra charges offUtilizare la/peste limita planului, fără taxe suplimentare activate |
Extrase
PSD2 open-banking accounts and transactions, already synchronized from connected banks. Reads return stored Fint data only.
Conturi și tranzacții PSD2 open banking, deja sincronizate din băncile conectate. Citirile returnează doar datele stocate în Fint.
Service access. The extrase service must be allowed on your company key and activated on that company’s license. Fint identifies the company from the company key, so you do not send it yourself.
Acces serviciu. Serviciul extrase trebuie permis pe cheia de companie și activat pe licența companiei. Fint identifică compania din cheia de companie, deci nu o trimiți tu.
ConsentConsimțământ
An Extrase consent is a PSD2 authorization for Fint to read a company’s bank accounts and transactions at a specific bank. It is established when an authorized person completes the bank’s OAuth flow in Fint’s open-banking onboarding. The consent is recorded with status and a validUntil date on your company license, and Fint keeps accounts, balances, and transactions synchronized for you to read. Each connected bank requires its own consent.
Un consimțământ Extrase este o autorizare PSD2 pentru ca Fint să citească conturile bancare și tranzacțiile unei companii la o anumită bancă. Se stabilește când o persoană autorizată finalizează fluxul OAuth al băncii în onboarding-ul open banking Fint. Consimțământul este înregistrat cu status și o dată validUntil pe licența companiei tale, iar Fint menține conturile, soldurile și tranzacțiile sincronizate pentru a fi citite. Fiecare bancă conectată necesită propriul consimțământ.
You can obtain consent in three ways:
Poți obține consimțământul în trei moduri:
- Fint UI: sign in to Fint, go to Extrase → Conturi, pick a bank, and complete the bank authorization flow.
- Interfața Fint: autentifică-te în Fint, mergi la Extrase → Conturi, alege o bancă și finalizează fluxul de autorizare bancară.
- Share link (delegated): from the Fint UI, generate a 7-day onboarding link and send it to someone who can authorize at the bank; they complete the browser flow for your company license.
- Link de partajare (delegat): din interfața Fint, generează un link de onboarding valabil 7 zile și trimite-l cuiva care poate autoriza la bancă; acea persoană finalizează fluxul în browser pentru licența companiei tale.
- API (self-service): call
/onboardingto generate a share link, have the authorized person open it in a browser and complete bank authorization, then poll/consentsuntil the target bank showsconsentStatus: enabled. See Onboarding & consentOnboarding și consimțământ below. - API (self-service): apelează
/onboardingpentru a genera un link de partajare, lasă persoana autorizată să-l deschidă în browser și să finalizeze autorizarea bancară, apoi interoghează/consentspână când banca țintă afișeazăconsentStatus: enabled. Vezi Onboarding & consentOnboarding și consimțământ mai jos.
The bank authorization step can be completed only by a person who can authenticate with that bank as the PSU (payment service user) for the accounts being connected. Steps vary by bank: OAuth redirect, internet banking app approval, or manual confirmation after PSU ID or IBAN collection where required. Fint does not collect or store internet banking passwords, PINs, or OTP/token codes.
Pasul de autorizare bancară poate fi finalizat doar de o persoană care se poate autentifica la banca respectivă ca PSU (utilizator de servicii de plată) pentru conturile conectate. Pașii variază în funcție de bancă: redirect OAuth, aprobare în aplicația de internet banking sau confirmare manuală după colectarea ID-ului PSU sau IBAN-ului, unde este necesar. Fint nu colectează și nu stochează parole de internet banking, PIN-uri sau coduri OTP/token.
The public API reads stored data only; it does not create consents or call the bank. /accounts returns stored accounts even from disabled consents (see consentStatus and consentValidUntil on each account). /transactions and /transaction/{uid} include data from enabled consents only. Without enabled consents, API calls succeed but return empty transaction data.
API-ul public citește doar date stocate; nu creează consimțăminte și nu apelează banca. /accounts returnează conturi stocate chiar și din consimțăminte dezactivate (vezi consentStatus și consentValidUntil pe fiecare cont). /transactions și /transaction/{uid} includ date doar din consimțăminte activate. Fără consimțăminte activate, apelurile API reușesc dar returnează date de tranzacții goale.
Set up bank consents in Fint before expecting account and transaction data via the API.
Configurează consimțămintele bancare în Fint înainte de a aștepta date de cont și tranzacții prin API.
Onboarding & consentOnboarding și consimțământ
API-only flow for delegated bank authorization: generate a share link with /onboarding, have the authorized person complete the bank’s OAuth flow, then poll /consents until the target bank’s entry shows consentStatus: enabled.
Flux doar prin API pentru autorizare bancară delegată: generează un link de partajare cu /onboarding, lasă persoana autorizată să finalizeze fluxul OAuth al băncii, apoi interoghează /consents până când înregistrarea băncii țintă afișează consentStatus: enabled.
Create onboarding linkCreează link de onboarding
Creates a 7-day share link the end-user opens in a browser to connect a bank account. The link opens Fint’s bank-selection and OAuth consent flow.
Creează un link de partajare valabil 7 zile pe care utilizatorul final îl deschide în browser pentru a conecta un cont bancar. Link-ul deschide fluxul de selecție a băncii și consimțământul OAuth Fint.
Example requestExemplu de cerere
curl -sS -X POST 'https://api.fint.ro/v1/extrase/onboarding' \
-H 'X-Org-Key: YOUR_ORG_KEY' \
-H 'X-Api-Key: YOUR_COMPANY_KEY' \
-H 'Content-Type: application/json' \
-d '{}'
ResponseRăspuns
{
"status": "success",
"data": {
"authLink": "https://app.fint.ro/onboarding/extrase?token=...",
"expiresOn": "2026-07-04 08:00:00"
}
}
Check consentsVerifică consimțămintele
Returns all bank consents for the company key’s license - one entry per bank (de-duplicated, latest first). Returns an empty list when no consents exist.
Returnează toate consimțămintele bancare pentru licența cheii de companie - o intrare per bancă (deduplicat, cel mai recent primul). Returnează o listă goală când nu există consimțăminte.
Example requestExemplu de cerere
curl -sS 'https://api.fint.ro/v1/extrase/consents' \
-H 'X-Org-Key: YOUR_ORG_KEY' \
-H 'X-Api-Key: YOUR_COMPANY_KEY'
Response (consents present)Răspuns (consimțăminte prezente)
{
"status": "success",
"data": {
"consents": [
{
"bankCode": "BCR",
"bankName": "BCR Bank",
"consentStatus": "enabled",
"validUntil": "2026-09-01 00:00:00",
"updatedOn": "2026-06-01 12:00:00"
}
],
"total": 1
}
}
Response (no consents)Răspuns (fără consimțăminte)
{
"status": "success",
"msg": null,
"reason": null,
"data": {
"consents": [],
"total": 0
}
}
List accountsListează conturi
Returns all stored accounts for the company key’s license, including accounts from disabled consents. The account uid is the public identifier. This is a GET endpoint and takes no request body.
Returnează toate conturile stocate pentru licența cheii de companie, inclusiv conturi din consimțăminte dezactivate. uid contului este identificatorul public. Este un endpoint GET și nu primește corp de cerere.
Example requestExemplu de cerere
curl -sS 'https://api.fint.ro/v1/extrase/accounts' \
-H 'X-Org-Key: YOUR_ORG_KEY' \
-H 'X-Api-Key: YOUR_COMPANY_KEY'
ResponseRăspuns
{
"status": "success",
"msg": null,
"reason": null,
"data": {
"accounts": [
{
"uid": "a1b2c3d4e5f64789a0123456789abcde",
"status": "enabled",
"iban": "RO49RNCB0000000000000001",
"currency": "RON",
"balance": "123.45",
"name": "Cont curent",
"ownerName": "Exemplu SRL",
"product": "Current Account",
"bic": "RNCBROBU",
"bank": {
"code": "BCR",
"name": "BCR Bank",
"bic": "RNCB",
"icon": "https://cdn.fint.ro/image/bank/icon/bcr.png"
},
"consentStatus": "enabled",
"consentValidUntil": "2026-12-31",
"lastTransactionsSync": "2026-06-22 08:00:00",
"createdOn": "2026-06-01 10:00:00",
"updatedOn": "2026-06-22 08:00:00"
}
],
"total": 1
}
}
List transactionsListează tranzacții
Transactions are scoped to enabled Extrase consents for the matched company. Results are newest-first and offset-paginated.
Tranzacțiile sunt limitate la consimțămintele Extrase activate pentru compania potrivită. Rezultatele sunt ordonate de la cele mai recente și paginate prin offset.
| ParamParam | RequiredObligatoriu | DescriptionDescriere |
|---|---|---|
limit | nonu | Page size, default 50, max 100Dimensiune pagină, implicit 50, max 100 |
offset | nonu | Offset, default 0Offset, implicit 0 |
type | nonu | incoming or outgoing |
accountUid | nonu | Public account UID from /accountsUID public al contului din /accounts |
from | nonu | Booking date lower bound, YYYY-MM-DDLimită inferioară dată contabilizare, YYYY-MM-DD |
to | nonu | Booking date upper bound, YYYY-MM-DDLimită superioară dată contabilizare, YYYY-MM-DD |
q | nonu | Search across counterparty, IBAN, remittance, description, category, merchant, noteCăutare în contrapartidă, IBAN, detalii plată, descriere, categorie, comerciant, notă |
Description fields:
Câmpuri de descriere:
fintDescription: Fint-computed best payment narrative.fintDescription: cea mai bună descriere de plată calculată de Fint.rawDescription: original bank remittance text.rawDescription: textul original al detaliilor de plată de la bancă.category: provider category type, exposed separately from descriptions.category: tipul categoriei de la furnizor, expus separat de descrieri.
This is a GET endpoint and takes no request body; pass parameters in the query string.
Este un endpoint GET și nu primește corp de cerere; trimite parametrii în query string.
Example requestExemplu de cerere
curl -sS 'https://api.fint.ro/v1/extrase/transactions?limit=50&offset=0&type=incoming' \
-H 'X-Org-Key: YOUR_ORG_KEY' \
-H 'X-Api-Key: YOUR_COMPANY_KEY'
ResponseRăspuns
{
"status": "success",
"msg": null,
"reason": null,
"data": {
"transactions": [
{
"uid": "Qf4x...",
"type": "incoming",
"bookingDate": "2026-06-21 00:00:00",
"interlocutor": "Client SRL",
"interlocutorIban": "RO49AAAA1B31007593840000",
"amount": "100.00",
"currency": "RON",
"fintDescription": "Payment details",
"rawDescription": "Original bank remittance text",
"category": "Comisioane si Taxe",
"createdOn": "2026-06-22 08:00:00",
"accountUid": "a1b2c3d4e5f64789a0123456789abcde",
"accountIban": "RO49RNCB0000000000000001",
"accountName": "Cont curent",
"bank": {
"code": "BCR",
"name": "BCR Bank",
"bic": "RNCB",
"icon": "https://cdn.fint.ro/image/bank/icon/bcr.png"
}
}
],
"total": 42,
"limit": 50,
"offset": 0
}
}
Get a transactionObține o tranzacție
Returns one transaction owned by the company key’s license under an enabled consent. The detail response includes the summary fields plus provider fields such as valueDate, executionDateTime, transactionId, entryReference, endToEndId, rawDescription, category and userNote. This is a GET endpoint and takes no request body.
Returnează o tranzacție deținută de licența cheii de companie sub un consimțământ activ. Răspunsul detaliat include câmpurile sumare plus câmpuri de la furnizor precum valueDate, executionDateTime, transactionId, entryReference, endToEndId, rawDescription, category și userNote. Este un endpoint GET și nu primește corp de cerere.
Example requestExemplu de cerere
curl -sS 'https://api.fint.ro/v1/extrase/transaction/Qf4x...' \
-H 'X-Org-Key: YOUR_ORG_KEY' \
-H 'X-Api-Key: YOUR_COMPANY_KEY'
ResponseRăspuns
{
"status": "success",
"msg": null,
"reason": null,
"data": {
"uid": "Qf4x...",
"type": "incoming",
"bookingDate": "2026-06-21 00:00:00",
"valueDate": "2026-06-21 00:00:00",
"executionDateTime": "2026-06-21 09:14:32",
"transactionId": "TX-998877",
"entryReference": "ENTRY-12345",
"endToEndId": "E2E-55512",
"interlocutor": "Client SRL",
"interlocutorIban": "RO49AAAA1B31007593840000",
"amount": "100.00",
"currency": "RON",
"fintDescription": "Payment details",
"rawDescription": "Original bank remittance text",
"category": "Comisioane si Taxe",
"userNote": null,
"createdOn": "2026-06-22 08:00:00",
"accountUid": "a1b2c3d4e5f64789a0123456789abcde",
"accountIban": "RO49RNCB0000000000000001",
"accountName": "Cont curent",
"bank": {
"code": "BCR",
"name": "BCR Bank",
"bic": "RNCB",
"icon": "https://cdn.fint.ro/image/bank/icon/bcr.png"
}
}
}
ErrorsErori
| HTTP | reason |
|---|---|
| 405 | method_not_allowed_get |
| 400 | invalid_uid, invalid_type, invalid_account_uid, invalid_date, invalid_date_range, invalid_search |
| 404 | not_found |
| 429 | limit_exceeded |
eFactura
Submit outgoing Romanian e-invoices and manage incoming and outgoing documents. Fint handles delivery to ANAF e-Factura.
Trimite facturi electronice românești de ieșire și gestionează documente de intrare și ieșire. Fint se ocupă de transmiterea către ANAF e-Factura.
Service access. The efactura service must be allowed on your company key and activated on that company’s license. Fint identifies the company from the company key, so you do not send it yourself.
Acces serviciu. Serviciul efactura trebuie permis pe cheia de companie și activat pe licența companiei. Fint identifică compania din cheia de companie, deci nu o trimiți tu.
ConsentConsimțământ
An eFactura consent is the company’s authorization for Fint to access ANAF e-Factura on its behalf. It is established through ANAF’s OAuth flow: the authorized person grants access at ANAF, and the consent is recorded for the company license with a CUI and a validUntil date. While the consent is enabled, Fint can submit outgoing documents, report their status, and provide incoming documents from ANAF for that CUI.
Un consimțământ eFactura este autorizarea companiei pentru ca Fint să acceseze ANAF e-Factura în numele ei. Se stabilește prin fluxul OAuth ANAF: persoana autorizată acordă acces la ANAF, iar consimțământul este înregistrat pe licența companiei cu un CUI și o dată validUntil. Cât timp consimțământul este activ, Fint poate trimite documente de ieșire, raporta statusul lor și furniza documente de intrare de la ANAF pentru acel CUI.
You can obtain consent in two ways:
Poți obține consimțământul în două moduri:
- Fint UI: sign in to Fint, go to Configurare → Servicii, and complete the eFactura authorization flow for the company.
- Interfața Fint: autentifică-te în Fint, mergi la Configurare → Servicii și finalizează fluxul de autorizare eFactura pentru companie.
- API (self-service): call
/onboardingto generate a share link, have the authorized person open it in a browser and complete ANAF authorization, then poll/consentuntildata.consentStatusisenabled. See Onboarding & consentOnboarding și consimțământ below. - API (self-service): apelează
/onboardingpentru a genera un link de partajare, lasă persoana autorizată să-l deschidă în browser și să finalizeze autorizarea ANAF, apoi interoghează/consentpână cânddata.consentStatusesteenabled. Vezi Onboarding & consentOnboarding și consimțământ mai jos.
The ANAF authorization step can be completed only by a person who holds a qualified digital certificate registered at ANAF for the company’s CUI (fiscal code). That person must authenticate at ANAF with that certificate; Fint does not collect or store certificate passwords, PINs, or other signing credentials. The company must also have active e-Factura access in ANAF SPV (Spatiu Privat Virtual).
Pasul de autorizare ANAF poate fi finalizat doar de o persoană care deține un certificat digital calificat înregistrat la ANAF pentru CUI-ul (codul fiscal) companiei. Acea persoană trebuie să se autentifice la ANAF cu certificatul respectiv; Fint nu colectează și nu stochează parole de certificat, PIN-uri sau alte credențiale de semnare. Compania trebuie să aibă și acces activ e-Factura în ANAF SPV (Spațiu Privat Virtual).
For outgoing documents, the consent CUI must match from.cui on each /send request. Without an enabled consent, /send returns 403 efactura_consent_required.
Pentru documente de ieșire, CUI-ul consimțământului trebuie să coincidă cu from.cui la fiecare cerere /send. Fără consimțământ activ, /send returnează 403 efactura_consent_required.
Complete consent setup before calling /send. Use the Fint UI or the Onboarding & consentOnboarding și consimțământ API endpoints below.
Finalizează configurarea consimțământului înainte de a apela /send. Folosește interfața Fint sau endpoint-urile API de Onboarding & consentOnboarding și consimțământ de mai jos.
Onboarding & consentOnboarding și consimțământ
API-only flow for delegated ANAF authorization: generate a share link with /onboarding, have the certificate holder complete authorization at ANAF, then poll /consent until consent is enabled.
Flux doar prin API pentru autorizare ANAF delegată: generează un link de partajare cu /onboarding, lasă titularul certificatului să finalizeze autorizarea la ANAF, apoi interoghează /consent până când consimțământul este activ.
Create onboarding linkCreează link de onboarding
Creates a 7-day share link the end-user opens in a browser to authorize Fint at ANAF.
Creează un link de partajare valabil 7 zile pe care utilizatorul final îl deschide în browser pentru a autoriza Fint la ANAF.
Example requestExemplu de cerere
curl -sS -X POST 'https://api.fint.ro/v1/efactura/onboarding' \
-H 'X-Org-Key: YOUR_ORG_KEY' \
-H 'X-Api-Key: YOUR_COMPANY_KEY' \
-H 'Content-Type: application/json' \
-d '{}'
ResponseRăspuns
{
"status": "success",
"data": {
"authLink": "https://app.fint.ro/onboarding/efactura?token=...",
"expiresOn": "2026-06-27 12:00:00"
}
}
Check consentVerifică consimțământul
Returns the enabled ANAF consent for the company key’s license, or data: null when none is enabled yet.
Returnează consimțământul ANAF activ pentru licența cheii de companie, sau data: null când niciunul nu este încă activ.
Example requestExemplu de cerere
curl -sS 'https://api.fint.ro/v1/efactura/consent' \
-H 'X-Org-Key: YOUR_ORG_KEY' \
-H 'X-Api-Key: YOUR_COMPANY_KEY'
Response (consent enabled)Răspuns (consimțământ activ)
{
"status": "success",
"data": {
"consentStatus": "enabled",
"validUntil": "2027-01-01",
"updatedOn": "2026-06-01 10:00:00"
}
}
Response (no enabled consent)Răspuns (fără consimțământ activ)
{
"status": "success",
"msg": null,
"reason": null,
"data": null
}
Document structureStructura documentului
A document is a single JSON object - the same shape consumed by POST /send and returned by GET /document. This is the full field reference: what each field means and when it is required. Fint maps it to a CIUS-RO (EN 16931) UBL invoice before sending it to ANAF.
Un document este un singur obiect JSON - aceeași structură folosită de POST /send și returnată de GET /document. Aceasta este referința completă a câmpurilor: ce înseamnă fiecare și când este obligatoriu. Fint îl transformă într-o factură UBL CIUS-RO (EN 16931) înainte de a o trimite la ANAF.
Totals are computed, not sent. Line amounts, the VAT breakdown and the invoice totals are derived by Fint from items. Do not send total fields - they are ignored.
Totalurile sunt calculate, nu trimise. Valorile de linie, defalcarea TVA și totalurile facturii sunt derivate de Fint din items. Nu trimite câmpuri de total - sunt ignorate.
HeaderAntet
| FieldCâmp | RequirementCerință | MeaningSemnificație |
|---|---|---|
documentNumber | RequiredObligatoriu | Invoice number (BT-1). Must be non-empty and unique per seller; a repeat returns 409 duplicate_document.Numărul facturii (BT-1). Nevid și unic per furnizor; o repetare returnează 409 duplicate_document. |
documentDate | RequiredObligatoriu | Issue date (BT-2); any parseable date, emitted as YYYY-MM-DD.Data emiterii (BT-2); orice dată parsabilă, emisă ca YYYY-MM-DD. |
dueDate | OptionalOpțional | Payment due date (BT-9).Data scadenței plății (BT-9). |
currency | RequiredObligatoriu | Invoice currency (BT-5). Must be RON.Moneda facturii (BT-5). Trebuie să fie RON. |
documentTypeCode | OptionalOpțional | UNCL 1001 type (BT-3); default 380. Allowed: 380 Factură, 381 Notă de creditare, 384 Factură corectată, 389 Autofactură, 751 Informații contabile.Tip UNCL 1001 (BT-3); implicit 380. Permise: 380 Factură, 381 Notă de creditare, 384 Factură corectată, 389 Autofactură, 751 Informații contabile. |
note | OptionalOpțional | Free-text note or observation (BT-22), max 300 characters.Notă sau observație text liber (BT-22), max 300 caractere. |
deliveryDate | OptionalOpțional | Actual delivery date of the goods/services (BT-72). Required by ANAF when any item uses vatScheme K (intra-community supply).Data efectivă a livrării bunurilor/serviciilor (BT-72). Cerută de ANAF când un articol folosește vatScheme K (livrare intracomunitară). |
deliveryAddress | OptionalOpțional | Delivery location address (same shape as a party address). Emitted only alongside deliveryDate; if omitted, the buyer address is used.Adresa locului de livrare (aceeași structură ca address al unei părți). Emisă doar împreună cu deliveryDate; dacă lipsește, se folosește adresa clientului. |
buyerReference | OptionalOpțional | Buyer’s reference (BT-10), e.g. a PO or cost-center code, max 30 characters.Referința cumpărătorului (BT-10), ex. o comandă sau cod de centru de cost, max 30 caractere. |
Parties - from & toPărți - from și to
from is the supplier (furnizor) and to is the customer (client). Both share the same shape. from.cui must equal the enabled consent CUI for your license, otherwise 422 from_cui_mismatch. For a consumer (B2C) buyer, set to.cui to 0000000000000; a full to.name and to.address are still required.
from este furnizorul și to este clientul. Ambele au aceeași structură. from.cui trebuie să fie egal cu CUI-ul consimțământului activ al licenței, altfel 422 from_cui_mismatch. Pentru un client persoană fizică (B2C), setează to.cui la 0000000000000; sunt necesare în continuare to.name și to.address complete.
| FieldCâmp | RequirementCerință | MeaningSemnificație |
|---|---|---|
cui | RequiredObligatoriu | Fiscal code. from.cui must match the consent; to.cui a valid CUI, or 0000000000000 for B2C.Cod fiscal. from.cui trebuie să coincidă cu consimțământul; to.cui un CUI valid, sau 0000000000000 pentru B2C. |
name | RequiredObligatoriu | Legal name of the party.Denumirea legală a părții. |
address.line | RequiredObligatoriu | Street address.Adresa (stradă, număr). |
address.city | RequiredObligatoriu | City. In Bucharest use the sector, e.g. SECTOR1.Localitate. În București folosește sectorul, ex. SECTOR1. |
address.countrySubdivision | RequiredObligatoriu | County as RO-XX (e.g. RO-CJ); Bucharest is RO-B.Județul ca RO-XX (ex. RO-CJ); Bucureștiul este RO-B. |
address.country | RequiredObligatoriu | ISO country code, e.g. RO.Cod ISO de țară, ex. RO. |
address.postalCode | OptionalOpțional | Postal code.Cod poștal. |
Normalization. You do not need to pre-format addresses. Fint accepts county names or codes (e.g. Cluj or RO-CJ) and Bucharest variants (București, Sector 1, RO-B) and normalizes them to ANAF/CIUS-RO form; unrecognized city/subdivision is filled from Info CUI by the party’s cui.
Normalizare. Nu trebuie să pre-formatezi adresele. Fint acceptă nume sau coduri de județ (ex. Cluj sau RO-CJ) și variante pentru București (București, Sector 1, RO-B) și le normalizează în forma ANAF/CIUS-RO; localitatea/subdiviziunea nerecunoscută este completată din Info CUI după cui-ul părții.
Line items - items[]Linii - items[]
A non-empty array; each element is one invoice line.
Un array nevid; fiecare element este o linie de factură.
| FieldCâmp | RequirementCerință | MeaningSemnificație |
|---|---|---|
name | RequiredObligatoriu | Item name/description (BT-153), max 200 characters.Denumirea/descrierea articolului (BT-153), max 200 caractere. |
quantity | RequiredObligatoriu | Invoiced quantity.Cantitatea facturată. |
price / unitPrice | RequiredObligatoriu | Net unit price (BT-146). Send one of the two keys.Prețul unitar net (BT-146). Trimite una dintre cele două chei. |
vatRate | RequiredObligatoriu | VAT percentage (BT-152), 0-100. Must be 0 for every scheme except S.Procent TVA (BT-152), 0-100. Trebuie să fie 0 pentru orice schemă în afară de S. |
vatScheme | RequiredObligatoriu | VAT category code (BT-151), UNCL 5305 - see the table below.Cod categorie TVA (BT-151), UNCL 5305 - vezi tabelul de mai jos. |
vatexCode | ConditionalCondiționat | VAT exemption reason code (BT-121), e.g. VATEX-EU-AE. Required by ANAF for exempt / reverse-charge categories (E, AE, K, G, O); not used for S or Z.Cod motiv scutire TVA (BT-121), ex. VATEX-EU-AE. Cerut de ANAF pentru categoriile scutite / taxare inversă (E, AE, K, G, O); neutilizat pentru S sau Z. |
vatexReason | OptionalOpțional | Free-text VAT exemption reason (BT-120), paired with vatexCode.Motiv de scutire TVA în text liber (BT-120), împreună cu vatexCode. |
classificationCode | OptionalOpțional | Item classification code (BT-158), e.g. a CPV code. Requires classificationList.Cod de clasificare a articolului (BT-158), ex. un cod CPV. Necesită classificationList. |
classificationList | OptionalOpțional | Classification scheme id (BT-158-1, listID). Must be a UNTDID 7143 code (e.g. STI for CPV). Requires classificationCode.Id-ul schemei de clasificare (BT-158-1, listID). Trebuie să fie un cod UNTDID 7143 (ex. STI pentru CPV). Necesită classificationCode. |
VAT schemes (vatScheme)Scheme de TVA (vatScheme)
The per-item vatScheme is a UNCL 5305 category code. Every scheme except S is a zero-rate category and requires vatRate: 0. The API validates vatScheme and the vatRate: 0 coupling; the vatexCode and deliveryDate requirements in the "Requires" column are enforced by ANAF at submission, not pre-checked by this API.
Câmpul vatScheme per articol este un cod de categorie UNCL 5305. Orice schemă în afară de S este o categorie cu cotă zero și necesită vatRate: 0. API-ul validează vatScheme și corelarea cu vatRate: 0; cerințele vatexCode și deliveryDate din coloana "Necesită" sunt aplicate de ANAF la trimitere, nu pre-verificate de acest API.
| CodeCod | MeaningSemnificație | RequiresNecesită |
|---|---|---|
S | Standard rateCotă standard | vatRate > 0vatRate > 0 |
Z | Zero ratedCotă zero | vatRate: 0vatRate: 0 |
E | Exempt from VATScutit de TVA | vatRate: 0, vatexCodevatRate: 0, vatexCode |
AE | Reverse chargeTaxare inversă | vatRate: 0, vatexCode (e.g. VATEX-EU-AE)vatRate: 0, vatexCode (ex. VATEX-EU-AE) |
K | Intra-community supplyLivrare intracomunitară | vatRate: 0, deliveryDate, vatexCode (VATEX-EU-IC)vatRate: 0, deliveryDate, vatexCode (VATEX-EU-IC) |
G | Export outside the EUExport în afara UE | vatRate: 0, vatexCode (VATEX-EU-G)vatRate: 0, vatexCode (VATEX-EU-G) |
O | Outside scope of VATÎn afara sferei TVA | vatRate: 0, vatexCode (VATEX-EU-O)vatRate: 0, vatexCode (VATEX-EU-O) |
L | Canary Islands (IGIC)Insulele Canare (IGIC) | vatRate: 0vatRate: 0 |
M | Ceuta & Melilla (IPSI)Ceuta și Melilla (IPSI) | vatRate: 0vatRate: 0 |
Payment - paymentMeansPlată - paymentMeans
The paymentMeans object is optional. When you include it, paymentMeansCode is required within it.
Obiectul paymentMeans este opțional. Când îl incluzi, paymentMeansCode este obligatoriu în interiorul lui.
| FieldCâmp | RequirementCerință | MeaningSemnificație |
|---|---|---|
paymentMeansCode | Required if paymentMeans presentObligatoriu dacă paymentMeans există | UNCL 4461 payment means code (BT-81), a number 1-97; e.g. 30 credit transfer.Cod mijloc de plată UNCL 4461 (BT-81), un număr 1-97; ex. 30 transfer bancar. |
iban | OptionalOpțional | Payee account IBAN (BT-84). Recommended.IBAN-ul contului beneficiar (BT-84). Recomandat. |
paymentId | OptionalOpțional | Payment reference / remittance information (BT-83).Referință de plată / informații de remitere (BT-83). |
accountName | OptionalOpțional | Payee account holder name (BT-85).Numele titularului contului beneficiar (BT-85). |
Send a documentTrimite un document
Validates and enqueues one outgoing document. The request body is a single JSON object describing the invoice; all fields below are top-level keys of that body (not HTTP headers).
Validează și pune în coadă un document de ieșire. Corpul cererii este un singur obiect JSON care descrie factura; toate câmpurile de mai jos sunt chei de nivel superior ale acelui corp (nu header-e HTTP).
curl -sS -X POST 'https://api.fint.ro/v1/efactura/send' \
-H 'X-Org-Key: YOUR_ORG_KEY' \
-H 'X-Api-Key: YOUR_COMPANY_KEY' \
-H 'Content-Type: application/json' \
-d '{
"documentNumber": "INV-1",
"documentDate": "2025-03-21",
"currency": "RON",
"documentTypeCode": "380",
"note": "Livrare conform contract 42/2025.",
"deliveryDate": "2025-03-21",
"from": {
"cui": "34790982",
"name": "Seller SRL",
"address": {
"line": "Str. Test 1",
"city": "SECTOR1",
"postalCode": "010001",
"countrySubdivision": "RO-B",
"country": "RO"
}
},
"to": {
"cui": "12345678",
"name": "Buyer SRL",
"address": {
"line": "Str. Client 2",
"city": "SECTOR1",
"postalCode": "010002",
"countrySubdivision": "RO-B",
"country": "RO"
}
},
"items": [
{
"name": "Service",
"quantity": 1,
"price": 100,
"vatRate": 19,
"vatScheme": "S",
"classificationCode": "79411000",
"classificationList": "STI"
}
],
"paymentMeans": {
"paymentMeansCode": "30",
"iban": "RO49AAAA1B31007593840000",
"paymentId": "ORD-1"
}
}'
{
"documentNumber": "INV-1",
"documentDate": "2025-03-21",
"currency": "RON",
"documentTypeCode": "380",
"note": "Livrare conform contract 42/2025.",
"deliveryDate": "2025-03-21",
"from": {
"cui": "34790982",
"name": "Seller SRL",
"address": {
"line": "Str. Test 1",
"city": "SECTOR1",
"postalCode": "010001",
"countrySubdivision": "RO-B",
"country": "RO"
}
},
"to": {
"cui": "12345678",
"name": "Buyer SRL",
"address": {
"line": "Str. Client 2",
"city": "SECTOR1",
"postalCode": "010002",
"countrySubdivision": "RO-B",
"country": "RO"
}
},
"items": [
{
"name": "Service",
"quantity": 1,
"price": 100,
"vatRate": 19,
"vatScheme": "S",
"classificationCode": "79411000",
"classificationList": "STI"
}
],
"paymentMeans": {
"paymentMeansCode": "30",
"iban": "RO49AAAA1B31007593840000",
"paymentId": "ORD-1"
}
}
The request body is the invoice document object. See Document structure above for the full field reference - every field, its meaning, and when it is required. In short: documentNumber, documentDate, currency (RON), from, to, and a non-empty items array are required; everything else is optional.
Corpul cererii este obiectul document al facturii. Vezi Structura documentului mai sus pentru referința completă a câmpurilor - fiecare câmp, semnificația sa și când este obligatoriu. Pe scurt: documentNumber, documentDate, currency (RON), from, to și un array items nevid sunt obligatorii; restul sunt opționale.
After local checks and a duplicate check, Fint pre-validates the generated UBL with ANAF.
După verificări locale și verificarea duplicatelor, Fint pre-validează UBL-ul generat cu ANAF.
Response (201 Created)Răspuns (201 Created)
{
"status": "success",
"msg": "Document has been validated with Fint. Pending upload and ANAF confirmation.",
"reason": null,
"data": {
"uid": "a1b2c3d4-e5f6-4789-a012-3456789abcde",
"status": "pending"
}
}
Response (422 validation failed)Răspuns (422 validare eșuată)
{
"status": "error",
"msg": "Document is not valid.",
"reason": "validation_failed",
"data": {
"errors": [
{
"code": "from_cui_mismatch",
"field": "from.cui",
"message": "from.cui must match the enabled consent CUI."
}
]
}
}
Other errors: 409 duplicate_document, 429 limit_exceeded, 500 enqueue_failed.
Alte erori: 409 duplicate_document, 429 limit_exceeded, 500 enqueue_failed.
Get a documentObține un document
Resolves any document (outgoing or incoming) owned by the company key’s license, including parties, line items, payment means, ANAF state and download availability. Pass the document UID in the query string.
Rezolvă orice document (de ieșire sau intrare) deținut de licența cheii de companie, inclusiv părți, linii, mijloace de plată, starea ANAF și disponibilitatea descărcării. Transmite UID-ul documentului în query string.
Example requestExemplu de cerere
curl -sS 'https://api.fint.ro/v1/efactura/document?uid=a1b2c3d4-e5f6-4789-a012-3456789abcde' \
-H 'X-Org-Key: YOUR_ORG_KEY' \
-H 'X-Api-Key: YOUR_COMPANY_KEY'
ResponseRăspuns
{
"status": "success",
"data": {
"uid": "a1b2c3d4-...",
"type": "outgoing",
"status": "validated",
"errorMessage": null,
"source": "fint",
"documentTypeCode": "380",
"documentNumber": "INV-1",
"documentDate": "2025-03-21",
"currency": "RON",
"fromTo": "Buyer SRL",
"fromToCui": "12345678",
"total": "100.00",
"anafStatus": "ok",
"anafId": "5032836579",
"pdfAvailable": 1,
"xmlAvailable": 1,
"processed": 1,
"createdOn": "2025-03-21 10:00:00",
"updatedOn": "2025-03-21 12:00:00",
"note": "Livrare conform contract 42/2025.",
"deliveryDate": "2025-03-21",
"deliveryAddress": null,
"from": {
"cui": "34790982",
"name": "Seller SRL",
"address": {
"line": "Str. Test 1",
"city": "SECTOR1",
"postalCode": "010001",
"countrySubdivision": "RO-B",
"country": "RO"
}
},
"to": {
"cui": "12345678",
"name": "Buyer SRL",
"address": {
"line": "Str. Client 2",
"city": "SECTOR1",
"postalCode": "010002",
"countrySubdivision": "RO-B",
"country": "RO"
}
},
"items": [
{
"name": "Service",
"quantity": 1,
"price": 100,
"vatRate": 0,
"vatScheme": "E",
"vatexCode": "VATEX-EU-D",
"vatexReason": "Scutit conform reglementarilor UE",
"classificationCode": "79411000",
"classificationList": "STI"
}
],
"paymentMeans": {
"paymentMeansCode": "30",
"paymentId": "ORD-1",
"iban": "RO49AAAA1B31007593840000",
"accountName": "Main account",
"bic": null
}
}
}
fromTo is the counterparty name and fromToCui its CUI (buyer on outgoing, supplier on incoming). errorMessage carries a failure detail or null; processed is 1 once the document has been fully processed after ANAF confirmation. createdOn / updatedOn are timestamps.
fromTo este numele contrapărții, iar fromToCui CUI-ul acesteia (client la ieșire, furnizor la intrare). errorMessage conține detaliul unei erori sau null; processed este 1 după procesarea completă a documentului în urma confirmării ANAF. createdOn / updatedOn sunt marcaje temporale.
The optional fields are returned when present: note, deliveryDate, deliveryAddress, and the item-level vatexCode, vatexReason, classificationCode, classificationList.
Câmpurile opționale sunt returnate când există: note, deliveryDate, deliveryAddress și, la nivel de linie, vatexCode, vatexReason, classificationCode, classificationList.
Errors: 400 invalid_uid; 404 not_found.
Erori: 400 invalid_uid; 404 not_found.
List documentsListează documente
Lists documents for the key’s license. No query parameters uses defaults. For line items and download availability, use /document.
Listează documentele pentru licența cheii. Fără parametri de query folosește valorile implicite. Pentru linii și disponibilitate descărcare, folosește /document.
| ParamParametru | DefaultImplicit | DescriptionDescriere |
|---|---|---|
type | outgoing | outgoing or incoming |
limit | 50 | Page size (max 100)Dimensiune pagină (max 100) |
offset | 0 | Skip rowsSari rânduri |
status | (all)(toate) | Comma-separated list of statusesStatusuri separate prin virgulă |
Example requestExemplu de cerere
curl -sS 'https://api.fint.ro/v1/efactura/documents?type=incoming&limit=50&offset=0' \
-H 'X-Org-Key: YOUR_ORG_KEY' \
-H 'X-Api-Key: YOUR_COMPANY_KEY'
ResponseRăspuns
{
"status": "success",
"msg": null,
"reason": null,
"data": {
"documents": [
{
"uid": "a1b2c3d4-...",
"type": "incoming",
"status": "validated",
"source": "spv",
"documentTypeCode": "380",
"documentNumber": "INV-1",
"documentDate": "2025-03-21",
"currency": "RON",
"fromTo": "Seller SRL",
"fromToCui": "34790982",
"total": "119.00",
"anafStatus": "ok",
"anafId": "5032836579",
"createdOn": "2025-03-21 10:00:00",
"updatedOn": "2025-03-21 12:00:00"
}
],
"total": 42,
"limit": 50,
"offset": 0
}
}
Download a documentDescarcă un document
Returns the raw binary as an attachment, not the JSON envelope. PDF for type=pdf; signed XML delivered as a ZIP for type=xml (zip is an alias for xml). Use pdfAvailable/xmlAvailable from /document to know which exist.
Returnează binarul brut ca atașament, nu envelopa JSON. PDF pentru type=pdf; XML semnat livrat ca ZIP pentru type=xml (zip este alias pentru xml). Folosește pdfAvailable/xmlAvailable din /document pentru a ști ce există.
Example requestExemplu de cerere
curl -sS 'https://api.fint.ro/v1/efactura/download?uid=a1b2c3d4-e5f6-4789-a012-3456789abcde&type=pdf' \
-H 'X-Org-Key: YOUR_ORG_KEY' \
-H 'X-Api-Key: YOUR_COMPANY_KEY' \
-o document.pdf
Response (200 OK)Răspuns (200 OK)
The response is the raw file as a binary attachment (with a Content-Disposition header), not JSON. Save it to disk with -o, as shown above.
Răspunsul este fișierul brut ca atașament binar (cu header Content-Disposition), nu JSON. Salvează-l pe disc cu -o, ca mai sus.
Errors: 400 invalid_uid, invalid_type; 404 not_found, document_not_available.
Erori: 400 invalid_uid, invalid_type; 404 not_found, document_not_available.
Info CUI
Look up Romanian company data by CUI (fiscal code). Responses are cached permanently.
Caută date despre companii românești după CUI (cod fiscal). Răspunsurile sunt cache-uite permanent.
Service access. The infocui service must be allowed on your company key and activated on that company’s license. Fint identifies the company from the company key, so you do not send it yourself.
Acces serviciu. Serviciul infocui trebuie permis pe cheia de companie și activat pe licența companiei. Fint identifică compania din cheia de companie, deci nu o trimiți tu.
Look up a companyCaută o companie
Pass the company to look up as the required cui query parameter (string or integer; RO prefix stripped, digits only); any valid Romanian CUI is allowed. Dual-key auth still applies. This is a GET endpoint and takes no request body.
Trimite compania de căutat ca parametru query obligatoriu cui (string sau întreg; prefixul RO eliminat, doar cifre); orice CUI românesc valid este permis. Autentificarea cu două chei se aplică în continuare. Este un endpoint GET și nu primește corp de cerere.
| ParamParam | RequiredObligatoriu | DescriptionDescriere |
|---|---|---|
cui | yesda | Company to look up (RO prefix stripped, digits only)Compania de căutat (prefix RO eliminat, doar cifre) |
Example requestExemplu de cerere
curl -sS 'https://api.fint.ro/v1/infocui?cui=12345678' \
-H 'X-Org-Key: YOUR_ORG_KEY' \
-H 'X-Api-Key: YOUR_COMPANY_KEY'
ResponseRăspuns
{
"status": "success",
"msg": null,
"reason": null,
"data": {
"cui": "12345678",
"name": "Exemplu SRL",
"registrationNumber": "J40/1234/2010",
"address": "Str. Exemplu 1",
"addressFull": "Str. Exemplu 1, București, Sector 3",
"city": "București",
"county": "Sector 3",
"countyCode": "B",
"country": "România",
"postalCode": "010101",
"phone": null,
"fax": null,
"iban": null,
"registrationStatus": "INREGISTRAT din data 01.01.2010",
"registrationDate": "2010-01-01",
"caenCode": "6201",
"eInvoiceEnabled": false,
"taxAuthority": "Administrația Finanțelor Publice",
"legalForm": "SOCIETATE COMERCIALĂ CU RĂSPUNDERE LIMITATĂ",
"vatRegistered": true,
"cashVatEnabled": false
}
}
ErrorsErori
| HTTP | reason |
|---|---|
| 405 | method_not_allowed_get |
| 400 | missing_cui, invalid_cui |
| 404 | company_not_found |
| 429 | limit_exceeded |
Schimb valutar
Official Romanian reference exchange rates for RON to foreign currency pairs.
Cursuri oficiale românești de referință pentru perechi RON cu valute străine.
Service access. The schimbvalutar service must be allowed on your company key and activated on that company’s license. Fint identifies the company from the company key, so you do not send it yourself.
Acces serviciu. Serviciul schimbvalutar trebuie permis pe cheia de companie și activat pe licența companiei. Fint identifică compania din cheia de companie, deci nu o trimiți tu.
Get a rateObține un curs
| ParamParam | RequiredObligatoriu | DescriptionDescriere |
|---|---|---|
from | yesda | Must be RONTrebuie să fie RON |
to | yesda | Target ISO 4217 code (e.g. EUR, USD)Cod țintă ISO 4217 (ex. EUR, USD) |
date | nonu | Calendar date YYYY-MM-DD; omit for latest publicationDată calendaristică YYYY-MM-DD; omite pentru ultima publicare |
This is a GET endpoint and takes no request body; pass parameters in the query string.
Este un endpoint GET și nu primește corp de cerere; trimite parametrii în query string.
Example requestExemplu de cerere
curl -sS 'https://api.fint.ro/v1/schimbvalutar?from=RON&to=EUR' \
-H 'X-Org-Key: YOUR_ORG_KEY' \
-H 'X-Api-Key: YOUR_COMPANY_KEY'
ResponseRăspuns
{
"status": "success",
"msg": null,
"reason": null,
"data": {
"from": "RON",
"to": "EUR",
"date": "2026-05-20",
"rate": 4.9756,
"multiplier": 1,
"source": "bnr",
"publishedDate": "2026-05-20"
}
}
rate is RON per 1 unit of to (the official multiplier is already applied).
rate este RON per 1 unitate din to (multiplicatorul oficial este deja aplicat).
The response date / publishedDate is the publication date actually used. On weekends, holidays, or before the daily update (~13:00), this may be earlier than the date you requested (previous banking day fallback). Future dates return 400 future_date.
date / publishedDate din răspuns este data publicării efectiv folosită. În weekend, sărbători sau înainte de actualizarea zilnică (~13:00), poate fi anterioară datei cerute (fallback la ziua bancară anterioară). Datele viitoare returnează 400 future_date.
ErrorsErori
| HTTP | reason |
|---|---|
| 405 | method_not_allowed_get |
| 400 | missing_from, invalid_from, missing_to, invalid_to, invalid_date, future_date |
| 404 | rate_not_found (unknown currency or historical date before available data)(valută necunoscută sau dată istorică înainte de datele disponibile) |
| 429 | limit_exceeded |
| 502 | provider_error (upstream rate source failure)(eroare la sursa de cursuri) |
Historical rateCurs istoric
Pass a date to request the rate for a specific calendar date.
Trimite un date pentru a solicita cursul pentru o dată calendaristică specifică.
Example requestExemplu de cerere
curl -sS 'https://api.fint.ro/v1/schimbvalutar?from=RON&to=USD&date=2025-01-15' \
-H 'X-Org-Key: YOUR_ORG_KEY' \
-H 'X-Api-Key: YOUR_COMPANY_KEY'
Organization APIAPI Organizație
Manage companies, activate services, and create API keys at the organization level - using your organization key only.
Gestionează companii, activează servicii și creează chei API la nivel de organizație - folosind doar cheia de organizație.
Enterprise only. These endpoints are available exclusively on the Enterprise plan. Non-Enterprise organizations receive 403 enterprise_required on every request.
Doar Enterprise. Aceste endpoint-uri sunt disponibile exclusiv pe planul Enterprise. Organizațiile non-Enterprise primesc 403 enterprise_required la fiecare cerere.
Authentication exception. Send only X-Org-Key - no company key (X-Api-Key / Bearer) is used. All operations are automatically scoped to your organization.
Excepție de autentificare. Trimite doar X-Org-Key - nu se folosește cheie de companie (X-Api-Key / Bearer). Toate operațiile sunt automat limitate la organizația ta.
List companiesListare companii
Returns all active companies in the organization, including each company's currently active services.
Returnează toate companiile active din organizație, inclusiv serviciile active ale fiecărei companii.
Example requestExemplu de cerere
curl -sS 'https://api.fint.ro/v1/organization/companies/list' \
-H 'X-Org-Key: YOUR_ORG_KEY'
ResponseRăspuns
{
"status": "success",
"msg": null,
"reason": null,
"data": [
{
"uid": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"name": "Acme SRL",
"cui": "12345678",
"status": "enabled",
"activeServices": [
"efactura",
"extrase"
]
}
]
}
Create a companyCreare companie
Creates a new company under the organization. The CUI (2-10 digits; optional RO prefix) must be unique within the organization.
Creează o nouă companie în organizație. CUI-ul (2-10 cifre; prefix RO opțional) trebuie să fie unic în organizație.
| FieldCâmp | RequiredObligatoriu | DescriptionDescriere |
|---|---|---|
name | yesda | Company display nameNumele companiei |
cui | yesda | Romanian tax id; unique in your orgCUI românesc; unic în organizație |
Example requestExemplu de cerere
curl -sS -X POST 'https://api.fint.ro/v1/organization/companies/create' \
-H 'X-Org-Key: YOUR_ORG_KEY' \
-H 'Content-Type: application/json' \
-d '{"name":"Acme SRL","cui":"12345678"}'
Response (201)Răspuns (201)
{
"status": "success",
"msg": null,
"reason": null,
"data": {
"uid": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"name": "Acme SRL",
"cui": "12345678"
}
}
List available servicesListare servicii disponibile
Returns the service keys that can be activated on a company and used as API key scopes.
Returnează cheile de serviciu care pot fi activate pe o companie și folosite ca domeniu pentru cheile API.
ResponseRăspuns
{
"status": "success",
"msg": null,
"reason": null,
"data": [
{
"key": "extrase",
"label": "Extrase"
},
{
"key": "efactura",
"label": "eFactura"
},
{
"key": "infocui",
"label": "Info CUI"
},
{
"key": "schimbvalutar",
"label": "Schimb valutar"
}
]
}
Activate a serviceActivare serviciu
Activates a single service for a company. A company must have a service active before API keys can call it. Use the uid from companies/list. The action is in the URL, so the body only carries the service.
Activează un singur serviciu pentru o companie. O companie trebuie să aibă serviciul activ înainte ca cheile API să-l poată apela. Folosește uid-ul din companies/list. Acțiunea este în URL, deci corpul conține doar serviciul.
| FieldCâmp | RequiredObligatoriu | DescriptionDescriere |
|---|---|---|
service | yesda | Service key: efactura, extrase, infocui, schimbvalutarCheie serviciu: efactura, extrase, infocui, schimbvalutar |
Example requestExemplu de cerere
curl -sS -X POST 'https://api.fint.ro/v1/organization/companies/a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4/services/activate' \
-H 'X-Org-Key: YOUR_ORG_KEY' \
-H 'Content-Type: application/json' \
-d '{"service":"efactura"}'
ResponseRăspuns
{
"status": "success",
"msg": null,
"reason": null,
"data": {
"companyUid": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"service": "efactura",
"active": true
}
}
Deactivate a serviceDezactivare serviciu
Deactivates a single service for a company (removes its service plan). Use the uid from companies/list. The body carries only the service.
Dezactivează un singur serviciu pentru o companie (îi elimină planul de serviciu). Folosește uid-ul din companies/list. Corpul conține doar serviciul.
| FieldCâmp | RequiredObligatoriu | DescriptionDescriere |
|---|---|---|
service | yesda | Service key: efactura, extrase, infocui, schimbvalutarCheie serviciu: efactura, extrase, infocui, schimbvalutar |
Example requestExemplu de cerere
curl -sS -X POST 'https://api.fint.ro/v1/organization/companies/a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4/services/deactivate' \
-H 'X-Org-Key: YOUR_ORG_KEY' \
-H 'Content-Type: application/json' \
-d '{"service":"efactura"}'
ResponseRăspuns
{
"status": "success",
"msg": null,
"reason": null,
"data": {
"companyUid": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"service": "efactura",
"active": false
}
}
Create a company API keyCreare cheie API pentru companie
Creates a company API key scoped to the given services. Use the uid from companies/list. The plaintext key is returned only once - store it securely. Use the returned key as X-Api-Key on service endpoints together with X-Org-Key.
Creează o cheie API pentru companie, limitată la serviciile indicate. Folosește uid-ul din companies/list. Cheia în clar este returnată o singură dată - stocheaz-o în siguranță. Folosește cheia returnată ca X-Api-Key pe endpoint-urile de servicii împreună cu X-Org-Key.
| FieldCâmp | RequiredObligatoriu | DescriptionDescriere |
|---|---|---|
name | yesda | Human-readable label for the keyEtichetă lizibilă pentru cheie |
services | yesda | Array of service keys the key may call (at least one)Array de chei de serviciu pe care le poate apela (cel puțin una) |
Example requestExemplu de cerere
curl -sS -X POST 'https://api.fint.ro/v1/organization/companies/a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4/apikeys/create' \
-H 'X-Org-Key: YOUR_ORG_KEY' \
-H 'Content-Type: application/json' \
-d '{"name":"My integration","services":["efactura","infocui"]}'
Response (201)Răspuns (201)
{
"status": "success",
"msg": "Store this key securely - it will not be shown again.",
"reason": null,
"data": {
"id": 7,
"companyUid": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"name": "My integration",
"apiKey": "key_live_Ab3...48chars",
"services": [
"efactura",
"infocui"
]
}
}
ErrorsErori
| HTTP | reason | WhenCând |
|---|---|---|
| 401 | missing_org_api_key | No X-Org-Key headerLipsește headerul X-Org-Key |
| 401 | invalid_org_api_key | Unknown or deleted org keyCheie organizație necunoscută sau ștearsă |
| 403 | enterprise_required | Organization is not on the Enterprise planOrganizația nu este pe planul Enterprise |
| 403 | org_api_key_disabled, organization_suspended, organization_disabled | Org key or organization not activeCheie sau organizație inactivă |
| 400 | invalid_json, missing_name, missing_cui, invalid_cui, missing_service, invalid_service, missing_services | Missing or invalid body fieldsCâmpuri lipsă sau invalide |
| 404 | company_not_found | Company uid not in your organizationuid-ul companiei nu aparține organizației tale |
| 409 | duplicate_cui, service_already_active, service_not_active | Conflict - already exists or state mismatchConflict - există deja sau stare incorectă |
| 500 | company_create_failed, service_update_failed, api_key_create_failed | Server error while applying the changeEroare de server la aplicarea modificării |
SandboxSandbox
Build and test your integration against https://sandbox.fint.ro - a fully mocked copy of the Fint API that mirrors the live request and response shapes but never touches real providers or real company data.
Construiește și testează integrarea pe https://sandbox.fint.ro - o copie complet simulată a API-ului Fint, care reproduce structura cererilor și răspunsurilor reale, dar nu atinge niciodată furnizorii reali sau date reale de companie.
Safe to test. Sandbox responses are hardcoded mock data. No documents are sent to ANAF, no banks are contacted, nothing is stored, no billing limits apply, and calls are not logged. Use it to validate your HTTP client, auth headers, and response parsing before going live.
Sigur pentru testare. Răspunsurile sandbox sunt date simulate, codate fix. Niciun document nu ajunge la ANAF, nicio bancă nu este contactată, nimic nu este stocat, nu se aplică limite de facturare, iar apelurile nu sunt înregistrate. Folosește-l pentru a valida clientul HTTP, headerele de autentificare și parsarea răspunsurilor înainte de a trece pe producție.
How it worksCum funcționează
The sandbox is served from a separate host, sandbox.fint.ro, and exposes the same service endpoints as the live API (Extrase, eFactura, Info CUI, Schimb valutar) under the /v1 prefix. Every endpoint returns deterministic mock data, so the same request always yields the same response. Request methods, query parameters, the { status, msg, reason, data } envelope, and reason error codes all match the live API - only the host and the API keys differ.
Sandbox-ul este servit de pe un host separat, sandbox.fint.ro, și expune aceleași endpoint-uri ca API-ul live (Extrase, eFactura, Info CUI, Schimb valutar) sub prefixul /v1. Fiecare endpoint returnează date simulate deterministe, deci aceeași cerere produce mereu același răspuns. Metodele cererilor, parametrii din query, plicul { status, msg, reason, data } și codurile de eroare reason sunt identice cu API-ul live - diferă doar hostul și cheile API.
Differences from the live APIDiferențe față de API-ul live
| AspectAspect | Live APIAPI live | SandboxSandbox |
|---|---|---|
| Base URLURL de bază | https://api.fint.ro | https://sandbox.fint.ro |
| KeysChei | org_live_* + key_live_* | org_sandbox_* + key_sandbox_* |
| ProvidersFurnizori | Real upstream providersFurnizori reali | None - all data is mockedNiciunul - toate datele sunt simulate |
| DataDate | Your real company dataDatele reale ale companiei tale | Fixed mock data, not persistedDate simulate fixe, nestocate |
| Billing / limitsFacturare / limite | 429 limit_exceeded may applyse poate aplica | Not enforcedNeaplicate |
| Request loggingÎnregistrare cereri | LoggedÎnregistrate | Not loggedNeînregistrate |
| Organization APIAPI Organizație | AvailableDisponibil | Not availableIndisponibil |
AuthenticationAutentificare
Sandbox uses the same dual-key authentication as the live API, with one rule: both keys must carry the sandbox prefix. Live keys are rejected with invalid_org_api_key / invalid_api_key, and both keys must belong to the same organization.
Sandbox folosește aceeași autentificare cu două chei ca API-ul live, cu o regulă: ambele chei trebuie să aibă prefixul sandbox. Cheile live sunt respinse cu invalid_org_api_key / invalid_api_key, iar ambele chei trebuie să aparțină aceleiași organizații.
| Header | ValueValoare |
|---|---|
X-Org-Key | Organization sandbox key (org_sandbox_…)Cheia sandbox de organizație (org_sandbox_…) |
X-Api-Key | Company sandbox key (key_sandbox_…)Cheia sandbox de companie (key_sandbox_…) |
The company key may instead be sent as Authorization: Bearer key_sandbox_….
Cheia de companie poate fi trimisă alternativ ca Authorization: Bearer key_sandbox_….
curl -sS 'https://sandbox.fint.ro/v1/extrase/accounts' \
-H 'X-Org-Key: org_sandbox_…' \
-H 'X-Api-Key: key_sandbox_…'
Obtaining sandbox keysObținerea cheilor sandbox
Generate a sandbox key pair from the same pages as live keys, using the dedicated Cheie sandbox button. Each key is created once and is idempotent - returning to the page shows the same key. Sandbox keys are hidden from the live key list.
Generează o pereche de chei sandbox din aceleași pagini ca cele live, folosind butonul dedicat Cheie sandbox. Fiecare cheie este creată o singură dată și este idempotentă - la revenirea pe pagină apare aceeași cheie. Cheile sandbox nu apar în lista cheilor live.
| KeyCheie | WhereUnde | NotesNote |
|---|---|---|
OrganizationOrganizație (org_sandbox_) | Header → API → Chei API → Cheie sandbox → Generează cheie sandboxHeader → API → Chei API → Cheie sandbox → Generează cheie sandbox | One per organization.Una per organizație. |
CompanyCompanie (key_sandbox_) | Configurare → Chei API → Cheie sandbox → Generează cheie sandboxConfigurare → Chei API → Cheie sandbox → Generează cheie sandbox | One per active company; automatically scoped to all four services.Una per companie activă; include automat toate cele patru servicii. |
Extrase
Mocks 4 bank accounts (BCR RON, BCR EUR, ING RON, CEC RON), 50 transactions, and 3 bank consents (BCR and ING enabled; CEC disabled/expired). Field and parameter reference is identical to the production Extrase page - only the host and key prefixes differ.
Simulează 4 conturi bancare (BCR RON, BCR EUR, ING RON, CEC RON), 50 de tranzacții și 3 consimțăminte bancare (BCR și ING active; CEC inactiv/expirat). Referința câmpurilor și parametrilor este identică cu pagina de producție Extrase - diferă doar hostul și prefixele cheilor.
List accountsListare conturi
Example requestExemplu de cerere
curl -sS 'https://sandbox.fint.ro/v1/extrase/accounts' \
-H 'X-Org-Key: org_sandbox_…' \
-H 'X-Api-Key: key_sandbox_…'
Response (first of 4 accounts)Răspuns (primul din 4 conturi)
{
"status": "success",
"msg": null,
"reason": null,
"data": {
"accounts": [
{
"uid": "bcrron0000000000000000000000acc1",
"status": "enabled",
"iban": "RO49RNCB0000000000000001",
"currency": "RON",
"balance": 15230.45,
"name": "Cont curent RON",
"ownerName": "Sandbox Test SRL",
"product": "Cont curent",
"cashAccountType": "CACC",
"bic": "RNCBROBU",
"bank": {
"code": "BCR",
"name": "BCR Bank",
"bic": "RNCBROBU",
"icon": "https://cdn.fint.ro/image/bank/icon/bcr.png"
},
"consentStatus": "enabled",
"consentValidUntil": "2026-12-26",
"lastTransactionsSync": "2026-06-29 07:00:00",
"createdOn": "2026-06-29 09:00:00",
"updatedOn": "2026-06-29 09:00:00"
}
],
"total": 4
}
}
The CEC RON account is returned too, but with consentStatus: disabled and an expired consentValidUntil.
Contul CEC RON este returnat și el, dar cu consentStatus: disabled și un consentValidUntil expirat.
List transactionsListare tranzacții
Supports the same query parameters as live: limit, offset, type, accountUid, from, to, q. Transactions belong only to the three enabled accounts (the disabled CEC account returns none).
Acceptă aceiași parametri de query ca live: limit, offset, type, accountUid, from, to, q. Tranzacțiile aparțin doar celor trei conturi active (contul CEC inactiv nu returnează niciuna).
Example requestExemplu de cerere
curl -sS 'https://sandbox.fint.ro/v1/extrase/transactions?limit=50&offset=0' \
-H 'X-Org-Key: org_sandbox_…' \
-H 'X-Api-Key: key_sandbox_…'
ResponseRăspuns
{
"status": "success",
"msg": null,
"reason": null,
"data": {
"transactions": [
{
"uid": "txn00000000000000000000000000001",
"type": "outgoing",
"bookingDate": "2026-06-28",
"interlocutor": "Enel Energie SA",
"interlocutorIban": "RO55BACX0000000000000555",
"amount": -73.30,
"currency": "RON",
"fintDescription": "Factura energie electrica",
"rawDescription": "Factura energie electrica / ref 1",
"category": "utilities",
"createdOn": "2026-06-28 09:00:00",
"accountUid": "bcrron0000000000000000000000acc1",
"accountIban": "RO49RNCB0000000000000001",
"accountName": "Cont curent RON",
"bank": {
"code": "BCR",
"name": "BCR Bank",
"bic": "RNCBROBU",
"icon": "https://cdn.fint.ro/image/bank/icon/bcr.png"
}
}
],
"total": 50,
"limit": 50,
"offset": 0
}
}
Get a transactionObținere tranzacție
Use a uid from the list above (e.g. txn00000000000000000000000000001). The detail response adds provider fields such as valueDate, executionDateTime, transactionId, entryReference and endToEndId.
Folosește un uid din lista de mai sus (ex. txn00000000000000000000000000001). Răspunsul detaliat adaugă câmpuri de la furnizor precum valueDate, executionDateTime, transactionId, entryReference și endToEndId.
curl -sS 'https://sandbox.fint.ro/v1/extrase/transaction/txn00000000000000000000000000001' \
-H 'X-Org-Key: org_sandbox_…' \
-H 'X-Api-Key: key_sandbox_…'
Create onboarding linkCreare link de onboarding
Example requestExemplu de cerere
curl -sS -X POST 'https://sandbox.fint.ro/v1/extrase/onboarding' \
-H 'X-Org-Key: org_sandbox_…' \
-H 'X-Api-Key: key_sandbox_…' \
-H 'Content-Type: application/json' \
-d '{}'
ResponseRăspuns
{
"status": "success",
"data": {
"authLink": "https://sandbox.fint.ro/consent/extrase",
"expiresOn": "2026-07-06 09:00:00"
}
}
The authLink opens a mock consent landing page (see Consent pages) - no bank OAuth occurs.
Linkul authLink deschide o pagină de consimțământ simulată (vezi Pagini de consimțământ) - nu are loc niciun OAuth bancar.
Check consentsVerificare consimțăminte
ResponseRăspuns
{
"status": "success",
"data": {
"consents": [
{
"bankCode": "BCR",
"bankName": "BCR Bank",
"consentStatus": "enabled",
"validUntil": "2026-12-26",
"updatedOn": "2026-06-26 09:00:00"
},
{
"bankCode": "ING",
"bankName": "ING Bank",
"consentStatus": "enabled",
"validUntil": "2026-12-26",
"updatedOn": "2026-06-26 09:00:00"
},
{
"bankCode": "CEC",
"bankName": "CEC Bank SA",
"consentStatus": "disabled",
"validUntil": "2026-06-19",
"updatedOn": "2026-03-21 09:00:00"
}
],
"total": 3
}
}
eFactura
Mocks 50 documents (30 outgoing, 20 incoming, including two type 381 credit notes). Document uids are production-shaped with a sandbox_ prefix (^sandbox_[A-Za-z0-9]{32}$) and are deterministic. Field reference is identical to the production eFactura page.
Simulează 50 de documente (30 emise, 20 primite, inclusiv două note de creditare tip 381). Uid-urile documentelor au forma de producție cu prefix sandbox_ (^sandbox_[A-Za-z0-9]{32}$) și sunt deterministe. Referința câmpurilor este identică cu pagina de producție eFactura.
Send a documentTrimitere document
Validates the JSON body and returns 201 with the uid of the first mock outgoing pending document - you can immediately fetch it with GET /v1/efactura/document. Nothing is uploaded to ANAF.
Validează corpul JSON și returnează 201 cu uid-ul primului document emis simulat cu status pending - îl poți obține imediat cu GET /v1/efactura/document. Nimic nu este încărcat la ANAF.
curl -sS -X POST 'https://sandbox.fint.ro/v1/efactura/send' \
-H 'X-Org-Key: org_sandbox_…' \
-H 'X-Api-Key: key_sandbox_…' \
-H 'Content-Type: application/json' \
-d '{
"documentNumber": "TEST-1",
"documentDate": "2026-06-29",
"currency": "RON",
"documentTypeCode": "380",
"from": {
"cui": "123456",
"name": "Sandbox Test SRL"
},
"to": {
"cui": "654321",
"name": "Buyer SRL"
},
"items": [
{
"name": "Service",
"quantity": 1,
"price": 100,
"vatRate": 19,
"vatScheme": "S"
}
]
}'
{
"documentNumber": "TEST-1",
"documentDate": "2026-06-29",
"currency": "RON",
"documentTypeCode": "380",
"from": {
"cui": "123456",
"name": "Sandbox Test SRL"
},
"to": {
"cui": "654321",
"name": "Buyer SRL"
},
"items": [
{
"name": "Service",
"quantity": 1,
"price": 100,
"vatRate": 19,
"vatScheme": "S"
}
]
}
Response (201)Răspuns (201)
{
"status": "success",
"msg": "Document has been validated with Fint. Pending upload and ANAF confirmation.",
"reason": null,
"data": {
"uid": "sandbox_XqdTICN1YmGkD8RV3cUE0keIZkRMoufc",
"status": "pending"
}
}
Get a documentObținere document
Example requestExemplu de cerere
curl -sS 'https://sandbox.fint.ro/v1/efactura/document?uid=sandbox_XqdTICN1YmGkD8RV3cUE0keIZkRMoufc' \
-H 'X-Org-Key: org_sandbox_…' \
-H 'X-Api-Key: key_sandbox_…'
ResponseRăspuns
{
"status": "success",
"data": {
"uid": "sandbox_XqdTICN1YmGkD8RV3cUE0keIZkRMoufc",
"type": "outgoing",
"status": "pending",
"errorMessage": null,
"source": "api",
"documentTypeCode": "380",
"documentNumber": "SBX-OUT-0001",
"documentDate": "2026-06-28",
"currency": "RON",
"fromTo": "Alpha Distribution SRL",
"fromToCui": "RO234567",
"total": 173.50,
"anafStatus": null,
"anafId": null,
"pdfAvailable": 0,
"xmlAvailable": 0,
"from": {
"cui": "RO123456",
"name": "Sandbox Test SRL",
"address": {
"line": "Str. Exemplu nr. 10",
"city": "București",
"postalCode": "010101",
"countrySubdivision": "RO-B",
"country": "RO"
}
},
"to": {
"cui": "RO234567",
"name": "Alpha Distribution SRL",
"address": {
"line": "Bd. Unirii nr. 5",
"city": "București",
"postalCode": "030101",
"countrySubdivision": "RO-B",
"country": "RO"
}
},
"items": [
{
"name": "Produs/serviciu sandbox",
"quantity": 1,
"unitOfMeasure": "C62",
"unitPrice": 145.80,
"vatRate": 19,
"lineTotal": 145.80
}
],
"paymentMeans": {
"paymentMeansCode": "30",
"paymentId": "SBX-OUT-0001",
"iban": "RO49RNCB0000000000000001",
"accountName": "Sandbox Test SRL",
"bic": "RNCBROBU"
},
"vatTotal": 27.70
}
}
List documentsListare documente
Same query parameters as live: type (outgoing default, or incoming), limit, offset, status.
Aceiași parametri de query ca live: type (outgoing implicit, sau incoming), limit, offset, status.
curl -sS 'https://sandbox.fint.ro/v1/efactura/documents?type=incoming&limit=50&offset=0' \
-H 'X-Org-Key: org_sandbox_…' \
-H 'X-Api-Key: key_sandbox_…'
ResponseRăspuns
{
"status": "success",
"msg": null,
"reason": null,
"data": {
"documents": [
{
"uid": "sandbox_…",
"type": "incoming",
"status": "validated",
"source": "spv",
"documentTypeCode": "380",
"documentNumber": "SUP-IN-0001",
"documentDate": "2026-06-28",
"currency": "RON",
"fromTo": "Alpha Distribution SRL",
"fromToCui": "RO234567",
"total": 167.75,
"anafStatus": "ok",
"anafId": "6000000001",
"processed": 1,
"createdOn": "2026-06-28 09:00:00",
"updatedOn": "2026-06-28 09:30:00"
}
],
"total": 20,
"limit": 50,
"offset": 0
}
}
Download a documentDescărcare document
No binary files exist in the sandbox, so this endpoint always returns 404 sandbox_download_unavailable.
În sandbox nu există fișiere binare, așa că acest endpoint returnează mereu 404 sandbox_download_unavailable.
{
"status": "error",
"msg": null,
"reason": "sandbox_download_unavailable",
"data": null
}
Create onboarding linkCreare link de onboarding
ResponseRăspuns
{
"status": "success",
"data": {
"authLink": "https://sandbox.fint.ro/consent/efactura",
"expiresOn": "2026-07-06 09:00:00"
}
}
Check consentVerificare consimțământ
ResponseRăspuns
{
"status": "success",
"data": {
"consentStatus": "enabled",
"validUntil": "2026-12-26",
"updatedOn": "2026-06-26 09:00:00"
}
}
Info CUI
Most CUIs return a fixed mock company, Sandbox Test SRL. The special CUI RO222222 returns 404 company_not_found so you can test the not-found path. Field reference is identical to the production Info CUI page.
Majoritatea CUI-urilor returnează o companie simulată fixă, Sandbox Test SRL. CUI-ul special RO222222 returnează 404 company_not_found, ca să poți testa cazul „negăsit”. Referința câmpurilor este identică cu pagina de producție Info CUI.
Example requestExemplu de cerere
curl -sS 'https://sandbox.fint.ro/v1/infocui?cui=RO123456' \
-H 'X-Org-Key: org_sandbox_…' \
-H 'X-Api-Key: key_sandbox_…'
ResponseRăspuns
{
"status": "success",
"msg": null,
"reason": null,
"data": {
"cui": "123456",
"name": "Sandbox Test SRL",
"registrationNumber": "J40/1234/2015",
"address": "Str. Exemplu nr. 10, Sector 1",
"addressFull": "Str. Exemplu nr. 10, Sector 1, București, România",
"city": "București",
"county": "București",
"countyCode": "B",
"country": "România",
"postalCode": "010101",
"phone": "+40212345678",
"fax": null,
"iban": "RO49RNCB0000000000000001",
"registrationStatus": "INREGISTRAT din data 2015-03-12",
"registrationDate": "2015-03-12",
"caenCode": "6201",
"eInvoiceEnabled": true,
"taxAuthority": "Administrația Sector 1",
"legalForm": "Societate cu răspundere limitată",
"vatRegistered": true,
"cashVatEnabled": false
}
}
Schimb valutar
Returns fixed mock rates with no upstream fetch: EUR 5.2390, USD 4.8500, GBP 6.1200, CHF 5.4500, HUF 1.3120 (per 100). from must be RON; an optional date is echoed back. Field reference is identical to the production Schimb valutar page.
Returnează cursuri simulate fixe, fără apel extern: EUR 5.2390, USD 4.8500, GBP 6.1200, CHF 5.4500, HUF 1.3120 (la 100). from trebuie să fie RON; un date opțional este returnat ca atare. Referința câmpurilor este identică cu pagina de producție Schimb valutar.
Example requestExemplu de cerere
curl -sS 'https://sandbox.fint.ro/v1/schimbvalutar?from=RON&to=EUR' \
-H 'X-Org-Key: org_sandbox_…' \
-H 'X-Api-Key: key_sandbox_…'
ResponseRăspuns
{
"status": "success",
"msg": null,
"reason": null,
"data": {
"from": "RON",
"to": "EUR",
"date": "2026-06-29",
"rate": 5.239,
"multiplier": 1,
"source": "bnr",
"publishedDate": "2026-06-29"
}
}
Consent landing pagesPagini de consimțământ
Onboarding endpoints return an authLink that opens in a browser. In sandbox these resolve to mock success pages - same layout as production, but no provider redirect, session, or database write.
Endpoint-urile de onboarding returnează un authLink care se deschide în browser. În sandbox acestea duc la pagini de succes simulate - același aspect ca producția, dar fără redirecționare către furnizor, sesiune sau scriere în baza de date.
| URL | SimulatesSimulează |
|---|---|
https://sandbox.fint.ro/consent/extrase | Extrase onboarding success (mock IBAN list)Succes onboarding Extrase (listă IBAN simulată) |
https://sandbox.fint.ro/consent/efactura | eFactura onboarding success (mock CUI)Succes onboarding eFactura (CUI simulat) |
Not available in sandbox. The Organization API (/v1/organization/*) is live-only and is not served by the sandbox host. Billing limits are never enforced and sandbox calls are not logged.
Indisponibil în sandbox. API-ul Organizație (/v1/organization/*) există doar pe producție și nu este servit de hostul sandbox. Limitele de facturare nu se aplică niciodată, iar apelurile sandbox nu sunt înregistrate.
ConceptsConcepte
Background on the Romanian financial and regulatory context behind Fint's services. Useful if you are new to open banking, e-invoicing, or Romanian tax identifiers.
Context financiar și de reglementare românesc din spatele serviciilor Fint. Util dacă ești nou în open banking, facturare electronică sau identificatori fiscali românești.
Open Banking (PSD2)Open Banking (PSD2)
PSD2 (the EU Payment Services Directive 2) requires banks to expose customer account data and payment initiation via standardized APIs, provided the account holder has given explicit consent. The consent is established through an OAuth flow with the bank: the account holder authenticates at their bank and authorizes a third party to read their accounts and transactions.
PSD2 (Directiva europeană privind serviciile de plată 2) obligă băncile să expună date de cont și inițiere de plăți prin API-uri standardizate, cu condiția consimțământului explicit al titularului de cont. Consimțământul se stabilește printr-un flux OAuth cu banca: titularul se autentifică la bancă și autorizează o terță parte să citească conturile și tranzacțiile.
In Fint's Extrase service, this means each connected bank requires its own PSD2 consent. Once authorized, Fint keeps accounts, balances, and transactions synchronized from the bank. The public API returns this already-synchronized data; it does not call the bank in real time. Consents have a validity period set by the bank; Fint maintains the connection and notifies your organization when a consent expires or is revoked.
În serviciul Extrase Fint, asta înseamnă că fiecare bancă conectată necesită propriul consimțământ PSD2. Odată autorizat, Fint menține conturile, soldurile și tranzacțiile sincronizate de la bancă. API-ul public returnează aceste date deja sincronizate; nu apelează banca în timp real. Consimțămintele au o perioadă de valabilitate stabilită de bancă; Fint menține conexiunea și notifică organizația când un consimțământ expiră sau este revocat.
See Extrase for API endpoints and consent setup.
Vezi Extrase pentru endpoint-uri API și configurarea consimțământului.
eFactura (Romanian e-invoicing)eFactura (facturare electronică românească)
eFactura is the Romanian government's electronic invoicing system, operated by ANAF (Agenția Națională de Administrare Fiscală). Businesses in Romania are legally required to submit and receive invoices electronically through ANAF's SPV (Spațiu Privat Virtual). Invoices are formatted as UBL 2.1 XML; ANAF validates the document and countersigns it upon acceptance.
eFactura este sistemul guvernamental român de facturare electronică, operat de ANAF (Agenția Națională de Administrare Fiscală). Afacerile din România sunt obligate legal să trimită și să primească facturi electronic prin SPV ANAF (Spațiu Privat Virtual). Facturile sunt formatate ca UBL 2.1 XML; ANAF validează documentul și îl contrasemnează la acceptare.
To submit invoices via Fint, the company must have active SPV access at ANAF and must authorize Fint through an ANAF OAuth consent. This authorization can only be completed by a person who holds a qualified digital certificate registered at ANAF for that company's CUI. Once authorized, Fint submits outgoing documents to ANAF and provides incoming documents received from other parties.
Pentru a trimite facturi prin Fint, compania trebuie să aibă acces SPV activ la ANAF și să autorizeze Fint printr-un consimțământ OAuth ANAF. Această autorizare poate fi finalizată doar de o persoană cu certificat digital calificat înregistrat la ANAF pentru CUI-ul companiei. Odată autorizat, Fint trimite documentele de ieșire la ANAF și furnizează documente de intrare primite de la alte părți.
The most common document type is 380 (standard invoice). Other types include 381 (credit note) and 384 (corrective invoice). See eFactura for the full API reference and consent setup.
Cel mai frecvent tip de document este 380 (factură standard). Alte tipuri includ 381 (notă de creditare) și 384 (factură corectată). Vezi eFactura pentru referința API completă și configurarea consimțământului.
CUI (Cod Unic de Înregistrare)CUI (Cod Unic de Înregistrare)
The CUI is the Romanian company fiscal identifier, roughly equivalent to a VAT or company registration number in other EU countries. It uniquely identifies a legal entity registered in Romania. A CUI may appear with or without the RO prefix (e.g. RO12345678 or 12345678); Fint normalizes all inputs to digits only.
CUI-ul este identificatorul fiscal al companiei românești, echivalent aproximativ cu numărul de TVA sau de înregistrare în alte țări UE. Identifică unic o entitate juridică înregistrată în România. Un CUI poate apărea cu sau fără prefixul RO (ex. RO12345678 sau 12345678); Fint normalizează toate intrările la cifre.
The CUI is used in two ways within Fint: as the lookup target in Info CUI (retrieve public company data for any valid Romanian CUI), and as the company identifier in eFactura where from.cui must match the CUI for which your ANAF consent was granted.
CUI-ul este folosit în două moduri în Fint: ca țintă de căutare în Info CUI (recuperează date publice despre companie pentru orice CUI românesc valid) și ca identificator de companie în eFactura, unde from.cui trebuie să coincidă cu CUI-ul pentru care ai primit consimțământ ANAF.
Reference exchange ratesCursuri de referință
One official Romanian reference exchange rate is published per foreign currency per banking day, typically around 13:00 local time. Rates are expressed as RON per 1 unit of the foreign currency, with a multiplier applied for currencies quoted in lots (e.g. 100 JPY). These are official reference rates used for accounting and fiscal purposes, not live market trading rates.
Se publică un curs oficial românesc de referință per valută străină per zi bancară, de obicei în jurul orei 13:00 ora locală. Cursurile sunt exprimate ca RON per 1 unitate de valută străină, cu multiplicator aplicat pentru valute cotate în loturi (ex. 100 JPY). Sunt cursuri oficiale de referință pentru contabilitate și fiscalitate, nu cursuri de tranzacționare live.
When querying a rate for a date when no publication exists (weekends, public holidays, or before the daily update), Fint returns the most recent available rate with its actual publication date in publishedDate. Future dates are rejected with 400 future_date. See Schimb valutar for the API reference.
Când interoghezi un curs pentru o dată fără publicare (weekend, sărbători legale sau înainte de actualizarea zilnică), Fint returnează cel mai recent curs disponibil cu data reală de publicare în publishedDate. Datele viitoare sunt respinse cu 400 future_date. Vezi Schimb valutar pentru referința API.
ConventionsConvenții
Conventions shared by every Fint endpoint: request format, the response envelope, error handling, and identifiers.
Convenții comune tuturor endpoint-urilor Fint: formatul cererii, envelopa de răspuns, gestionarea erorilor și identificatorii.
GeneralGenerale
- Content type: request bodies are JSON (
Content-Type: application/json) unless noted. - Tip de conținut: corpurile cererilor sunt JSON (
Content-Type: application/json), dacă nu se specifică altfel. - Envelope: responses use
{ "status", "msg", "reason", "data" }. On success,msgandreasonare usuallynull. - Envelopă: răspunsurile folosesc
{ "status", "msg", "reason", "data" }. La succes,msgșireasonsunt de obiceinull. - Error handling: branch on the stable
reasonfield (snake_case), not the human-readablemsg. - Gestionarea erorilor: ramifică pe câmpul stabil
reason(snake_case), nu pemsglizibil. - Identifiers: resources are referenced by a public
uid; internal numeric ids are never exposed. - Identificatori: resursele sunt referite printr-un
uidpublic; id-urile numerice interne nu sunt expuse niciodată.
Error envelopeEnvelopă de eroare
All responses share a single JSON envelope. On errors, branch on the stable reason field rather than the human-readable msg.
Toate răspunsurile folosesc o singură envelopă JSON. La erori, ramifică pe câmpul stabil reason, nu pe msg lizibil.
{
"status": "error",
"msg": "A human-readable English sentence.",
"reason": "stable_snake_case_identifier",
"data": null
}
The /efactura/download endpoint is the exception on success: it streams a binary file instead of the envelope. Validation errors on /efactura/send include a data.errors[] array with per-field code, field and message.
Endpoint-ul /efactura/download este excepția la succes: transmite un fișier binar în loc de envelopă. Erorile de validare la /efactura/send includ un array data.errors[] cu code, field și message per câmp.
Error codes are documented where they occur: each service’s reference page lists its own reason codes, and authentication errors are documented under Authentication.
Codurile de eroare sunt documentate acolo unde apar: pagina de referință a fiecărui serviciu listează propriile coduri reason, iar erorile de autentificare sunt documentate la Autentificare.
Request bodyCorpul cererii
- Content-Type: always
Content-Type: application/jsonfor POST requests. - Content-Type: întotdeauna
Content-Type: application/jsonpentru cererile POST. - Root type: the body must be a JSON object (
{…}). An empty object is accepted on endpoints that take no body. - Tipul rădăcinii: corpul trebuie să fie un obiect JSON (
{…}). Un obiect gol este acceptat pe endpoint-urile care nu necesită corp. - Size limit: 512 KiB maximum. Bodies larger than this are rejected before JSON parsing.
- Limită de dimensiune: maximum 512 KiB. Corpurile mai mari sunt respinse înainte de parsarea JSON.
Body parse errors return 400 invalid_json with a data.detail sub-code identifying the cause:
Erorile de parsare a corpului returnează 400 invalid_json cu un sub-cod data.detail care identifică cauza:
data.detail | CauseCauză |
|---|---|
empty_body | No body sent when one is requiredNiciun corp trimis când este necesar |
payload_too_large | Body exceeds 512 KiBCorpul depășește 512 KiB |
json_syntax_error | Body is not valid JSONCorpul nu este JSON valid |
invalid_root | Root value is not a JSON objectValoarea rădăcină nu este un obiect JSON |
PaginationPaginare
List endpoints use offset-based pagination with two query parameters: limit (page size, default 50, max 100) and offset (rows to skip, default 0). The response always echoes both values back alongside a total count of all matching rows - use it to calculate whether more pages exist.
Endpoint-urile de listare folosesc paginare bazată pe offset cu doi parametri: limit (dimensiunea paginii, implicit 50, maxim 100) și offset (rânduri de sărit, implicit 0). Răspunsul returnează mereu ambele valori împreună cu un total al tuturor rândurilor care corespund - folosește-l pentru a calcula dacă mai există pagini.
{
"status": "success",
"msg": null,
"reason": null,
"data": {
"documents": [
"..."
],
"total": 142,
"limit": 50,
"offset": 0
}
}
Monetary amountsSume monetare
All monetary amounts in API responses are decimal strings, not JSON numbers - e.g. "119.00", not 119.00. This avoids the floating-point rounding errors that affect native floats in most languages (119.10 cannot be represented exactly in binary IEEE 754). Always parse monetary fields with your language’s decimal type (Decimal, BigDecimal, decimal.Decimal, etc.).
Toate sumele monetare din răspunsurile API sunt șiruri zecimale, nu numere JSON - ex. "119.00", nu 119.00. Aceasta evită erorile de rotunjire în virgulă mobilă care afectează float-urile native în majoritatea limbajelor (119.10 nu poate fi reprezentat exact în IEEE 754 binar). Parsează întotdeauna câmpurile monetare cu tipul zecimal al limbajului tău (Decimal, BigDecimal, decimal.Decimal etc.).
Dates and timestampsDate și timestamp-uri
- Dates - calendar dates use
YYYY-MM-DD(e.g."2026-06-29"), both in query parameters and response fields such asdocumentDate,bookingDate,validUntil. - Date calendaristice - folosesc formatul
YYYY-MM-DD(ex."2026-06-29"), atât în parametrii de interogare cât și în câmpurile de răspuns precumdocumentDate,bookingDate,validUntil. - Timestamps - datetime fields use
YYYY-MM-DD HH:MM:SS(e.g."2026-06-29 10:00:00"), as increatedOn,updatedOn,expiresOn. - Timestamp-uri - câmpurile datetime folosesc
YYYY-MM-DD HH:MM:SS(ex."2026-06-29 10:00:00"), ca încreatedOn,updatedOn,expiresOn.
Unknown routesRute necunoscute
Any misspelled or non-existent path under /v1/ returns 404 not_found in the standard JSON envelope - never an HTML error page. It is safe to always parse Fint API responses as JSON.
Orice cale greșită sau inexistentă sub /v1/ returnează 404 not_found în envelopa JSON standard - niciodată o pagină de eroare HTML. Răspunsurile API Fint pot fi parsate întotdeauna ca JSON.
Self-service APIAPI self-service
Most operations you would perform in the Fint dashboard (/ui) are also available through the API, so you can provision and operate entities programmatically - no manual UI steps.
Majoritatea operațiunilor pe care le-ai face în panoul Fint (/ui) sunt disponibile și prin API, astfel încât poți provisiona și opera entități programatic - fără pași manuali în interfață.
Two building blocks make this possible. The Organization API manages organization-level resources - create companies, activate or deactivate services, and issue company API keys - using your organization key alone. Per-service onboarding endpoints (eFactura and Extrase) generate a browser link your end-user opens to grant ANAF or bank (PSD2) consent, so even consent flows can be triggered straight from the API.
Două componente fac asta posibil. API-ul Organizație gestionează resursele la nivel de organizație - creează companii, activează sau dezactivează servicii și emite chei API de companie - folosind doar cheia de organizație. Endpoint-urile de onboarding per serviciu (eFactura și Extrase) generează un link de browser pe care utilizatorul final îl deschide pentru a acorda consimțământul ANAF sau bancar (PSD2), astfel încât și fluxurile de consimțământ pot fi declanșate direct din API.
Enterprise plan. The Organization API capabilities below require the Enterprise plan. On other plans these are managed in the UI, and the API returns 403 enterprise_required.
Plan Enterprise. Capabilitățile API-ului Organizație de mai jos necesită planul Enterprise. Pe alte planuri acestea se gestionează în interfață, iar API-ul returnează 403 enterprise_required.
UI vs APIInterfață vs API
| CapabilityCapabilitate | UI (/ui)Interfață (/ui) | Self-service APIAPI self-service |
|---|---|---|
| Create company (license)Creare companie (licență) | YesDa | Yes - Organization API EnterpriseDa - API Organizație Enterprise |
| List companiesListare companii | YesDa | Yes - Organization API EnterpriseDa - API Organizație Enterprise |
| Activate / deactivate a service on a companyActivare / dezactivare serviciu pe o companie | YesDa | Yes - Organization API EnterpriseDa - API Organizație Enterprise |
| Create company API keyCreare cheie API de companie | YesDa | Yes - Organization API EnterpriseDa - API Organizație Enterprise |
| Create organization (master) API keyCreare cheie API de organizație (master) | YesDa | No - UI onlyNu - doar în interfață |
| Generate sandbox keysGenerare chei sandbox | YesDa | No - UI onlyNu - doar în interfață |
| eFactura ANAF consent onboardingOnboarding consimțământ ANAF eFactura | YesDa | Yes - onboarding endpointDa - endpoint onboarding |
| Extrase bank (PSD2) consent onboardingOnboarding consimțământ bancar (PSD2) Extrase | YesDa | Yes - onboarding endpointDa - endpoint onboarding |
| Manage users / rolesGestionare utilizatori / roluri | YesDa | No - UI onlyNu - doar în interfață |
See the Organization API for request and response shapes, and Account model for how organizations, companies, and keys fit together.
Vezi API-ul Organizație pentru formatele de cerere și răspuns și Modelul de cont pentru cum se leagă organizațiile, companiile și cheile.