Hotărâre nr.33 din 16.02.2026 privind aprobarea Cerinţelor funcţionale şi tehnice pentru interfeţele prestatorilor de servicii de plată care oferă servicii de administrare cont
BANCA NAŢIONALĂ A MOLDOVEI
H O T Ă R Â R E
privind aprobarea Cerinţelor funcţionale şi tehnice pentru
interfeţele prestatorilor de servicii de plată care
oferă servicii de administrare cont
nr. 33 din 16.02.2026
(în vigoare 20.03.2026)
Monitorul Oficial al R. Moldova nr. 88-91 art.137 din 20.02.2026
* * *
În temeiul art.524 alin.(7) din Legea nr.114/2012 cu privire la serviciile de plată şi monedă electronică (Monitorul Oficial al Republicii Moldova, 2012, nr.193-197, art.661), cu modificările ulterioare, şi al pct.65 din Regulamentul cu privire la autentificarea strictă a clienţilor şi standardul deschis, comun şi sigur de comunicare între prestatorii de servicii de plată, aprobat prin Hotărârea Comitetului executiv nr.12/2024 (publicat în Monitorul Oficial al Republicii Moldova, 2024, nr.36-39, art.90), Comitetul executiv al Băncii Naţionale a Moldovei
HOTĂRĂŞTE:
1. Se aprobă Cerinţele funcţionale şi tehnice pentru interfeţele prestatorilor de servicii de plată care oferă servicii de administrare cont (se anexează).
2. Prestatorii de servicii de plată prevăzuţi la art.5 alin.(1) lit.a)-c) din Legea nr.114/2012 cu privire la serviciile de plată şi moneda electronică vor asigura conformarea cu cerinţele 4 şi 5 din Tabelul nr.3 din Cerinţele funcţionale şi tehnice pentru interfeţele prestatorilor de servicii de plată care oferă servicii de administrare cont, în termen de 8 luni de la data intrării în vigoare a prezentei hotărâri.
3. Prezenta hotărâre intră în vigoare peste o lună de la data publicării în Monitorul Oficial al Republicii Moldova.
| PREŞEDINTELE | |
| COMITETULUI EXECUTIV | Anca-Dana DRAGU |
| Nr.33. Chişinău, 16 februarie 2026. | |
Anexă
la Hotărârea Comitetului executiv
al Băncii Naţionale a Moldovei
nr.33 din 16 februarie 2026
Cerinţe funcţionale şi tehnice pentru interfeţele prestatorilor
de servicii de plată care oferă servicii de administrare cont
Capitolul I
DISPOZIŢII GENERALE
Secţiunea 1
Obiectul şi scopul
1. Cerinţele funcţionale şi tehnice pentru interfeţele prestatorilor de servicii de plată care oferă servicii de administrare cont (în continuare – Cerinţe) stabilesc condiţiile funcţionale, tehnice şi de securitate pentru implementarea Open Banking de către prestatorii de servicii de plată care oferă servicii de administrare cont (ASPSP), în conformitate cu reglementările naţionale şi standardele internaţionale aplicabile.
2. Cerinţele reprezintă standardul naţional pentru Open Banking, au ca obiectiv asigurarea conformităţii cu prevederile Legii 114/2012 cu privire la serviciile de plată şi monedă electronică (în continuare – Legea nr.114/2012) şi ale Regulamentului nr.12/2024 cu privire la autentificarea strictă a clienţilor şi standardul deschis, comun şi sigur de comunicare între prestatorii de servicii de plată, aprobat prin Hotărârea Comitetului executiv al Băncii Naţionale a Moldovei nr.12/2024 (în continuare – Regulamentul nr.12/2024), facilitarea interoperabilităţii cu prestatorii de servicii de plată terţi şi crearea unei platforme sigure şi standardizate pentru utilizatori.
Secţiunea 2
Noţiuni principale
3. Noţiunile şi expresiile utilizate în prezentele Cerinţe au semnificaţia prevăzută în Legea nr.114/2012 şi în actele normative ale Băncii Naţionale a Moldovei (în continuare - BNM), emise în temeiul Legii nr.114/2012.
4. Suplimentar, în sensul prezentelor Cerinţe, se aplică următoarele noţiuni:
4.1. Autentificare strictă a clienţilor – autentificare care se bazează pe utilizarea a două sau mai multe elemente din categoria cunoştinţelor deţinute (ceva ce doar utilizatorul cunoaşte), a posesiei (ceva ce doar utilizatorul posedă) şi a inerenţei (ceva ce reprezintă utilizatorul). Elementele respective sunt independente, iar compromiterea unui element nu duce la compromiterea fiabilităţii celorlalte elemente. De asemenea, elementele respective sunt concepute astfel încât să protejeze confidenţialitatea datelor de autentificare;
4.2. Berlin Group – un grup de lucru care defineşte standarde tehnice pentru implementarea Open Banking în conformitate cu Directiva (UE) 2015/2366 a Parlamentului European şi a Consiliului din 25 noiembrie 2015 privind serviciile de plată în cadrul pieţei interne, de modificare a Directivelor 2002/65/CE, 2009/110/CE şi 2013/36/UE şi a Regulamentului (UE) nr.1093/2010 şi de abrogare a Directivei 2007/64/CE (text cu relevanţă pentru SEE);
4.3. Interfeţe specifice – reprezintă setul de interfeţe implementate de prestatorii de servicii de plată care oferă servicii de administrare cont, conform standardului deschis, comun şi sigur de comunicare, care permit schimbul securizat şi standardizat de informaţii între participanţi, precum şi iniţierea operaţiunilor financiare în numele utilizatorilor, cu respectarea Cerinţelor;
4.4. Prestator de servicii terţ – entitate autorizată care, cu consimţământul expres al utilizatorilor, poate accesa informaţiile financiare din conturile acestora sau poate iniţia plăţi în numele lor;
4.5. Metoda Redirect – modalitate de autentificare şi autorizare în cadrul Open Banking, prin care utilizatorul este redirecţionat din aplicaţia prestatorului de servicii terţe către aplicaţia prestatorului de servicii de plată care oferă servicii de administrare cont pentru efectuarea Autentificării Stricte a Clientului şi pentru autorizarea unei plăţi sau a accesului de date;
4.6. Dashboard – reprezintă o interfaţă digitală unificată, pusă la dispoziţia utilizatorului de către prestatorul de servicii de plată care oferă servicii de administrare cont care permite vizualizarea, controlul şi gestionarea tuturor permisiunilor acordate prestatorilor de servicii terţi pentru accesarea datelor financiare ale utilizatorului;
4.7. SCA – Autentificare strictă a clienţilor;
4.8. API – Interfeţe specifice;
4.9. ASPSP – Prestator de servicii de plată care oferă servicii de administrare cont;
4.10. AISP – Prestator de servicii de informare cu privire la conturi;
4.11. PISP – Prestator de servicii de iniţiere a plăţii;
4.12. TPP – Prestator de servicii terţ;
4.13. AIS – Serviciu de informare cu privire la conturi;
4.14. PIS – Serviciu de iniţiere a plăţii;
4.15. Open Banking – Standard deschis, comun şi sigur de comunicare, în sensul art.524 alin.(7) din Legea nr.114/2012 şi pct.3 din Regulamentul nr.12/2024;
4.16. PSU – Utilizator al serviciilor de plată;
4.17. URI – Identificator Uniform de Resurse;
4.18. CAS – Serviciul de căutare al Sistemului de Plăţi Instant.
Capitolul II
MODELUL DE FUNCŢIONARE ŞI TIPURILE
DE SERVICII DISPONIBILE ÎN OPEN BANKING
5. Modelul de funcţionare Open Banking permite accesul securizat şi controlat la informaţiile financiare ale utilizatorilor şi iniţierea plăţilor în numele acestora, cu consimţământul expres al deţinătorului contului. Interacţiunea dintre părţile implicate se realizează prin intermediul API standardizate, care asigură interoperabilitatea, securitatea şi protecţia datelor utilizatorilor.
6. În Open Banking sunt disponibile următoarele tipuri de servicii:
6.1. AIS – acest serviciu permite TPP să acceseze şi să consolideze date financiare din conturile utilizatorilor de la diferiţi prestatori de servicii de plată.
6.2. PIS – acest serviciu permite TPP să iniţieze plăţi din conturile utilizatorilor, cu consimţământul acestora, prin intermediul API puse la dispoziţie de ASPSP, la care deţin conturi. Utilizatorii autorizează tranzacţiile prin mecanismele de autentificare impuse de prestatorul respectiv, conform cerinţelor de SCA.
7. ASPSP permite accesul la serviciile AIS şi PIS, TPP-urilor care:
7.1. sunt înregistraţi pentru prestarea serviciilor de informare cu privire la conturi sau licenţiaţi pentru prestarea serviciului de iniţiere a plăţii, conform prevederilor Legii nr.114/2012;
7.2. utilizează certificatele cheilor publice pentru autentificare şi semnătură electronică, conform prevederilor Legii nr.124/2022 privind identificarea electronică şi serviciile de încredere (în continuare – Legea nr.124/2022).
8. La implementarea Open Banking, ASPSP ţine cont de următoarele funcţionalităţi:
8.1. serviciile Open Banking sunt disponibile persoanelor fizice;
8.2. accesul la Open Banking este realizat prin aplicaţiile mobile a prestatorilor de servicii de plată;
8.3. conturile de plăţi sunt operate în moneda naţională (MDL), în corespundere cu Legea nr.114/2012;
8.4. produsele de plată disponibile în Open Banking includ plăţi domestice de tip A2A (domestic-payments) şi plăţi instant de tip P2P (instant-payments), oferite într-un singur serviciu de plată (“payments”) pentru iniţierea plăţilor una câte una;
8.5. autorizarea consimţămintelor şi autentificarea utilizatorilor se realizează prin metoda redirect.
Capitolul III
CERINŢE FUNCŢIONALE ŞI TEHNICE
Secţiunea 1
Cerinţe funcţionale şi de interfaţă
9. Implementarea Open Banking de către ASPSP trebuie să asigure o experienţă optimă pentru PSU, garantând securitate, accesibilitate şi transparenţă, iar cerinţele din Tabelele nr.1, nr.2 şi nr.3 să fie concentrate pe interacţiunea intuitivă a PSU cu aplicaţiile ASPSP, precum şi pe conformitatea cu standardele de securitate şi reglementările aplicabile în conformitate cu prevederile Regulamentului nr.12/2024.
10. ASPSP trebuie să asigure un design intuitiv a interfeţelor destinate Open Banking din aplicaţia mobilă, coerent şi uşor de navigat, care să permită utilizatorilor să găsească rapid informaţiile necesare.
11. ASPSP trebuie să respecte cerinţele pentru AIS, prevăzute în tabelul nr.1.
Tabelul nr.1
| Cerinţa 1 | ASPSP trebuie să aplice SCA pentru accesarea datelor de cont, cu excepţia cazurilor în care se aplică o excepţie reglementată în conformitate cu prevederile Regulamentului nr.12/2024. |
| Cerinţa 2 | Procesul de autentificare în aplicaţia mobilă a ASPSP trebuie să fie echivalent cu cel pe care PSU îl parcurge la accesarea directă a aplicaţiei mobile (biometric, cod PIN, credenţiale), fără paşi suplimentari. |
| Cerinţa 3 | Aplicaţia ASPSP trebuie să suporte redirecţionarea aplicaţie-la-aplicaţie (app-to-app), asigurând o tranziţie sigură şi transparentă între AISP şi ASPSP. |
| Cerinţa 4 | ASPSP trebuie să afişeze un ecran intermediar care să indice starea solicitării şi să informeze PSU despre redirecţionarea către aplicaţia AISP. După confirmarea consimţământului, redirecţionarea trebuie realizată automat, pe acelaşi dispozitiv. |
| Cerinţa 5 | ASPSP trebuie să informeze PSU despre perioada de valabilitate şi termenul de expirare al consimţământului acordat pentru accesarea datelor din contul de plăţi. |
| Cerinţa 6 | ASPSP trebuie să permită partajarea simultană a mai multor conturi deţinute de PSU, fără a impune limitări privind numărul acestora. |
| Cerinţa 7 | ASPSP trebuie să asigure că doar conturile active sunt partajate; conturile blocate sau închise nu pot fi furnizate către TPP. |
| Cerinţa 8 | În cazul închiderii sau blocării unui cont care este partajat cu TPP în baza unui consimţământ valid oferit de PSU, ASPSP trebuie să aplice următoarele reguli: Consimţământ oferit de PSU pentru un singur cont care a fost închis sau blocat: consimţământul este revocat automat de ASPSP, iar la solicitarea TPP, ASPSP răspunde că accesul a fost revocat şi resursa (contul) nu mai există. Consimţământ oferit de PSU pentru mai multe conturi, iar unul din aceste conturi este închis sau blocat: consimţământul rămâne valid pentru conturile active rămase iar pentru contul închis sau blocat nu se va mai partaja informaţia. În cazul redeschiderii sau deblocării contului, pentru acesta va fi necesar un consimţământ nou. |
| Cerinţa 9 | ASPSP trebuie să transmită către AISP datele solicitate (ex. sold, tranzacţii) doar în limita consimţământului valid oferit de PSU. |
| Cerinţa 10 | ASPSP trebuie să gestioneze cazurile de eşec (autentificare nereuşită, lipsa consimţământului, erori tehnice, cont IBAN incorect) şi să comunice răspunsurile corespunzătoare către TPP. |
| Cerinţa 11 | ASPSP trebuie să asigure procesarea rapidă (preferabil în câteva secunde) a solicitărilor de autentificare şi autorizare, pentru a menţine încrederea utilizatorilor şi o experienţă fluentă, în special pentru iniţierea plăţilor sau aprobarea tranzacţiilor. |
| Cerinţa 12 [TECH] | ASPSP trebuie să limiteze numărul de solicitări provenite de la aceiaşi AISP la maximum 4 apeluri într-un interval de 24 de ore, fără acţiunea explicită a PSU. |
| Cerinţa 13 [TECH] | ASPSP trebuie să gestioneze corect adresa (URI) către care PSU va fi redirecţionat înapoi spre aplicaţia AISP după finalizarea autentificării sau consimţământului. |
12. ASPSP trebuie să respecte cerinţele pentru PIS, prevăzute în tabelul nr.2.
Tabelul nr.2
| Cerinţa 1 | ASPSP trebuie să aplice SCA. Prin derogare, SCA nu va fi aplicat în cazul în care devin incidente excepţiile reglementate de Regulamentul nr.12/2024. |
| Cerinţa 2 | Dacă PSU are aplicaţia ASPSP instalată pe acelaşi dispozitiv, redirecţionarea trebuie să invoce aplicaţia ASPSP doar pentru autentificare, fără a introduce ecrane suplimentare. |
| Cerinţa 3 | Autentificarea în aplicaţia ASPSP trebuie să aibă cel mult acelaşi număr de paşi ca atunci când PSU accesează direct aplicaţia (biometric, cod PIN, credenţiale etc.). |
| Cerinţa 4 | După autentificarea reuşită, PSU trebuie redirecţionat direct către pagina cu detaliile plăţii (sumă, comerciant, comision dacă este cazul) pentru confirmarea sau respingerea plăţii. |
| Cerinţa 5 | În cazul în care cererea de plată nu include contul de debitor sau/şi alte date necesare pentru efectuarea plăţii, ASPSP trebuie să ofere PSU opţiunea de a selecta contul din care va fi efectuată plata şi/sau completarea altor informaţii. |
| Cerinţa 6 | ASPSP trebuie să valideze toate datele plăţii furnizate de PISP şi să gestioneze corect situaţiile de eroare (cont IBAN incorect, date invalide, cont blocat etc.), oferind răspuns corespunzător către PISP. |
| Cerinţa 7 | ASPSP trebuie să afişeze un ecran intermediar care să indice statutul cererii şi să informeze PSU că va fi redirecţionat automat înapoi la PISP, fără a necesita acţiuni suplimentare. |
| Cerinţa 8 | Confirmarea plăţii către PISP şi PSU trebuie să fie imediată, incluzând un ID unic de referinţă şi statutul curent al plăţii (în aşteptare, acceptată, respinsă). |
| Cerinţa 9 | Plăţile trebuie procesate conform prevederilor Legii 114/2012 şi actelor normative ale BNM emise în temeiul Legii nr.114/2012, inclusiv respectarea orelor de cut-off, conversia valutară dacă este necesar şi raportarea către autorităţile competente. |
| Cerinţa 10 | ASPSP trebuie să permită urmărirea în timp real a statutului plăţii, accesibil atât prin interfaţa PSU cât şi prin cea a PISP. Notificările la procesarea cu succes sau eşuată a plăţii sunt recomandate pentru transparenţă. |
| Cerinţa 11 | În cazul iniţierii unei plăţi instant de către PISP, ASPSP trebuie să solicite contul implicit şi alte detalii de la CAS, pe baza aliasului furnizat în câmpul creditorAccount. |
| Cerinţa 12 [TECH] | Toate acţiunile relevante (autentificare, validare plată, confirmare/respingere) trebuie să fie logate pentru trasabilitate completă şi audit. |
13. ASPSP trebuie să respecte cerinţele şi recomandările pentru PIS şi AIS (incluse într-un Dashboard), prevăzute în tabelul nr.3.
Tabelul nr.3
| Cerinţa 1 | ASPSP trebuie să pună la dispoziţia PSU un dashboard centralizat, accesibil prin canelele puse la dispoziţie de ASPSP ( aplicaţie web şi/sau mobile), unde să fie afişate toate consimţămintele active. Pentru fiecare TPP, dashboard-ul trebuie să afişeze: denumirea TPP-ului, conturile vizate, tipul de acces acordat (ex. sold, tranzacţii), scopul declarat al accesului şi perioada de valabilitate a consimţământului. |
| Cerinţa 2 | Informaţiile afişate în dashboard trebuie să fie actualizate în timp real. Orice acţiune de revocare sau modificare a unui consimţământ trebuie reflectată imediat. |
| Cerinţa 3 | PSU trebuie să aibă posibilitatea de a revoca accesul acordat unui TPP printr-o acţiune simplă şi intuitivă, iar revocarea trebuie să producă efecte instantanee. |
| Cerinţa 4 | După revocare, ASPSP trebuie să transmită PSU o confirmare clară, care să conţină numele TPP-ului, data şi ora la care a fost realizată revocarea. |
| Cerinţa 5 | PSU trebuie notificat în mod proactiv atunci când un consimţământ se apropie de expirare, pentru a putea decide dacă doreşte să-l reînnoiască sau să-l lase să expire. |
| Recomandare 6 | Este recomandat ca dashboard-ul să includă şi un istoric detaliat al accesului TPP-urilor, care să indice data acordării, modificării sau revocării consimţământului, precum şi tipurile de date accesate de TPP pe perioada respectivă. |
Secţiunea 2
Cerinţe tehnice
14. ASPSP trebuie să asigure o infrastructură tehnică, capabilă să ofere interoperabilitate cu TPP-urile autorizate, respectând prezentele Cerinţe. Sistemele implementate trebuie să garanteze protecţia datelor PSU, integritatea tranzacţiilor şi continuitatea serviciilor furnizate.
15. ASPSP trebuie să respecte cerinţele tehnice prevăzute în tabelul nr.4.
Tabelul nr.4
| Cerinţa 1 | Conformitatea cu standardele API – în cadrul Open Banking din Moldova, ASPSP are obligaţia de a dezvolta şi menţine API-urile conform Anexei nr.1 la prezentele Cerinţe. Aceste API-uri trebuie să fie actualizate în timp util, pentru a asigura compatibilitatea şi respectarea permanentă a cerinţelor stabilite. |
| Cerinţa 2 | Autentificare şi gestionarea identităţii – ASPSP trebuie să implementeze mecanisme de autentificare şi identificare a TPP-urilor conform prevederilor Legii nr.124/2022, inclusiv utilizarea certificatelor cheii publice, acolo unde este aplicabil), precum şi proceduri de semnare şi criptare a datelor transmise. |
| Cerinţa 3 | Protecţia datelor şi confidenţialitate – ASPSP are responsabilitatea de a aplica măsuri avansate de securitate, politici stricte de control al accesului şi mecanisme pentru prevenirea scurgerilor sau utilizării neautorizate a informaţiilor sensibile. |
| Cerinţa 4 | Gestionarea şi raportarea incidentelor – ASPSP trebuie să dispună de un sistem eficient de detecţie, gestionare şi raportare a incidentelor de securitate, notificând autorităţile competente şi, după caz, PSU afectaţi. În funcţie de natura incidentului, ASPSP vor utiliza formele şi modalităţile de notificare prevăzute de cadrul normativ aplicabil. |
| Cerinţa 5 | SCA – ASPSP este responsabil de aplicarea SCA în toate fluxurile relevante, cu excepţia cazurilor prevăzute de în conformitate cu prevederile Regulamentului nr.12/2024. Mecanismele implementate trebuie să asigure un nivel ridicat de securitate şi protecţie împotriva fraudelor, utilizând metode de autentificare echivalente celor disponibile în canalele proprii (ex. biometric, cod de acces, parolă). |
| Cerinţa 6 | Capacitate de procesare şi scalabilitate – infrastructura tehnică a ASPSP trebuie dimensionată astfel încât să gestioneze eficient volume mari de cereri simultane provenite de la TPP-uri, menţinând timpi de răspuns adecvaţi şi disponibilitatea continuă a serviciilor. |
| Cerinţa 7 | Testarea, auditarea şi certificarea sistemelor informatice utilizate pentru implementarea Open Banking se efectuează conform cerinţelor pentru sisteme/servicii aferente TIC critice prevăzute de Regulamentul privind cerinţele minime pentru gestionarea riscurilor aferente tehnologiei informaţiei şi comunicaţiilor, securităţii informaţiei şi continuităţii activităţii, aprobat prin Hotărârea Comitetului executiv al Băncii Naţionale a Moldovei nr.29/2025. |
16. ASPSP trebuie să respecte reglementările aplicabile la nivel naţional referitoare la furnizarea serviciilor de plată, integrarea în cadrul Open Banking şi protecţia datelor cu caracter personal.
Secţiunea 3
Interfeţe specifice
17. ASPSP are obligaţia de a pune la dispoziţia TPP interfeţe specifice, dedicate accesului securizat şi controlat la datele conturilor PSU, precum şi iniţierii plăţilor în numele PSU, în baza consimţământului expres al PSU.
18. API trebuie să fie conforme cu Anexa nr.1 la prezentele Cerinţe, care este elaborată în baza standardului Berlin Group şi care a fost adaptată la cadrul normativ şi operaţional aplicabil în Republica Moldova.
19. Detaliile privind metodele API care trebuie expuse de către ASPSP, structura datelor şi parametrii necesari pentru integrare sunt prevăzute în Anexa nr.1 la prezentele Cerinţe, tipurile de răspuns şi codurile de eroare standardizate sunt prevăzute în Anexa nr.2 la prezentele Cerinţe, iar mecanismul de verificare de către ASPSP a apelurilor transmise de TPP este prevăzut în Anexa nr.3 la prezentele Cerinţe.
Secţiunea 4
Lista metodelor obligatorii
20. Metodele ce urmează a fi elaborate de ASPSP pentru oferirea consimţămintelor sunt prevăzute în tabelul nr.5.
Tabelul nr.5
| Endpoint | Metodă | Condiţie | Descriere |
| consents | POST | Obligatoriu | Această metodă permite unui TPP să solicite consimţământul unui PSU pentru a accesa informaţiile despre cont. Consimţământul este creat în sistemul informaţional al ASPSP şi specifică conturile şi permisiunile acordate. |
| consents/{consentId} | GET | Obligatoriu | Această metodă oferă detalii despre un consimţământ existent, identificat prin consentId. |
| DELETE | Obligatoriu | Această metodă permite unui TPP să revoce un consimţământ activ în baza acţiunii corespunzătoare iniţiată de PSU, eliminând accesul TPP la datele contului PSU. | |
| consents/{consentId}/status | GET | Obligatoriu | Această metodă returnează statutul actual al unui consimţământ. |
21. Metodele ce urmează a fi elaborate de ASPSP pentru AIS sunt prevăzute în tabelul nr.6.
Tabelul nr.6
| Endpoint | Metodă | Condiţie | Descriere |
| accounts | GET | Obligatoriu | Această metodă oferă o listă a tuturor conturilor pentru care PSU a acordat acces TPP-ului. Lista include detalii de bază, precum IBAN-ul, moneda şi tipul contului. |
| accounts/{account-id} | GET | Obligatoriu | Această metodă oferă informaţii detaliate despre un cont specific, identificat prin account-id, precum tipul contului, IBAN-ul şi moneda. |
| accounts/{account-id}/balances | GET | Obligatoriu | Această metodă oferă informaţiile despre soldul unui cont specific, incluzând soldul disponibil, soldul înregistrat şi soldul estimat. |
| accounts/{account-id}/transactions | GET | Obligatoriu | Această metodă oferă o listă de tranzacţii pentru un cont specific, cu opţiuni de filtrare după intervalul de timp sau tipul tranzacţiei (de exemplu, înregistrate, în aşteptare). |
22. Metodele ce urmează a fi elaborate de ASPSP pentru PIS sunt prevăzute în tabelul nr.7.
Tabelul nr.7
| Endpoints | Metodă | Condiţie | Descriere |
| payments/{payment-product} | POST | Obligatoriu | Această metodă iniţiază o plată utilizând produsul de plată specificat (de exemplu, domestic payments sau instant payments). |
| payments/{payment-product}/{paymentId} | GET | Obligatoriu | Această metodă oferă informaţii detaliate despre o plată specifică, identificată prin paymentId, inclusiv statutul plăţii, suma şi beneficiarul. |
| payments/{payment-product}/{paymentId}/status | GET | Obligatoriu | Această metodă oferă statutul actual al unei plăţi specifice, cum ar fi în aşteptare, acceptată sau respinsă. |
Capitolul IV
LISTA DIGITALĂ OPEN BANKING
23. Pentru implementarea Open Banking, BNM a dezvoltat şi gestionează Lista digitală Open Banking - o platformă digitală interoperabilă, accesibilă prin API, care asigură evidenţa şi gestionarea participanţilor din ecosistemul Open Banking.
24. Lista digitală Open Banking este destinată atât pentru ASPSP cât şi pentru TPP, API-ul oferă date despre fiecare participant, contribuind la transparenţa şi securitatea sistemului.
25. Prestatorii de servicii de plată implicaţi în Open Banking beneficiază de informaţiile relevante, în funcţie de rolul lor, după cum urmează:
25.1. ASPSP primesc lista TPP licenţiaţi şi înregistraţi de BNM. Această listă include detalii precum numărul licenţei, numărul de serie al certificatului (în format hexadecimal) cheii publice utilizat de TPP şi alte informaţii necesare pentru validarea accesului acestora.
25.2. TPP primesc lista ASPSP integraţi în ecosistemul Open Banking, împreună cu detaliile privind endpointurile API disponibile pentru accesarea datelor.
26. Pentru asigurarea respectării cerinţei prevăzute la pct.7, ASPSP poate accesa Lista digitală Open Banking conform detaliilor tehnice de conectare comunicate de BNM. Pentru verificarea în timp real a informaţiei cu privire la TPP în baza Listei digitale Open Banking, ASPSP va interoga Lista digitală Open Banking cu o periodicitate cuprinsă între 1 şi 10 minute. În intervalul dintre două interogări succesive, ASPSP poate utiliza versiunea memorată (cache) a listei până la efectuarea următoarei actualizări. În cazul în care Lista Digitală Open Banking nu este disponibilă, ASPSP poate utiliza datele din ultima versiune memorată.
27. ASPSP trebuie să monitorizeze în mod continuu starea certificatelor cheii publice associate TPP şi să refuze accesul oricărui certificat expirat, compromis sau revocat.
28. În cazul în care, în urma verificărilor, ASPSP depistează neconcordanţe între informaţiile de care dispune privind TPP şi informaţiile prezentate în cererea TPP, se recomandă ca ASPSP să blocheze accesul şi să informeze BNM prin intermediul poştei electronice open.banking@bnm.md. În urma notificării recepţionate, BNM examinează informaţia în conformitate cu procedurile sale interne şi informează ASPSP cu privire la rezultatele examinării în termen de 5 zile lucrătoare.
29. În cazul în care un ASPSP identifică necesitatea unor funcţionalităţi suplimentare sau modificări tehnice celor existente, acesta va expedia o cerere oficială către BNM. BNM este în drept să respingă solicitările respective dacă, în urma analizei, acestea nu întrunesc (cumulativ) următoarele criterii:
29.1. solicitarea nu contravine prevederilor actelor normative;
29.2. sunt necesare şi conforme cu funcţionalităţile Open Banking.
Anexa nr.1
la Cerinţe funcţionale şi tehnice pentru
interfeţele prestatorilor de servicii de plată
care oferă servicii de administrare cont
Metodele API
care trebuie expuse de către ASPSP, structura
datelor şi parametrii necesari pentru integrare
1. Consents Endpoints
Metoda: Create Consent
Tipul metodei: POST /v1/consents
Descriere: Această metodă permite crearea unui consimţământ de acces pentru un PSU. Un consimţământ este necesar pentru a autoriza un TPP să acceseze informaţiile contului (AIS).
[TPP] Request Header Parameters:
| Nume | Tip | Condiţie | Descriere |
| X-Request-ID | UUID | Obligatoriu | ID unic generat de TPP pentru identificarea cererii. Obligatoriu spre verificare a unicităţii de către ASPSP. |
| PSU-IP-Address | String | Obligatoriu | Adresa IP a PSU. |
| PSU-Device-ID | String | Obligatoriu | ID-ul unic al dispozitivului utilizat de PSU. |
| PSU-Device-Name | String | Obligatoriu | Denumirea/modelul (generic) al dispozitivului de pe care se conectează utilizatorul final (PSU). |
| PSU-Geo-Location | String | Opţional | Localizarea geografică transmisă a cererii HTTP corespunzătoare între PSU şi TPP, dacă este disponibilă. |
| TPP-Redirect-URI | String | Obligatoriu | URI-ul de redirecţionare către TPP după finalizarea consimţământului. |
| TPP-Nok-Redirect-URI | String | Optional | URI-ul de redirecţionare în caz de eroare. ASPSP are dreptul să ignore acest câmp. |
| Date | Datetime | Obligatoriu | Data şi ora la care cererea este efectuată (RFC 7231 D, dd M YYYY HH:mm:ss GMT). |
| Content-Type | String | Obligatoriu | Specifică formatul corpului cererii application/json. |
| Digest | String | Obligatoriu | Este inclus doar dacă şi numai dacă elementul “Signature” este inclus în antetul cererii. Se recomandă calcularea digestului după aplicarea JSON Minify (această recomandare se aplică pe tot parcursul documentului). |
| Signature | String | Obligatoriu | Semnarea cererii de către TPP la nivel de aplicaţie. Pentru completarea câmpului se formează “signing string” conform parametrilor “algorithm” şi “headers”, se semnează cu cheia privată asociată cu “keyId”, după ce rezultatul codificat în base64 se inserează în “signature”. Aceasta modalitate de completare a câmpului “Signature” se aplică pe tot parcursul documentului prezent. |
| TPP-Signature-Certificate | String | Obligatoriu | Certificatul utilizat pentru semnarea cererii, în codificare base64. Trebuie să fie inclus dacă există o semnătură. |
[TPP] Request Header Sample:
POST htttps://api.provider.com/v1/consents
Content-Type: application/json
X-Request-ID: 123e4567-e89b-12d3-a456-426614174000
PSU-IP-Address: 192.168.0.10
PSU-Device-ID: device-12345
PSU-Device-Name: ModelDevice X
PSU-Geo-Location: GEO: 47.014434;28.493426
TPP-Redirect-URI: https://tpp-example.md/redirect
TPP-Nok-Redirect-URI: https://tpp-example.md/redirect-failure
Date: Wed, 11 Sep 2024 12:34:56 GMT
Digest: SHA-256=VYe+GLeBVnBVH8A50NP0Cawtg1xwkfe+XufPzmVGGMA=
Signature: keyId=“SN= 4000000010FC01D520258AB15EAF, CA=CN=D-eSystemTrustIB, O=IP STISC 1003600096694, C=MD”, algorithm=”rsa-sha256”,
headers=”digest date x-request-id tpp-redirect-uri”,
signature=”Base64(RSA-SHA256(signing string))”
TPP-Signature-Certificate: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzKzT+I32ygAqDdZVfKYtDkWVZT7ySP54ZXgH8dEUM6d9fKhs6DFiM9
Do5slDDo7YwLjXU8Iq7C4eONHp+7u0z5LmvMyYnxgD0h1S7F6T5gqaOQz3Qkm9bW2QY5M6Fh8/FivYpno3pzUNrzzTyAdIQ8
MjbbJff7cDwDpwnFVgbQ6ZTxYm2CccovJQJuyfwO7ICtVjkkXq+FXWmZTfl2AfQwvMFuPRTlxjDLDBMOwDsYMBVBym8vSdzY7
AkDPylQtD/kTxM+oLlo7mMtpTeDs/qhvZXMnRPvE/JIE58xsiCBvUe36V1ht+WLidqk9iYxeAwTbF7kZgxXjUGBYDrz/B4fqa2Fq
Nzdsq2+LfsAk5cDBshXq1t/vmhty7TK09KPBrbDAjm9uDbf6zA0ZSczX4rh7tBf3rc5BC+MBuLKgg1Pv9WgfWHi5BQ==",
Unde “signing string” este:
digest: SHA-256=VYe+GLeBVnBVH8A50NP0Cawtg1xwkfe+XufPzmVGGMA=
date: Wed, 11 Sep 2024 12:34:56 GMT
x-request-id: 123e4567-e89b-12d3-a456-426614174000
tpp-redirect-uri: https://tpp-example.md/redirect
[TPP] Request Body Sample for Consent Request on Dedicated Accounts (detailed consent – support by ASPSP is mandatory):
{
"access": {
"accounts": [
{
"iban": "MD21AAA000000022553456789"
}
],
"balances": [
{
"iban": "MD21AAA000000022553456789"
}
],
"transactions": [
{
"iban": "MD21AAA000000022553456789"
}
]
},
"recurringIndicator": true,
"validUntil": "2024-12-31",
"frequencyPerDay": 4
}
[TPP] Request Body Sample for Consent on Account List of Available Accounts (global consent - support by ASPSP is mandatory):
{
"access": {
"availableAccounts": "allAccounts"
},
"recurringIndicator": true,
"validUntil": "2025-08-06",
"frequencyPerDay": 4
}
[TPP] Request Body Sample for Consent on Account List or without Indication of dedicated Accounts (bank offered consent - support by ASPSP is mandatory):
{
"access": {
"balances": [],
"transactions": []
},
"recurringIndicator": true,
"validUntil": "2025-11-01",
"frequencyPerDay": 4
}
[TPP] Request Body Parameters:
| Parametru | Tip | Condiţie | Descriere |
| access | Object | Obligatoriu | Defineşte accesul la conturi, balanţe şi tranzacţii. |
| access.accounts | Array | Opţional | Lista IBAN-urilor conturilor la care TPP va avea acces. |
| access.balances | Array | Opţional | Lista IBAN-urilor pentru care TPP poate accesa balanţele. |
| access.transactions | Array | Opţional | Lista IBAN-urilor pentru care TPP poate accesa detalii despre tranzacţii. |
| recurringIndicator | Boolean | Obligatoriu | Indică dacă accesul este recurent sau unic. Dacă este true, accesul este recurent. Dacă este false, accesul este unitar. |
| validUntil | String | Obligatoriu | Data expirării consimţământului (format: YYYY-MM-DD). |
| frequencyPerDay | Integer | Obligatoriu | Numărul maxim de accesări pe zi pentru datele contului fără implicarea PSU (AIS). Valorile posibile sunt 1, 2, 3 sau 4. |
[ASPSP] Response Header sample:
Content-Type: application/json
X-Request-ID: 123e4567-e89b-12d3-a456-426614174000
ASPSP-SCA-Approach: REDIRECT
Date: Wed, 11 Sep 2024 12:34:58 GMT
Location: “/v1/consents/ a7c3e9f8-1a44-4cd3-83ab-4f29d1f9e8c7”
[ASPSP] Response Body Sample (Success - 201 Created):
{
"consentStatus": "received",
"consentId": "d6f9b8f4-4b10-4b9e-933b-ff9a24b5641f",
"_links": {
"scaRedirect": {
"href": "www.mybankapp.com//authentication/ a7c3e9f8-1a44-4cd3-83ab-4f29d1f9e8c7"
},
"status": {
"href": "/v1/consents/ a7c3e9f8-1a44-4cd3-83ab-4f29d1f9e8c7 /status"
},
"scaStatus": {
"href": "/v1/consents/ a7c3e9f8-1a44-4cd3-83ab-4f29d1f9e8c7 /authorisations/123auth567"
}
}
}
[ASPSP] Response Header Parameters:
| Nume | Tip | Condiţie | Descriere |
| X-Request-ID | UUID | Obligatoriu | ID unic generat de TPP pentru identificarea cererii. |
| Location | String | Obligatoriu | Locaţia resursei create. |
| ASPSP-SCA-Approach | String | Obligatoriu | Tipul metodei de SCA utilizat de ASPSP. La moment doar REDIRECT. |
| Date | Datetime | Obligatoriu | Data şi ora la care cererea este efectuată (RFC 7231). |
| Content-Type | String | Obligatoriu | Specifică că formatul corpului răspunsului este application/json. |
[ASPSP] Parameters of Success Response:
| Parametru | Tip | Condiţie | Descriere |
| consentStatus | String | Obligatoriu | Statutul consimţământului (valid, expired etc.). |
| consentId | String | Obligatoriu | ID-ul unic al consimţământului creat. |
| _links | String | Obligatoriu | Lista de link-uri aferente unui consimţământ |
[ASPSP] Response Sample (Error - 400 Bad Request):
{
"tppMessages": [
{
"category": "ERROR",
"code": "FORMAT_ERROR",
"text": "string",
"path": "string"
}
]
}
[ASPSP] Parameters of Error Response:
| Parametru | Tip | Condiţie | Descriere |
| tppMessages | Array | Obligatoriu | Lista mesajelor de eroare generate de server. |
| tppMessages.category | String | Obligatoriu | Categoria mesajului (ERROR, WARNING). |
| tppMessages.code | String | Obligatoriu | Codul erorii (ex: FORMAT_ERROR). |
| tppMessages.text | String | Obligatoriu | Descrierea detaliată a erorii (ex: "Invalid IBAN format"). |
| tppMessages.path | String | Opţional | Indică locaţia exactă a erorii. |
Metoda: Get Consent
Tipul metodei: GET /v1/consents/{consentId}
Descriere: Această metodă permite TPP să obţină informaţii detaliate despre un consimţământ creat anterior. ID-ul consimţământului (consentId) este furnizat în URL. TPP poate verifica statutul consimţământului şi detaliile asociate, cum ar fi conturile şi valabilitatea.
[TPP] Path Parameters:
| Nume | Tip | Condiţie | Descriere |
| consentId | String | Obligatoriu | ID-ul unic al consimţământului creat. |
[TPP] Request Header Parameters:
| Nume | Tip | Condiţie | Descriere |
| X-Request-ID | UUID | Obligatoriu | ID unic generat de TPP pentru identificarea cererii. |
| Date | Datetime | Obligatoriu | Data şi ora la care cererea este efectuată. (RFC 7231) |
| PSU-IP-Adress | String | Obligatoriu | Adresa IP a PSU. În cazul apelului fără intervenţia PSU, TPP completează cu 0.0.0.0. |
| PSU-Device-ID | String | Obligatoriu | ID-ul unic al dispozitivului utilizat de PSU. În cazul apelului fără intervenţia PSU, TPP completează cu no-psu-involved. |
| PSU-Device-Name | String | Obligatoriu | Denumirea/modelul (generic) al dispozitivului de pe care se conectează PSU. În cazul apelului fără intervenţia PSU, TPP completează cu no-psu-involved. |
| PSU-Geo-Location | String | Opţional | Localizarea geografică transmisă a cererii HTTP corespunzătoare între PSU şi TPP, dacă este disponibilă. |
| Digest | String | Obligatoriu | Este inclus doar dacă şi numai dacă elementul “Signature” este inclus în antetul cererii. |
| Signature | String | Obligatoriu | Semnarea cererii de către TPP la nivel de aplicaţie. |
| TPP-Signature-Certificate | String | Obligatoriu | Certificatul utilizat pentru semnarea cererii, în codificare base64. Trebuie să fie inclus dacă există o semnătură. |
[TPP] Request Header Sample:
GET https://api.provider.com/v1/consents/ d6f9b8f4-4b10-4b9e-933b-ff9a24b5641f
X-Request-ID: 123e4567-e89b-12d3-a456-426614174000
Date: Wed, 11 Sep 2024 12:34:56 GMT
PSU-IP-Address: 192.168.0.10
PSU-Device-ID: device-12345
PSU-Device-Name: ModelDevice X
PSU-Geo-Location: GEO: 47.014434;28.493426
Digest: SHA-256=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
Signature: keyId=“SN= 4000000010FC01D520258AB15EAF, CA=CN=D-eSystemTrustIB, O=IP STISC 1003600096694, C=MD”, algorithm=”rsa-sha256”,
headers=”digest date x-request-id”,
signature=”Base64(RSA-SHA256(signing string))”
TPP-Signature-Certificate: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzKzT+I32ygAqDdZVfKYtDkWVZT7ySP54ZXgH8dEUM6d9fKhs6DFiM9
Do5slDDo7YwLjXU8Iq7C4eONHp+7u0z5LmvMyYnxgD0h1S7F6T5gqaOQz3Qkm9bW2QY5M6Fh8/FivYpno3pzUNrzzTyAdIQ8Mjbb
Jff7cDwDpwnFVgbQ6ZTxYm2CccovJQJuyfwO7ICtVjkkXq+FXWmZTfl2AfQwvMFuPRTlxjDLDBMOwDsYMBVBym8vSdzY7AkDPyl
QtD/kTxMo+4t7mMtpTeDs/qhvZXMnRPvE/JIE58xsiCBvUe36V1ht+WLidqk9iYxeAwTbF7kZgxXjUGBYDrz/B4fqa2FqNzdsq2+LfsAk5c
DBshXq1t/vmhty7TK09KPBrbDAjm9uDbf6zA0ZSczX4rh7tBf3rc5BC+MBuLKgg1Pv9WgfWHi5BQ==",
[ASPSP] Response Header sample:
X-Request-ID: 123e4567-e89b-12d3-a456-426614174000
[ASPSP] Response Body Sample (Success - 200 OK):
{
"access": {
"accounts": [
{
"iban": "MD21AAA000000022553456789",
"currency": "MDL"
}
],
"balances": [
{
"iban": "MD21AAA000000022553456789",
"currency": "MDL"
}
],
"transactions": [
{
"iban": "MD21AAA000000022553456789",
"currency": "MDL"
}
]
},
"recurringIndicator": true,
"validUntil": "2024-12-31",
"frequencyPerDay": 4,
"consentStatus": "valid",
"_links": {
"account": {
"href": "/v1/accounts"
}
}
}
[ASPSP] Response Header Parameters:
| Nume | Tip | Condiţie | Descriere |
| X-Request-ID | UUID | Obligatoriu | ID unic generat de TPP pentru identificarea cererii. |
[ASPSP] Parameters of Success Response:
| Parametru | Tip | Condiţie | Descriere |
| consentStatus | String | Obligatoriu | Statutul consimţământului (valid, expired etc.). |
| access | Object | Obligatoriu | Defineşte accesul la conturi, balanţe şi tranzacţii. |
| access.accounts | Array | Opţional | Lista IBAN-urilor conturilor la care TPP are acces. |
| access.balances | Array | Opţional | Lista IBAN-urilor pentru care TPP poate accesa balanţele. |
| access.transactions | Array | Opţional | Lista IBAN-urilor pentru care TPP poate accesa detalii despre tranzacţii. |
| currency | String | Opţional | Valuta contului. |
| validUntil | String | Obligatoriu | Data expirării consimţământului. |
| recurringIndicator | Boolean | Obligatoriu | Indică dacă accesul este repetitiv sau unic. |
| frequencyPerDay | Integer | Obligatoriu | Numărul maxim de accesări pe zi. |
| _links | Object | Opţional | Indică paşii următori care pot fi urmaţi prin interfaţă. |
[ASPSP] Response Sample (Error - 400 Bad Request):
{
"tppMessages": [
{
"category": "ERROR",
"code": "FORMAT_ERROR",
"text": "string"
"path": "string"
}
]
}
| Parametru | Tip | Condiţie | Descriere |
| tppMessages | Array | Obligatoriu | Lista mesajelor de eroare generate de server. |
| tppMessages.category | String | Obligatoriu | Categoria mesajului (ERROR, WARNING). |
| tppMessages.code | String | Obligatoriu | Codul erorii (ex: FORMAT_ERROR). |
| tppMessages.text | String | Obligatoriu | Descrierea detaliată a erorii (ex: "Invalid IBAN format"). |
| tppMessages.path | String | Opţional | Indică locaţia exactă a erorii. |
Metoda: Delete Consent
Tipul metodei: DELETE /v1/consents/ {consentId}
Descriere: Această metodă permite TPP să revoce un consimţământ existent utilizând consentId. Odată revocat, consimţământul nu va mai permite accesul la conturile PSU. Această acţiune este necesară pentru a stopa/bloca accesul la datele conturilor sau pentru a întrerupe accesul recurent.
[TPP] Path Parameters:
| Nume | Tip | Condiţie | Descriere |
| consentId | String | Obligatoriu | ID-ul unic al consimţământului creat. |
[TPP] Request Header Parameters:
| Nume | Tip | Condiţie | Descriere |
| X-Request-ID | UUID | Obligatoriu | ID unic generat de TPP pentru identificarea cererii. Obigatoriu spre verificarea unicitităţii de către ASPSP. |
| PSU-IP-Adress | String | Obligatoriu | Adresa IP a PSU. |
| PSU-Device-ID | String | Obligatoriu | ID-ul unic al dispozitivului utilizat de PSU. |
| PSU-Device-Name | String | Obligatoriu | Denumirea/modelul (generic) al dispozitivului de pe care se conectează PSU. |
| PSU-Geo-Location | String | Opţional | Localizarea geografică transmisă a cererii HTTP corespunzătoare între PSU şi TPP, dacă este disponibilă. |
| Date | String | Obligatoriu | Data şi ora la care cererea este efectuată. (RFC7231) |
| Digest | String | Obligatoriu | Este inclus doar dacă şi numai dacă elementul “Signature” este inclus în antetul cererii. |
| Signature | String | Obligatoriu | Semnarea cererii de către TPP la nivel de aplicaţie. |
| TPP-Signature-Certificate | String | Obligatoriu | Certificatul utilizat pentru semnarea cererii, în codificare base64. Trebuie să fie inclus dacă există o semnătură. |
[TPP] Request Header Sample:
DELETE htttps://api.provider.com/v1/consents/ d6f9b8f4-4b10-4b9e-933b-ff9a24b5641f
X-Request-ID: 123e4567-e89b-12d3-a456-426614174000
PSU-IP-Address: 192.168.0.10
PSU-Device-ID: device-12345
PSU-Device-Name: ModelDevice X
PSU-Geo-Location: GEO: 47.014434;28.493426 Date: Wed, 11 Sep 2024 12:34:56 GMT
Digest: SHA-256=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
Signature: keyId=“SN= 4000000010FC01D520258AB15EAF, CA=CN=D-eSystemTrustIB, O=IP STISC 1003600096694, C=MD”, algorithm=”rsa-sha256”,
headers=”digest date x-request-id”,
signature=”Base64(RSA-SHA256(signing string))”
TPP-Signature-Certificate: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzKzT+I32ygAqDdZVfKYtDkWVZT7ySP54ZXgH8dEUM6d9fKhs6DFiM9
Do5slDDo7YwLjXU8Iq7C4eONHp+7u0z5LmvMyYnxgD0h1S7F6T5gqaOQz3Qkm9bW2QY5M6Fh8/FivYpno3pzUNrzzTyAdIQ8Mjbb
Jff7cDwDpwnFVgbQ6ZTxYm2CccovJQJuyfwO7ICtVjkkXZTfl2AfQwvMFuPRTlxjDLDBMOwDsYMBVBym8vSdzY7AkDPylQtD/kTx
Mo+4toD+oLlo7mMtpTeDs/qhvZXMnRPvE/JIE58xsiCBvUe36V1ht+WLidqk9iYxeAwTbF7kZgxXjUGBYDrz/B4fqa2FqNzdsq2+LfsAk
5cDBshXq1t/vmhty7TK09KPBrbDAjm9uDbf6zA0ZSczX4rh7tBf3rc5BC+MBuLKgg1Pv9WgfWHi5BQ=="
[ASPSP] Response Header sample:
X-Request-ID: 123e4567-e89b-12d3-a456-426614174000
[ASPSP] Response Body Sample (Success - 204 No Content):
Nu este returnată în corpul răspunsului vreo informaţie, doar statutul 204 No Content, care confirmă că revocarea a fost efectuată cu succes.
[ASPSP] Response Header Parameters:
| Nume | Tip | Condiţie | Descriere |
| X-Request-ID | UUID | Obligatoriu | ID unic generat de TPP pentru identificarea cererii. |
[ASPSP] Response Sample (Error - 400 Bad Request):
{
"tppMessages": [
{
"category": "ERROR",
"code": "FORMAT_ERROR",
"text": "string",
"path": "string"
}
]
}
| Parametru | Tip | Condiţie | Descriere |
| tppMessages | Array | Obligatoriu | Lista mesajelor de eroare generate de server. |
| tppMessages.category | String | Obligatoriu | Categoria mesajului (ERROR, WARNING). |
| tppMessages.code | String | Obligatoriu | Codul erorii (ex: FORMAT_ERROR). |
| tppMessages.text | String | Obligatoriu | Descrierea detaliată a erorii (ex: "Invalid IBAN format"). |
| tppMessages.path | String | Opţional | Indică locaţia exactă a erorii. |
Metoda: Consent status
Tipul metodei: GET /v1/consents/{consentId}/status
Descriere: Această metodă permite TPP să obţină statutul actual al unui consimţământ identificat prin consentId. Statutul consimţământului indică dacă acesta este valid, expirat, revocat, respins sau în stadiul initial - recepţionat, oferind informaţii importante despre starea consimţământului acordat.
[TPP] Path Parameters:
| Nume | Tip | Condiţie | Descriere |
| consentId | String | Obligatoriu | ID-ul unic al consimţământului creat. |
[TPP] Request Header Parameters:
| Nume | Tip | Condiţie | Descriere |
| X-Request-ID | UUID | Obligatoriu | ID unic generat de TPP pentru identificarea cererii. |
| PSU-IP-Adress | String | Obligatoriu | Adresa IP a PSU. În cazul apelului fără intervenţia PSU, TPP completează cu 0.0.0.0. |
| PSU-Device-ID | String | Obligatoriu | ID-ul unic al dispozitivului utilizat de PSU. În cazul apelului fără intervenţia PSU, TPP completează cu no-psu-involved. |
| PSU-Device-Name | String | Obligatoriu | Denumirea/modelul (generic) al dispozitivului de pe care se conectează PSU. În cazul apelului fără intervenţia PSU, TPP completează cu no-psu-involved. |
| PSU-Geo-Location | String | Opţional | Localizarea geografică transmisă a cererii HTTP corespunzătoare între PSU şi TPP, dacă este disponibilă. |
| Date | String | Obligatoriu | Data şi ora la care cererea este efectuată (RFC 7231). |
| Digest | String | Obligatoriu | Este inclus doar dacă şi numai dacă elementul “Signature” este inclus în antetul cererii. |
| Signature | String | Obligatoriu | Semnarea cererii de către TPP la nivel de aplicaţie. |
| TPP-Signature-Certificate | String | Obligatoriu | Certificatul utilizat pentru semnarea cererii, în codificare base64. Trebuie să fie inclus dacă există o semnătură. |
[TPP] Request Header Sample:
GET https://api.provider.com/v1/consents/ d6f9b8f4-4b10-4b9e-933b-ff9a24b5641f/status
X-Request-ID: 123e4567-e89b-12d3-a456-426614174000
PSU-IP-Address: 192.168.0.10
PSU-Device-ID: device-12345
PSU-Device-Name: ModelDevice X
PSU-Geo-Location: GEO: 47.014434;28.493426
Date: Wed, 11 Sep 2024 12:34:56 GMT
Digest: SHA-256=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
Signature: keyId=“SN= 4000000010FC01D520258AB15EAF, CA=CN=D-eSystemTrustIB, O=IP STISC 1003600096694, C-MD”, algorithm=”rsa-sha256”,
headers=”digest date x-request-id”,
signature=”Base64(RSA-SHA256(signing string))”
TPP-Signature-Certificate: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzKzT+I32ygAqDdZVfKYtDkWVZT7ySP54ZXgH8dEUM6d9fKhs6DFi
M9Do5slDDo7YwLjXU8Iq7C4eONHp+7u0z5LmvMyYnxgD0h1S7F6T5gqaOQz3Qkm9bW2QY5M6Fh8/o3pzUNrzzTyAdIQ8Mjbb
Jff7cDwDpwnFVgbQ6ZTxYm2CccovJQJuyfwO7ICtVjkkXq+FXWmZTfl2AfQwvMFuPRTlxjDLDBMOwDsYMBVBym8vSdzY7AkD
PylQtD/kTxMo+4toD+oLlo7mMtpTeDs/qhvZXMnRPvE/JIE58xsiCBvUe36V1ht+WLidqk9iYxeAwTbF7kZgxXjUGBYDrz/B4fqa2Fq
Nzdsq2+LfsAk5cDBshXq1t/vmhty7TK09KPBrbDAjm9uDbf6zA0ZSczX4rh7tBf3rc5BC+MBuLKgg1Pv9WgfWHi5BQ=="
[ASPSP] Response Header sample:
X-Request-ID: 123e4567-e89b-12d3-a456-426614174000
[ASPSP] Response Body Sample (Success - 200 OK):
{
"consentStatus": "valid"
}
[ASPSP] Response Header Parameters:
| Nume | Tip | Condiţie | Descriere |
| X-Request-ID | UUID | Obligatoriu | ID unic generat de TPP pentru identificarea cererii. |
[ASPSP] Parameters of Success Response:
| Parametru | Tip | Condiţie | Descriere |
| consentStatus | String | Obligatoriu | Statutul actual al consimţământului (valid, expired, revoked, rejected etc.). |
[ASPSP] Response Sample (Error - 400 Bad Request):
{
"tppMessages": [
{
"category": "ERROR",
"code": "FORMAT_ERROR",
"text": "string",
"path": "string"
}
]
}
[ASPSP] Parameters of Error Response:
| Parametru | Tip | Condiţie | Descriere |
| tppMessages | Array | Obligatoriu | Lista mesajelor de eroare generate de server. |
| tppMessages.category | String | Obligatoriu | Categoria mesajului (ERROR, WARNING). |
| tppMessages.code | String | Obligatoriu | Codul erorii (ex: FORMAT_ERROR). |
| tppMessages.text | String | Obligatoriu | Descrierea detaliată a erorii (ex: "Invalid IBAN format"). |
| tppMessages.path | String | Opţional | Indică locaţia exactă a erorii. |
2. Accounts Endpoint
Metoda: Read account list
Tipul metodei: GET /v1/accounts
Descriere: Această metodă permite TPP să obţină o listă de conturi deţinute de PSU, pentru care există un consimţământ valid. Datele returnate includ informaţii esenţiale despre fiecare cont, cum ar fi IBAN-ul, valuta şi alte detalii despre cont. Această metodă este esenţială în contextul serviciilor de acces la informaţii despre cont (AIS).
[TPP] Query Parameters:
| Nume | Tip | Condiţie | Descriere |
| withBalance | Boolean | Optional | Dacă este inclus, acest parametru trebuie să aibă valoarea true sau false. Dacă parametrul este true, funcţia va returna lista conturilor de plăţi accesibile, inclusiv soldul contului, în măsura în care acest lucru a fost acordat de PSU prin consimţământ şi este disponibil din partea ASPSP. Dacă parametrul este false sau nu este furnizat, lista conturilor va fi returnată fără solduri. |
[TPP] Request Header Parameters:
| Nume | Tip | Condiţie | Descriere |
| X-Request-ID | UUID | Obligatoriu | ID unic generat de TPP pentru identificarea cererii. |
| Consent-ID | String | Obligatoriu | ID unic al consimţământului în baza căruia TPP are acces la conturi. |
| PSU-IP-Address | String | Obligatoriu | Adresa IP a PSU. În cazul apelului fără intervenţia PSU, TPP completează cu 0.0.0.0. |
| PSU-Device-ID | String | Obligatoriu | ID-ul unic al dispozitivului utilizat de PSU. În cazul apelului fără intervenţia PSU, TPP completează cu no-psu-involved. |
| PSU-Device-Name | String | Obligatoriu | Denumirea/modelul (generic) al dispozitivului de pe care se conectează PSU. În cazul apelului fără intervenţia PSU, TPP completează cu no-psu-involved. |
| PSU-Geo-Location | String | Opţional | Localizarea geografică transmisă a cererii HTTP corespunzătoare între PSU şi TPP, dacă este disponibilă. |
| Date | Datetime | Obligatoriu | Data şi ora la care cererea este efectuată (RFC 7231). |
| Digest | String | Obligatoriu | Este inclus doar dacă şi numai dacă elementul “Signature” este inclus în antetul cererii. |
| Signature | String | Obligatoriu | Semnarea cererii de către TPP la nivel de aplicaţie. |
| TPP-Signature-Certificate | String | Obligatoriu | Certificatul utilizat pentru semnarea cererii, în codificare base64. Trebuie să fie inclus dacă există o semnătură. |
[TPP] Request Header Sample:
GET https://api.provider.com/v1/accounts
X-Request-ID: 123e4567-e89b-12d3-a456-426614174000
Consent-ID: d6f9b8f4-4b10-4b9e-933b-ff9a24b5641f
PSU-IP-Address: 192.168.0.10
PSU-Device-ID: device-12345
PSU-Device-Name: ModelDevice X
Date: Wed, 11 Sep 2024 12:34:56 GMT
Digest: SHA-256=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
Signature: keyId=“SN= 4000000010FC01D520258AB15EAF, CA=CN=D-eSystemTrustIB, O=IP STISC 1003600096694, C-MD”, algorithm=”rsa-sha256”,
headers=”digest date x-request-id”,
signature=”Base64(RSA-SHA256(signing string))”
TPP-Signature-Certificate: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzKzT+I32ygAqDdZVfKYtDkWVZT7ySP54ZXgH8dEUM6d9fKhs6DFi
M9Do5slDDo7YwLjXU8Iq7C4eONHp+7u0z5LmvMyYnxgD0h1S7F6T5gqaOQz3Qkm9bW2QY5M6Fh8/FivYpno3pzUNrzzTyAdIQ
8MjbbJff7cDwDpwnFVgbQ6ZTxYm2CccovJQJuyfwO7ICtVjkkXZTfl2AfQwvMFuPRTlxjDLDBMOwDsYMBVBym8vSdzY7AkDPyl
QtD/kTxMo+4toD+oLlo7mMtpTeDs/qhvZXMnRPvE/JIE58xsiCBvUe36V1ht+WLidqk9iYxeAwTbF7kZgxXjUGBYDrz/B4fqa2FqNzd
sq2+LfsAk5cDBshXq1t/vmhty7TK09KPBrbDAjm9uDbf6zA0ZSczX4rh7tBf3rc5BC+MBuLKgg1Pv9WgfWHi5BQ=="
[ASPSP] Response Header sample:
X-Request-ID: 123e4567-e89b-12d3-a456-426614174000
[ASPSP] Response Body Sample (Success - 200 OK):
{
"accounts": [
{
"resourceId": "acc-123456789",
"iban": "MD21AAA000000022553456789",
"currency": "MDL",
"product": "Cont Curent",
"cashAccountType": "CACC",
"_links": {
"balances": {
"href": "/v1/accounts/ acc-123456789/balances"
},
"transactions": {
"href": "/v1/accounts/ acc-123456789/transactions"
}
}
},
{
"resourceId": "acc-987654321",
"iban": "MD21BBB000000022553456999",
"currency": "MDL",
"product": "Cont de Economii",
"cashAccountType": "SVGS",
"_links": {
"balances": {
"href": "/v1/accounts/ acc-987654321/balances"
}
}
}
]
}
[ASPSP] Response Body Sample withBalance (Success - 200 OK):
{
"accounts": [
{
"resourceId": "acc-123456789",
"iban": "MD21AAA000000022553456789",
"currency": "MDL",
"product": "Cont MDL",
"cashAccountType": "CACC",
"balances": [
{
"balanceType": "interimAvailable",
"balanceAmount": {
"currency": "MDL",
"amount": "99999.99"
},
"lastChangeDateTime": "2024-08-25T00:00:00Z"
}
],
"_links": {
"transactions": {
"href": "/v1/accounts/acc-123456789/transactions"
}
}
}
]
}
[ASPSP] Response Header Parameters:
| Nume | Tip | Condiţie | Descriere |
| X-Request-ID | UUID | Obligatoriu | ID unic generat de TPP pentru identificarea cererii. |
[ASPSP] Parameters of Success Response:
| Parametru | Tip | Condiţie | Descriere |
| accounts | Array | Obligatoriu | Lista de conturi deţinute de PSU. |
| resourceId | String | Obligatoriu | ID-ul unic asociat fiecărui cont. |
| iban | String | Obligatoriu | IBAN-ul contului. |
| currency | String | Obligatoriu | Valuta contului (ex. MDL). |
| product | String | Obligatoriu | Tipul produsului asociat contului (ex. Current Account). |
| cashAccountType | String | Obligatoriu | Tipul contului (ex. CACC pentru cont curent, SVGS pentru cont de economii). |
| balances | Array | Obligatoriu (if withBalance) | Lista de balanţe asociate contului. |
| balanceType | String | Obligatoriu (if withBalance) | Tipul balanţei (ex. interimAvailable, expected). |
| balanceAmount | Object | Obligatoriu (if withBalance) | Detalii despre suma din cont. |
| balanceAmount.currency | String | Obligatoriu (if withBalance) | Valuta contului (ex. MDL). |
| balanceAmount.amount | String | Obligatoriu (if withBalance) | Suma disponibilă în cont. |
| lastChangeDateTime | String | Obligatoriu (if withBalance) | Data şi ora ultimei modificări a soldului. |
| _links | Object | Opţional | Indică paşii următori care pot fi urmaţi prin interfaţă. |
[ASPSP] Response Sample (Error - 400 Bad Request):
{
"tppMessages": [
{
"category": "ERROR",
"code": "CONSENT_INVALID",
"text": "string"
"path": "string"
}
]
}
[ASPSP] Parameters of Error Response:
| Parametru | Tip | Condiţie | Descriere |
| tppMessages | Array | Obligatoriu | Lista mesajelor de eroare generate de server. |
| tppMessages.category | String | Obligatoriu | Categoria mesajului (ERROR, WARNING). |
| tppMessages.code | String | Obligatoriu | Codul erorii (ex: FORMAT_ERROR). |
| tppMessages.text | String | Obligatoriu | Descrierea detaliată a erorii (ex: "Invalid IBAN format"). |
| tppMessages.path | String | Opţional | Indică locaţia exactă a erorii. |
Parametrii cashAccountType (exemple conform ISO 20022):
| Cod | Descriere |
| CACC | Cont curent (Current Account). Acesta este utilizat pentru tranzacţiile zilnice. |
| SVGS | Cont de economii (Savings Account). Acesta este utilizat pentru economisirea banilor. |
| CASH | Cont de numerar. Utilizat pentru a reflecta conturi de numerar care nu sunt în mod explicit "curente" sau "de economii". |
| TDEP | Depozit la termen (Term Deposit Account). Utilizat pentru conturile de depozite cu termen. |
| LOAN | Cont de credit (Loan Account). Conturi utilizate pentru gestionarea împrumuturilor. |
| SLRY | Conturi folosite pentru plata salariilor. |
Metoda: Read account details
Tipul metodei: GET /v1/accounts/{account-id}
Descriere: Această metodă permite TPP să obţină detalii despre un cont specific al PSU, identificat prin accountId. Datele returnate includ informaţii esenţiale despre cont, cum ar fi IBAN-ul, valuta, şi alte detalii relevante. Această metodă este esenţială pentru furnizarea de servicii de informare despre cont (AIS).
[TPP] Path Parameters:
| Nume | Tip | Condiţie | Descriere |
| account-id | String | Obligatoriu | ID-ul unic al contului atribuit prin resourceId. |
[TPP] Query Parameters:
| Nume | Tip | Condiţie | Descriere |
| withBalance | Boolean | Optional | Dacă este inclus, acest parametru trebuie să aibă valoarea true sau false. În cazul în care este setat pe true, funcţia va returna lista conturilor de plăţi accesibile, inclusiv soldul contului, în măsura în care acest lucru a fost acordat de PSU prin consimţământ şi este disponibil din partea ASPSP. Dacă este setat pe false sau nu este furnizat, lista conturilor va fi returnată fără solduri. |
[TPP] Request Header Parameters:
| Nume | Tip | Condiţie | Descriere |
| X-Request-ID | UUID | Obligatoriu | ID unic generat de TPP pentru identificarea cererii. |
| Consent-ID | String | Obligatoriu | ID unic al consimţământului în baza căruia TPP are acces la conturi. |
| PSU-IP-Address | String | Obligatoriu | Adresa IP a PSU. În cazul apelului fără intervenţia PSU, TPP completează cu 0.0.0.0. |
| PSU-Device-ID | String | Obligatoriu | ID-ul unic al dispozitivului utilizat de PSU. În cazul apelului fără intervenţia PSU, TPP completează cu no-psu-involved. |
| PSU-Device-Name | String | Obligatoriu | Denumirea/modelul (generic) al dispozitivului de pe care se conectează PSU. În cazul apelului fără intervenţia PSU, TPP completează cu no-psu-involved. |
| PSU-Geo-Location | String | Opţional | Localizarea geografică transmisă a cererii HTTP corespunzătoare între PSU şi TPP, dacă este disponibilă. |
| Date | Datetime | Obligatoriu | Data şi ora la care cererea este efectuată (RFC 7231). |
| Digest | String | Obligatoriu | Este inclus doar dacă şi numai dacă elementul “Signature” este inclus în antetul cererii. |
| Signature | String | Obligatoriu | Semnarea cererii de către TPP la nivel de aplicaţie. |
| TPP-Signature-Certificate | String | Obligatoriu | Certificatul utilizat pentru semnarea cererii, în codificare base64. Trebuie să fie inclus dacă există o semnătură. |
[TPP] Request Header Sample:
GET htttps://api.provider.com/v1/accounts/acc-123456789
X-Request-ID: 123e4567-e89b-12d3-a456-426614174000
Consent-ID: d6f9b8f4-4b10-4b9e-933b-ff9a24b5641f
PSU-IP-Address: 192.168.0.10
PSU-Device-ID: device-12345
PSU-Device-Name: ModelDevice X
Date: Wed, 11 Sep 2024 12:34:56 GMT
Digest: SHA-256=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
Signature: keyId=“SN= 4000000010FC01D520258AB15EAF, CA=CN=D-eSystemTrustIB, O=IP STISC 1003600096694, C=MD”, algorithm=”rsa-sha256”,
headers=”digest date x-request-id”,
signature=”Base64(RSA-SHA256(signing string))”
TPP-Signature-Certificate: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzKzT+I32ygAqDdZVfKYtDkWVZT7ySP54ZXgH8dEUM6d9fKhs6DFi
M9Do5slDDo7YwLjXU8Iq7C4eONHp+7u0z5LmvMyYnxgD0h1S7F6T5gqaOQz3Qkm9bW2QY5M6Fh8/FivYpno3pzUNrzzTyAdIQ8
MjbbJff7cDwDpwnFVgbQ6ZTxYm2CccovJQJuyfwO7ICtVjkkXq+FXWmZTfl2AfQwvMFuPRTlxjDLDBMOwDsYMBVBym8vSdzY7
AkDPylQtD/kTxMo+4toD+oLlo7mDs/qhvZXMnRPvE/JIE58xsiCBvUe36V1ht+WLidqk9iYxeAwTbF7kZgxXjUGBYDrz/B4fqa2FqNzd
sq2+LfsAk5cDBshXq1t/vmhty7TK09KPBrbDAjm9uDbf6zA0ZSczX4rh7tBf3rc5BC+MBuLKgg1Pv9WgfWHi5BQ=="
[ASPSP] Response Header sample:
X-Request-ID: 123e4567-e89b-12d3-a456-426614174000
[ASPSP] Response Body Sample (Success - 200 OK):
{
"resourceId": "acc-123456789",
"iban": "MD21AAA000000022553456789",
"currency": "MDL",
"product": "Cont Curent",
"cashAccountType": "CACC",
"_links": {
"balances": {
"href": "/v1/accounts/ acc-123456789/balances"
},
"transactions": {
"href": "/v1/accounts/ acc-123456789/transactions"
}
}
}
[ASPSP] Response Body Sample withBalance (Success - 200 OK):
{
"resourceId": "acc-123456789",
"iban": "MD21AAA000000022553456789",
"currency": "MDL",
"product": "Cont MDL",
"cashAccountType": "CACC",
"balances": [
{
"balanceType": "interimAvailable",
"balanceAmount": {
"currency": "MDL",
"amount": "99999.99"
},
"lastChangeDateTime": "2024-08-25T00:00:00Z"
}
],
"_links": {
"transactions": {
"href": "/v1/accounts/acc-123456789/transactions"
}
}
}
[ASPSP] Response Header Parameters:
| Nume | Tip | Condiţie | Descriere |
| X-Request-ID | UUID | Obligatoriu | ID unic generat de TPP pentru identificarea cererii. |
[ASPSP] Parameters of Success Response:
| Parametru | Tip | Condiţie | Descriere |
| resourceId | String | Obligatoriu | ID-ul unic asociat fiecărui cont. |
| iban | String | Obligatoriu | IBAN-ul contului. |
| currency | String | Obligatoriu | Valuta contului (ex. MDL, USD). |
| product | String | Obligatoriu | Tipul produsului asociat contului (ex. Current Account). |
| cashAccountType | String | Obligatoriu | Tipul contului (ex. CACC pentru cont curent, SVGS pentru cont de economii). |
| balances | Array | Obligatoriu (if withBalance) | Lista de balanţe asociate contului. |
| balanceType | String | Obligatoriu (if withBalance) | Tipul balanţei (ex. interimAvailable, expected). |
| balanceAmount | Object | Obligatoriu (if withBalance) | Detalii despre suma din cont. |
| balanceAmount.currency | String | Obligatoriu (if withBalance) | Valuta contului (ex. MDL, USD). |
| balanceAmount.amount | String | Obligatoriu (if withBalance) | Suma disponibilă în cont. |
| lastChangeDateTime | String | Obligatoriu (if withBalance) | Data şi ora ultimei modificări a soldului. |
| _links | Object | Opţional | Indică paşii următori care pot fi urmaţi prin interfaţă. |
[ASPSP] Response Sample (Error - 400 Bad Request):
{
"tppMessages": [
{
"category": "ERROR",
"code": "CONSENT_INVALID",
"text": "The consent provided is invalid or expired.",
"path": "string"
}
]
}
[ASPSP] Parameters of Error Response:
| Parametru | Tip | Condiţie | Descriere |
| tppMessages | Array | Obligatoriu | Lista mesajelor de eroare generate de server. |
| tppMessages.category | String | Obligatoriu | Categoria mesajului (ERROR, WARNING). |
| tppMessages.code | String | Obligatoriu | Codul erorii (ex: FORMAT_ERROR). |
| tppMessages.text | String | Obligatoriu | Descrierea detaliată a erorii (ex: "Invalid IBAN format"). |
| tppMessages.path | String | Opţional | Indică locaţia exactă a erorii. |
Metoda: Read Balance
Tipul metodei: GET /v1/accounts/{account-id}/balances
Descriere: Această metodă permite TPP să obţină balanţele asociate unui cont specific, identificat prin accountId. Datele returnate includ soldurile disponibile, soldurile contabile (booked) şi alte detalii legate de balanţa contului. Această metodă este esenţială pentru furnizarea de servicii de informare despre cont (AIS).
[TPP] Path Parameters:
| Nume | Tip | Condiţie | Descriere |
| account-id | String | Obligatoriu | ID-ul unic al contului atribuit prin resourceId |
[TPP] Request Header Parameters:
| Nume | Tip | Condiţie | Descriere |
| X-Request-ID | UUID | Obligatoriu | ID unic generat de TPP pentru identificarea cererii. |
| Consent-ID | String | Obligatoriu | ID unic al consimţământului în baza căruia TPP are acces la conturi |
| PSU-IP-Address | String | Obligatoriu | Adresa IP a PSU. În cazul apelului fără intervenţia PSU, TPP completează cu 0.0.0.0. |
| PSU-Device-ID | String | Opţional | ID-ul unic al dispozitivului utilizat de PSU. În cazul apelului fără intervenţia PSU, TPP completează cu no-psu-involved. |
| PSU-Device-Name | String | Obligatoriu | Denumirea/modelul (generic) al dispozitivului de pe care se conectează PSU. În cazul apelului fără intervenţia PSU, TPP completează cu no-psu-involved. |
| PSU-Geo-Location | String | Opţional | Localizarea geografică transmisă a cererii HTTP corespunzătoare între PSU şi TPP, dacă este disponibilă. |
| Date | Datetime | Obligatoriu | Data şi ora la care cererea este efectuată (RFC 7231). |
| Digest | String | Obligatoriu | Este inclus doar dacă şi numai dacă elementul “Signature” este inclus în antetul cererii. |
| Signature | String | Obligatoriu | Semnarea cererii de către TPP la nivel de aplicaţie. |
| TPP-Signature-Certificate | String | Obligatoriu | Certificatul utilizat pentru semnarea cererii, în codificare base64. Trebuie să fie inclus dacă există o semnătură. |
[TPP] Request Header Sample:
GET https://api.provider.com/v1/accounts/acc-123456789/balances
X-Request-ID: 123e4567-e89b-12d3-a456-426614174000
Consent-ID: d6f9b8f4-4b10-4b9e-933b-ff9a24b5641f
PSU-IP-Address: 192.168.0.10
PSU-Device-ID: device-12345
PSU-Device-Name: ModelDevice X
Date: Wed, 11 Sep 2024 12:34:56 GMT
Digest: SHA-256=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
Signature: keyId=“SN= 4000000010FC01D520258AB15EAF, CA=CN=D-eSystemTrustIB, O=IP STISC 1003600096694, C=MD”, algorithm=”rsa-sha256”,
headers=”digest date x-request-id”,
signature=”Base64(RSA-SHA256(signing string))”
TPP-Signature-Certificate: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzKzT+I32ygAqDdZVfKYtDkWVZT7ySP54ZXgH8dEUM6d9fKhs6DFi
M9Do5slDDo7YwLjXU8Iq7C4eONHp+7u0z5LmvMyYnxgD0h1S7F6T5gqaOQz3Qkm9bW2QY5M6Fh8/FivYpno3pzUNrzzTyAdIQ8
MjbbJff7cDwDpwnFVgbQ6ZTxYm2CccovJQJuyfwO7ICtVjkkXq+FXWmZTfl2AfQwvMFuPRTlxjDLDBMOwDsYMBVBym8vSdzY7
AkDPylQtD/kTxMo+4toD+oLlo7mMtpTeDs/qhvZXMnRPvE/JIE58xsiCBvUe36V1ht+WLidqk9iYxeAwTbF7kZgxXjUGBYDrz/B4fqa2
FqNzdsq2+LfsAk5cDBshXq1t/vmhty7TK09KPBrbDAjm9uDbf6zA0ZSczX4rh7tBf3rc5BC+Mv9WgfWHi5BQ=="
[ASPSP] Response Header sample:
X-Request-ID: 123e4567-e89b-12d3-a456-426614174000
[ASPSP] Response Body Sample (Success - 200 OK):
{
"account": {
"iban": "MD21AAA000000022553456789"
}
"balances": [
{
"balanceType": "interimAvailable",
"balanceAmount": {
"currency": "MDL",
"amount": "1000.00"
},
"lastChangeDateTime": "2024-09-11T12:34:56Z"
},
{
"balanceType": "expected",
"balanceAmount": {
"currency": "MDL",
"amount": "200.00"
},
"lastChangeDateTime": "2024-09-10T15:00:00Z"
}
]
}
[ASPSP] Response Header Parameters:
| Nume | Tip | Condiţie | Descriere |
| X-Request-ID | UUID | Obligatoriu | ID unic generat de TPP pentru identificarea cererii. |
[ASPSP] Parameters of Success Response:
| Parametru | Tip | Condiţie | Descriere |
| balances | Array | Obligatoriu | Lista de balanţe asociate contului. |
| balanceType | String | Obligatoriu | Tipul balanţei (ex. interimAvailable, expected). |
| balanceAmount | Object | Obligatoriu | Detalii despre suma din cont. |
| balanceAmount.currency | String | Obligatoriu | Valuta contului (ex. MDL). |
| balanceAmount.amount | String | Obligatoriu | Suma disponibilă în cont. |
| lastChangeDateTime | String | Obligatoriu | Data şi ora ultimei modificări a soldului. |
[ASPSP] Response Sample (Error - 400 Bad Request):
{
"tppMessages": [
{
"category": "ERROR",
"code": "CONSENT_INVALID",
"text": "string",
"path": "string"
}
]
}
[ASPSP] Parameters of Error Response:
| Parametru | Tip | Condiţie | Descriere |
| tppMessages | Array | Obligatoriu | Lista mesajelor de eroare generate de server. |
| tppMessages.category | String | Obligatoriu | Categoria mesajului (ERROR, WARNING). |
| tppMessages.code | String | Obligatoriu | Codul erorii (ex: FORMAT_ERROR). |
| tppMessages.text | String | Obligatoriu | Descrierea detaliată a erorii (ex: "Invalid IBAN format"). |
| tppMessages.path | String | Opţional | Indică locaţia exactă a erorii. |
Metoda Read transaction list of an account
Tipul metodei: GET /v1/accounts/ {account-id}/transactions
Descriere: Această metodă permite TPP-ului să obţină o listă de tranzacţii asociate unui cont specific, identificat prin accountId. Tranzacţiile returnate includ atât tranzacţiile înregistrate (booked) cât şi tranzacţiile în aşteptare (pending). Această metodă este esenţială pentru furnizarea de servicii de informare despre cont (AIS).
Pentru determinarea tipului de plată, dacă o plată este de intrare (încasare) sau de ieşire (plată efectuată), se bazează pe informaţia de mai jos:
• Prezenţa câmpului creditorAccount → plată de ieşire (banii pleacă către creditor) → plată de Debit
• Prezenţa câmpului debtorAccount → plată de intrare (banii vin de la debitor) → plată de Credit
[TPP] Path Parameters:
| Nume | Tip | Condiţie | Descriere |
| account-id | String | Obligatoriu | ID-ul unic al contului atribuit prin resourceId. |
[TPP] Query Parameters:
| Nume | Tip | Condiţie | Descriere |
| dateFrom | ISODate | Opţional | Data de început pentru filtrarea tranzacţiilor (format: YYYY-MM-DD). |
| dateTo | ISODate | Opţional | Data de final pentru filtrarea tranzacţiilor (format: YYYY-MM-DD). |
| bookingStatus | String | Obligatoriu | Statutul tranzacţiilor care trebuie returnate (booked, pending sau both). |
| withBalance | Boolean | Opţional | Dacă este setată valoarea la true, răspunsul va include şi balanţa contului. |
[TPP] Request Header Parameters:
| Nume | Tip | Condiţie | Descriere |
| X-Request-ID | UUID | Obligatoriu | ID unic generat de TPP pentru identificarea cererii. |
| Consent-ID | String | Obligatoriu | ID unic al consimţământului în baza căruia TPP are acces la conturi. |
| PSU-IP-Address | String | Obligatoriu | Adresa IP a PSU. În cazul apelului fără intervenţia PSU, TPP completează cu 0.0.0.0. |
| PSU-Device-ID | String | Obligatoriu | ID-ul unic al dispozitivului utilizat de PSU. În cazul apelului fără intervenţia PSU, TPP completează cu no-psu-involved. |
| PSU-Device-Name | String | Obligatoriu | Denumirea/modelul (generic) al dispozitivului de pe care se conectează PSU. În cazul apelului fără intervenţia PSU, TPP completează cu no-psu-involved. |
| PSU-Geo-Location | String | Opţional | Localizarea geografică transmisă a cererii HTTP corespunzătoare între PSU şi TPP, dacă este disponibilă. |
| Date | String | Obligatoriu | Data şi ora la care cererea este efectuată. |
| Digest | String | Obligatoriu | Este inclus doar dacă şi numai dacă elementul “Signature” este inclus în antetul cererii. |
| Signature | String | Obligatoriu | Semnarea cererii de către TPP la nivel de aplicaţie. |
| TPP-Signature-Certificate | String | Obligatoriu | Certificatul utilizat pentru semnarea cererii, în codificare base64. Trebuie să fie inclus dacă există o semnătură. |
[TPP] Request Header Sample:
GET / https://api.provider.com/v1/accounts/acc-123456789/transactions?dateFrom=2024-01-01&dateTo=2024-09-01&bookingStatus=booked
X-Request-ID: 123e4567-e89b-12d3-a456-426614174000
Consent-ID: d6f9b8f4-4b10-4b9e-933b-ff9a24b5641f
PSU-IP-Address: 192.168.0.10
PSU-Device-ID: device-12345
PSU-Device-Name: ModelDevice X
Date: Wed, 11 Sep 2024 12:34:56 GMT
Digest: SHA-256=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
Signature: keyId=“SN= 4000000010FC01D520258AB15EAF, CA=CN=D-eSystemTrustIB, O=IP STISC 1003600096694, C=MD”, algorithm=”rsa-sha256”,
headers=”digest date x-request-id”,
signature=”Base64(RSA-SHA256(signing string))”
TPP-Signature-Certificate: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzKzT+I32ygAqDdZVfKYtDkWVZT7ySP54ZXgH8dEUM6d9fKhs6DFi
M9Do5slDDo7YwLjXU8Iq7C4eONHp+7u0z5LmvMyYnxgD0h1S7F6T5gqaOQz3Qkm9bW2QY5M6Fh8/FivYpno3pzUNrzzTyAdIQ
8MjbbJff7cDwDpwnFVgbQ6ZTxYm2CccovJQJuyfwO7ICtVjkkWmZTfl2AfQwvMFuPRTlxjDLDBMOwDsYMBVBym8vSdzY7AkD
PylQtD/kTxMo+4toD+oLlo7mMtpTeDs/qhvZXMnRPvE/JIE58xsiCBvUe36V1ht+WLidqk9iYxeAwTbF7kZgxXjUGBYDrz/B4fqa2Fq
Nzdsq2+LfsAk5cDBshXq1t/vmhty7TK09KPBrbDAjm9uDbf6zA0ZSczX4rh7tBf3rc5BC+Mv9WgfWHi5BQ=="
[ASPSP] Response Header sample:
X-Request-ID: 123e4567-e89b-12d3-a456-426614174000
Content-Type: application/json
[ASPSP] Response Body Sample (Success - 200 OK):
{
"account": {
"iban": "MD21AAA000000022553456789",
"currency": "MDL"
},
"transactions": {
"booked": [
{
"transactionId": "tx-123",
"creditorName": " Ion Popescu ",
"creditorAccount": {
"iban": "MD21AAA000000022553456789"
},
"transactionAmount": {
"currency": "MDL",
"amount": "500.00"
},
"bookingDate": "2024-09-01",
"valueDate": "2024-09-01",
"remittanceInformationUnstructured": "Plată Factura 123"
},
{
"transactionId": "tx-1234",
"debtorName": "Petru Popescu",
"debtorAccount": {
"iban": "MD32AAA000000022663456789"
},
"transactionAmount": {
"currency": "MDL",
"amount": "2500.00"
},
"bookingDate": "2024-09-15",
"valueDate": "2024-09-18",
"remittanceInformationUnstructured": "P2P"
}
],
"pending": [
{
"transactionId": "tx-456",
"creditorName": " Ion Popescu ",
"creditorAccount": {
"iban": "MD21AAA000000022553456789"
},
"transactionAmount": {
"currency": "MDL",
"amount": "200.00"
},
"valueDate": "2024-09-01",
"remittanceInformationUnstructured": "Plată Factura 123"
}
]
}
}
[ASPSP] Response Body Sample withBalance (Success - 200 OK):
{
"account": {
"iban": "MD21AAA000000022553456789",
"currency": "MDL"
},
"transactions": {
"booked": [
{
"transactionId": "tx-123",
"creditorName": "Ion Popescu",
"creditorAccount": {
"iban": "MD21AAA000000022553456789"
},
"transactionAmount": {
"currency": "MDL",
"amount": "500.00"
},
"bookingDate": "2024-09-01",
"valueDate": "2024-09-01",
"remittanceInformationUnstructured": "Plată Factura 123"
}
]
},
"balances": [
{
"balanceType": "interimAvailable",
"balanceAmount": {
"currency": "MDL",
"amount": "99499.99"
},
"lastChangeDateTime": "2024-09-01T12:00:00Z"
}
]
}
[ASPSP] Response Header Parameters:
| Nume | Tip | Condiţie | Descriere |
| X-Request-ID | UUID | Obligatoriu | ID unic generat de TPP pentru identificarea cererii. |
| Content-Type | String | Obligatoriu | Specifică că formatul corpului răspunsului este application/json. |
[ASPSP] Parameters of Success Response:
| Parametru | Tip | Condiţie | Descriere |
| account | Object | Obligatoriu | Informaţii despre contul asociat tranzacţiilor. |
| account.iban | String | Obligatoriu | IBAN-ul contului. |
| account.currency | String | Obligatoriu | Valuta contului. |
| transactions | Object | Obligatoriu | Informaţii despre tranzacţii din parametrii de interogare. |
| transactions.booked | Array | Obligatoriu | Tranzacţiile înregistrate (booked). |
| transactions.pending | Array | Obligatoriu | Tranzacţiile în aşteptare (pending). |
| transactionId | String | Obligatoriu | ID-ul unic al tranzacţiei. |
| bookingDate | String | Obligatoriu | Data înregistrării tranzacţiei. |
| valueDate | String | Obligatoriu | Data la care a fost efectuată tranzacţia. |
| transactionAmount | Object | Obligatoriu | Conţine suma şi valuta tranzacţiei. |
| transactionAmount.currency | String | Obligatoriu | Valuta tranzacţiei. |
| transactionAmount.amount | String | Obligatoriu | Suma tranzacţiei. |
| creditorName | String Max70Text |
Oblgatoriu (dacă Debit) | Numele creditorului. |
| creditorAccount | Object | Obligatoriu (dacă Debit şi deţinut de ASPSP) | Contul creditorului. |
| creditorAccount.iban | String | Obligatoriu (dacă Debit şi deţinut de ASPSP) | IBAN creditorului. |
| debtorName | String | Obligatoriu (dacă Credit) | Numele debitorului. |
| debtorAccount | Object | Obligatoriu (dacă Credit şi deţinut de ASPSP) | Contul debitorului. |
| debtorAccount.iban | String | Obligatoriu (dacă Credit şi deţinut de ASPSP) | IBAN debitorului. |
| remittanceInformationUnstructured | String Max420Text [0-9a-zA-Z/\-\?:\(\)\.,'\+ ]{1,35} |
Obligatoriu | Informaţii nestructurate despre plată (ex. detalii factură). Dacă ASPSP oferă aşa gen de informaţii în aplicaţia sa, este obligat să o furnizeze şi către TPP. |
| balances | Array | Obligatoriu (dacă conţine withBalance) | Lista de balanţe asociate contului. |
| balanceType | String | Obligatoriu (dacă conţine withBalance) | Tipul balanţei (ex. interimAvailable, expected). |
| balanceAmount | Object | Obligatoriu (dacă conţine withBalance) | Detalii despre suma din cont. |
| balanceAmount.currency | String | Obligatoriu (dacă conţine withBalance) | Valuta contului (ex. MDL, USD). |
| balanceAmount.amount | String | Obligatoriu (dacă conţine withBalance) | Suma disponibilă în cont. |
| lastChangeDateTime | String | Obligatoriu (dacă conţine withBalance) | Data şi ora ultimei modificări a soldului. |
[ASPSP] Response Sample (Error - 400 Bad Request):
{
"tppMessages": [
{
"category": "ERROR",
"code": "FORMAT_ERROR",
"text": "string",
"path": "string"
}
]
}
[ASPSP] Parameters of Error Response:
| Parametru | Tip | Condiţie | Descriere |
| tppMessages | Array | Obligatoriu | Lista mesajelor de eroare generate de server. |
| tppMessages.category | String | Obligatoriu | Categoria mesajului (ERROR, WARNING). |
| tppMessages.code | String | Obligatoriu | Codul erorii (ex: FORMAT_ERROR). |
| tppMessages.text | String | Obligatoriu | Descrierea detaliată a erorii (ex: "Invalid IBAN format"). |
| tppMessages.path | String | Opţional | Indică locaţia exactă a erorii. |
3. Payments Endpoint
Metoda: Payment initiation
Tipul metodei: POST /v1/{payment-service}/{payment-product}
Descriere: Această metodă iniţiază o plată în funcţie de tipul de produs ales, care include la moment plăţi domestice şi instante, definite de schema naţională din Republica Moldova. Fiecare tip de plată este specificat prin {payment-product}.
[TPP] Path Parameters:
| Nume | Tip | Condiţie | Descriere |
| payment-service | String | Obligatoriu | Tipul serviciului de plăţi (pot fi: payments, bulk-payments, periodic-payments). |
| payment-product | String | Obligatoriu | Tipul produsului utilizat (ca ex. domestic-credit-transfers-md sau instant-credit-transfers-md). |
[TPP] Request Header Parameters:
| Nume | Tip | Condiţie | Descriere |
| X-Request-ID | UUID | Obligatoriu | ID unic generat de TPP pentru identificarea cererii. Obigatoriu spre verificarea unicităţii de către ASPSP. |
| Content-type | String | Obligatoriu | Specifică formatul corpului cererii application/json |
| PSU-IP-Address | String | Obligatoriu | Adresa IP a PSU. |
| PSU-Device-ID | String | Obligatoriu | ID-ul dispozitivului utilizat de PSU. |
| PSU-Device-Name | String | Obligatoriu | Denumirea/modelul (generic) al dispozitivului de pe care se conectează PSU. |
| PSU-Geo-Location | Geo Location | Obligatoriu | Poziţia geografică a PSU. |
| TPP-Redirect-URI | String | Obligatoriu | URI-ul de redirecţionare către TPP după finalizarea plăţii. |
| TPP-Nok-Redirect-URI | String | Opţional | URI-ul de redirecţionare în caz de eroare. |
| Date | Datetime | Obligatoriu | Data şi ora la care cererea este efectuată (RFC 7231). |
| Digest | String | Obligatoriu | Este inclus doar dacă şi numai dacă elementul “Signature” este inclus în antetul cererii. |
| Signature | String | Obligatoriu | Semnarea cererii de către TPP la nivel de aplicaţie. |
| TPP-Signature-Certificate | String | Obligatoriu | Certificatul utilizat pentru semnarea cererii, în codificare base64. Trebuie să fie inclus dacă există o semnătură. |
Exemplu de iniţiere de plată prin produsul: domestic-credit-transfers-md
[TPP] Request Header Sample:
GET https://api.provider.com/v1/payments/ domestic-credit-transfers-md
X-Request-ID: 123e4567-e89b-12d3-a456-426614174000
Content-Type: application/json
PSU-IP-Address: 192.168.0.10
PSU-Device-ID: device-12345
PSU-Geo-Location: GEO:47.046399;28.762064
TPP-Redirect-URI: https://tpp-example.md/redirect
TPP-Nok-Redirect-URI: https://tpp-example.md/redirect-failure
Date: Wed, 11 Sep 2024 12:34:56 GMT
Digest: SHA-256=i/AwfzfBZztOinTJq+ANgtvyxF4ukmQjGM+Ae+5Twhs=
Signature: keyId=“SN= 4000000010FC01D520258AB15EAF, CA=CN=D-eSystemTrustIB, O=IP STISC 1003600096694, C=MD”, algorithm=”rsa-sha256”,
headers=”digest date x-request-id”,
signature=”Base64(RSA-SHA256(signing string))”
TPP-Signature-Certificate: "MIIBIjANBgkqhkiQEFAAOCAQ8AMIIBCgKCAQEAzKzT+I32ygAqDdZVfKYtDkWVZT7ySP54ZXgH8dEUM6d9fKhs6DFiM9Do5slD
Do7YwLjXU8Iq7C4eONHp+7u0z5LmvMyYnxgD0h1S7F6T5gqaOQz3Qkm9bW2QY5M6Fh8/FivYpno3pzUNrzzTyAdIQ8MjbbJff7c
DwDpwnFVgbQ6ZTxYm2CccovJQJuyfwO7ICtVjkkWmZTfl2AfQwvMFuPRTlxjDLDBMOwDsYMBVBym8vSdzY7AkDPylQtD/kTx
Mo+4toD+oLlo7mMtpTeDs/qhvZXMnRPvE/JIE58xsiCBvUe36V1ht+WLidqk9iYxeAwTbF7kZgxXjUGBYDrz/B4fqa2FqNzdsq2+Lfs
Ak5cDBshXq1t/vmhty7TK09KPBrbDAjm9uDbf6zA0ZSczX4rh7tBf3rc5BC+Mv9WgfWHi5BQ=="
[TPP] Request body Sample:
{
"endToEndIdentification": "cc5a8022-5e71-460e-82fa-ab0be1997a5",
"instructedAmount": {
"currency": "MDL",
"amount": "1000.00"
},
"debtorAccount": {
"iban": "MD12AA000001100032130935"
},
"creditorName": "Comerciant X",
"creditorId": "2002002002002",
"creditorOrgId": "ABCDEFGHI1ABCDFD1212",
"creditorCtryOfRes": "MD",
"creditorAccount": {
"iban": "MD24AA000001100032130935"
},
"instructionPriority": "NORM",
"remittanceInformationUnstructured": "Plata facturii #123"
}
[TPP] Parameters of body request:
| Parametru | Tip | Condiţie | Descriere |
| endToEndIdentification | String Max35Text |
Obligatoriu | ID-ul unic al plăţii din partea TPP pentru urmărirea acesteia. |
| debtorAccount | Object | Opţional | Informaţii despre contul debitorului. |
| debtorAccount.iban | String | Opţional | IBAN-ul contului debitor. |
| instructedAmount | Object | Obligatoriu | Suma instruită pentru transfer. |
| instructedAmount.currency | String | Obligatoriu | Valuta contului (ex. MDL). |
| instructedAmount.amount | String | Obligatoriu | Suma plăţii. |
| creditorName | String Max70Text |
Obligatoriu | Numele beneficiarului/creditorului. |
| creditorId | String Max35Text |
Obligatoriu | ID beneficiarului (IDNP/IDNO sau ID nerezident). |
| creditorOrgId | String Max20Text [A-Z0-9] |
Opţional | Identificatorul entităţii juridice (LEI) – un cod de referinţă alfanumeric unic de 20 de caractere, bazat pe standardul ISO 17442, atribuit unei persoane juridice. |
| creditorCtryOfRes | String Text [A-Z]{2,2} |
Obligatoriu | Codul ţării beneficiarului (ISO 3166-1). |
| creditorAccount | Oject | Obligatoriu | Informaţii despre contul creditorului. |
| creditorAccount.iban | String | Obligatoriu | IBAN-ul contului creditor. |
| instructionPriority | String | Obligatoriu | Tipul transferului, cu indicarea regimului de transfer. NORM – pentru plăţi regulare URGT – pentru plăţi urgente |
| remittanceInformationUnstructured | String Max420Text [0-9a-zA-Z/\-\?:\(\)\.,'\+ ]{1,35} |
Opţional (în cazul la A2A obligatoriu de ASPSP) | Informaţii suplimentare referitoare la plată (text liber). |
Exemplu de iniţiere de plată prin produsul: instant-credit-transfers-md
[TPP] Request Header Sample:
GET https://api.provider.com/v1/payments/ instant- credit-transfers-md
X-Request-ID: 123e4567-e89b-12d3-a456-426614174000
Content-Type: application/json
PSU-IP-Address: 192.168.0.10
PSU-Device-ID: device-12345
PSU-Device-Name: ModelDevice X
PSU-Geo-Location: GEO:47.046399;28.762064
TPP-Redirect-URI: https://tpp-example.md/redirect
TPP-Nok-Redirect-URI: https://tpp-example.md/redirect-failure
Date: Wed, 11 Sep 2024 12:34:56 GMT
Digest: SHA-256=+8pwEuPygqm1u33m0Y0LCSlsU8UhTgYDhMZhoi871rU=
Signature: keyId=“SN= 4000000010FC01D520258AB15EAF, CA=CN=D-eSystemTrustIB, O=IP STISC 1003600096694, C=MD”, algorithm=”rsa-sha256”,
headers=”digest date x-request-id”,
signature=”Base64(RSA-SHA256(signing string))”
TPP-Signature-Certificate: "MIIBIjANBgkqhkiQEFAAOCAQ8AMIIBCgKCAQEAzKzT+I32ygAqDdZVfKYtDkWVZT7ySP54ZXgH8dEUM6d9fKhs6DFiM9Do5slD
Do7YwLjXU8Iq7C4eONHp+7u0z5LmvMyYnxgD0h1S7F6T5gqaOQz3Qkm9bW2QY5M6Fh8/FivYpno3pzUNrzzTyAdIQ8MjbbJff7c
DwDpwnFVgbQ6ZTxYm2CccovJQJuyfwO7ICtVjkkWmZTfl2AfQwvMFuPRTlxjDLDBMOwDsYMBVBym8vSdzY7AkDPylQtD/kTx
Mo+4toD+oLlo7mMtpTeDs/qhvZXMnRPvE/JIE58xsiCBvUe36V1ht+WLidqk9iYxeAwTbF7kZgxXjUGBYDrz/B4fqa2FqNzdsq2+Lfs
Ak5cDBshXq1t/vmhty7TK09KPBrbDAjm9uDbf6zA0ZSczX4rh7tBf3rc5BC+Mv9WgfWHi5BQ==",
[TPP] Request body Sample:
{
"endToEndIdentification": "d14c3e75-8a2f-4e93-b3ca-ec4fd7128b9e",
"instructedAmount": {
"currency": "MDL",
"amount": "1000.00"
},
"debtorAccount": {
"iban": "MD12AA000001100032130935"
},
"creditorAccount": {
"msisdn ": "37399000000"
},
"purposeCode": "201",
"remittanceInformationUnstructured": "Transfer P2P"
}
[TPP] Parameters of body request:
| Parametru | Tip | Condiţie | Descriere |
| endToEndIdentification | String Max35Text |
Obligatoriu | ID-ul unic al plăţii din partea TPP pentru urmărirea acesteia. |
| debtorAccount | Object | Opţional | Informaţii despre contul debitorului. |
| debtorAccount.iban | String | Obligatoriu | IBAN-ul contului debitor. |
| instructedAmount | Object | Obligatoriu | Suma instruită pentru transfer. |
| instructedAmount.currency | String | Obligatoriu | Valuta contului (ex. MDL). |
| instructedAmount.amount | String | Obligatoriu | Suma plăţii. |
| creditorAccount | Object | Obligatoriu | Informaţii despre contul creditorului. |
| creditorAccount.msisdn | String | Obligatoriu | Alias a contului creditor. |
| purposeCode | String | Obligatoriu | Codul TCC, conform documentaţiei BNM. La moment se va utiliza doar TCC 201 pentru plăţi P2P. |
| remittanceInformationUnstructured | String Max420Text [0-9a-zA-Z/\-\?:\(\)\.,'\+ ]{1,35} |
Opţional |
Informaţii suplimentare referitoare la plată (text liber). |
[ASPSP] Response Header sample:
Content-Type: application/json
X-Request-ID: 123e4567-e89b-12d3-a456-426614174000
ASPSP-SCA-Approach: REDIRECT
Date: Wed, 11 Sep 2024 12:34:58 GMT
Location: “/v1/payments/ domestic-credit-transfers-md/MD123456789”
[ASPSP] Response Sample (201 Created):
{
"transactionStatus": "RCVD",
"paymentId": "MD123456789",
"_links": {
"scaRedirect": {
"href": "www.mybankapp.md//authentication/ a7c3e9f8-1a44-4cd3-83ab-4f29d1f9e8c7 "
},
"self": {
"href": "/v1/payments/MD123456789"
},
"status": {
"href": "/v1/payments/ MD123456789/status"
}
}
}
[ASPSP] Parameters of Success Response:
| Parametru | Tip | Condiţie | Descriere |
| transactionStatus | String | Obligatoriu | Statutul tranzacţiei |
| paymentId | String | Obligatoriu | Identificator unic al plăţii. |
| _links | String | Obligatoriu | Link pentru detaliile tranzacţiei iniţiate. |
[ASPSP] Response Sample (Error or Warning):
{
"tppMessages": [
{
"category": "ERROR",
"code": "FORMAT_ERROR",
"path": "string",
"text": "string"
}
[ASPSP] Parameters of Error Response:
| Parametru | Tip | Condiţie | Descriere |
| tppMessages | Array | Obligatoriu | Lista mesajelor de eroare generate de server. |
| tppMessages.category | String | Obligatoriu | Categoria mesajului (ERROR, WARNING). |
| tppMessages.code | String | Obligatoriu | Codul erorii (ex: FORMAT_ERROR). |
| tppMessages.text | String | Obligatoriu | Descrierea detaliată a erorii (ex: "Invalid IBAN format"). |
| tppMessages.path | String | Opţional | Indică locaţia exactă a erorii. |
Metoda: Get payment information
Tipul metodei: GET /v1/{payment-service}/{payment-product}/{paymentId}
Descriere: Această metodă permite vizualizarea detaliilor despre o plată iniţiată folosind identificatorul unic al plăţii ({paymentId}) pentru tipul de plată specificat ({payment-product}).
[TPP] Path Parameters:
| Nume | Tip | Condiţie | Descriere |
| payment-service | String | Obligatoriu | Tipul serviciului de plăţi (pot fi: payments, bulk-payments, periodic-payments). |
| payment-product | String | Obligatoriu | Tipul produsului utilizat (ca ex. domestic-credit-transfers-md sau instant-credit-transfers-md). |
| paymentId | String | Obligatoriu | Identificatorul plăţii iniţiate. |
[TPP] Request Header Parameters:
| Nume | Tip | Condiţie | Descriere |
| X-Request-ID | UUID | Obligatoriu | ID unic generat de TPP pentru identificarea cererii. |
| PSU-IP-Address | String | Obligatoriu | Adresa IP a PSU. În cazul apelului fără intervenţia PSU, TPP completează cu 0.0.0.0. |
| PSU-Device-ID | String | Obligatoriu | ID-ul unic al dispozitivului utilizat de PSU. În cazul apelului fără intervenţia PSU, TPP completează cu no-psu-involved. |
| PSU-Device-Name | String | Obligatoriu | Denumirea/modelul (generic) al dispozitivului de pe care se conectează PSU. În cazul apelului fără intervenţia PSU, TPP completează cu no-psu-involved. |
| PSU-Geo-Location | Geo Location | Opţional | Localizarea geografică transmisă a cererii HTTP corespunzătoare între PSU şi TPP, dacă este disponibilă. |
| Date | Datetime | Obligatoriu | Data şi ora la care cererea este efectuată (RFC 7231). |
| Digest | String | Obligatoriu | Este inclus doar dacă şi numai dacă elementul “Signature” este inclus în antetul cererii. |
| Signature | String | Obligatoriu | Semnarea cererii de către TPP la nivel de aplicaţie. |
| TPP-Signature-Certificate | String | Obligatoriu | Certificatul utilizat pentru semnarea cererii, în codificare base64. Trebuie să fie inclus dacă există o semnătură. |
[TPP] Request Sample:
GET https://api.provider.com/v1/payments/ domestic-credit-transfers-md/MD123456789
X-Request-ID: 123e4567-e89b-12d3-a456-426614174000
PSU-IP-Address: 192.168.0.10
PSU-Device-ID: device-12345
PSU-Device-Name: ModelDevice X
Date: Wed, 11 Sep 2024 12:34:56 GMT
Digest: SHA-256=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
Signature: keyId=“SN= 4000000010FC01D520258AB15EAF, CA=CN=D-eSystemTrustIB, O=IP STISC 1003600096694, C=MD”, algorithm=”rsa-sha256”,
headers=”digest date x-request-id”,
signature=”Base64(RSA-SHA256(signing string))”
TPP-Signature-Certificate: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzKzT+I32ygAqDdZVfKYtDkWVZT7ySP54ZXgH8dEUM6d9fKhs6DFi
M9Do5slDDo7YwLjXU8Iq7C4eONHp+7u0z5LmvMyYnxgD0h1S7F6T5gqaOQz3Qkm9bW2QY5M6Fh8/FivYpno3pzUNrzzTyAdIQ
8MjbbJff7cDwDpwnFVgbQ6ZTxYm2CccovJQJuyfwO7ICtVjkkWmZTfl2AfQwvMFuPRTlxjDLDBMOwDsYMBVBym8vSdzY7AkD
PylQtD/kTxMo+4toD+oLlo7mMtpTeDs/qhvZXMnRPvE/JIE58xsiCBvUe36V1ht+WLidqk9iYxeAwTbF7kZgxXjUGBYDrz/B4fqa2Fq
Nzdsq2+LfsAk5cDBshXq1t/vmhty7TK09KPBrbDAjm9uDbf6zA0ZSczX4rh7tBf3rc5BC+Mv9WgfWHi5BQ==",
[ASPSP] Response Sample (200 OK) (domestic-credit-transfers-md):
{
"paymentId": "MD123456789",
"debtorAccount": {
"iban": "MD12AA000001100032130935"
},
"instructedAmount": {
"currency": "MDL",
"amount": "1000.00"
},
"creditorAccount": {
"iban": "MD24AA000001100032130935"
},
"creditorName": "Nume Beneficiar",
"remittanceInformationUnstructured": "Plata facturii #123",
"transactionStatus": "ACCP",
"transactionFees": {
"currency": "MDL",
"amount": "5.00"
}
}
[ASPSP] Parameters of Success Response (domestic-credit-transfers-md):
| Parametru | Tip | Condiţie | Descriere |
| paymentId | String | Obligatoriu | Identificator unic al plăţii. |
| transactionStatus | String | Obligatoriu | Statutul actual al plăţii. |
| debtorAccount | Object | Obligatoriu | Contul debitorului. |
| debtorAccount.iban | String | Obligatoriu | IBAN-ul contului debitor. |
| instructedAmount | Object | Obligatoriu | Suma instruită pentru plată (moneda şi valoarea). |
| instructedAmount.currency | String | Obligatoriu | Valuta contului (ex. MDL). |
| instructedAmount.amount | String | Obligatoriu | Suma plăţii. |
| creditorAccount | Object | Obligatoriu | Contul creditorului. |
| creditorAccount.iban | String | Obligatoriu | IBAN-ul contului creditor. |
| creditorName | String Max70Text |
Obligatoriu | Numele beneficiarului plăţii. |
| remittanceInformationUnstructured | String Max420Text [0-9a-zA-Z/\-\?:\(\)\.,'\+ ]{1,35} |
Opţional | Informaţii suplimentare referitoare la plată. |
| transactionStatus | String | Obligatoriu | Statutul plăţii. |
| transactionFees | Object | Opţional | Taxele aferente tranzacţiei. |
| transactionFees.currency | String | Opţional | Valuta comisionului (ex. MDL) |
| transactionFees.amount | String | Opţional | Suma comisionului. |
[ASPSP] Response Sample for instant-credit-transfers-md (200 OK):
{
"paymentId": " MD123456789",
"debtorAccount": {
"iban": "MD12AA000001100032130935"
},
"instructedAmount": {
"currency": "MDL",
"amount": "1000.00"
},
"creditorAccount": {
"msisdn": "37399000000"
},
"remittanceInformationUnstructured": "Plata P2P",
"transactionStatus": "ACTC",
"transactionFees": {
"currency": "MDL",
"amount": "5.00"
}
[ASPSP] Parameters of Success Response (domestic-credit-transfers-md):
| Parametru | Tip | Condiţie | Descriere |
| paymentId | String | Obligatoriu | Identificator unic al plăţii. |
| transactionStatus | String | Obligatoriu | Statutul actual al plăţii. |
| debtorAccount | Object | Obligatoriu | Contul debitorului. |
| debtorAccount.iban | String | Obligatoriu | IBAN-ul contului debitor. |
| instructedAmount | Object | Obligatoriu | Suma instruită pentru plată (moneda şi valoarea). |
| instructedAmount.currency | String | Obligatoriu | Valuta contului (ex. MDL). |
| instructedAmount.amount | String | Obligatoriu | Suma plăţii. |
| creditorAccount | Object | Obligatoriu | Contul creditorului. |
| creditorAccount.iban | String | Obligatoriu | IBAN-ul contului creditor. |
| creditorName | String Max70Text |
Obligatoriu | Numele beneficiarului plăţii. |
| remittanceInformationUnstructured | String Max420Text [0-9a-zA-Z/\-\?:\(\)\.,'\+ ]{1,35} |
Opţional | Informaţii suplimentare referitoare la plată. |
| transactionStatus | String | Obligatoriu | Statutul plăţii. |
| transactionFees | Object | Opţional | Taxele aferente tranzacţiei. |
| transactionFees.currency | String | Opţional | Valuta comisionului (ex. MDL) |
| transactionFees.amount | String | Opţional | Suma comisionului. |
[ASPSP] Response Sample (Error or Warning):
{
"tppMessages": [
{
"category": "ERROR",
"code": "FORMAT_ERROR",
"text": "string",
"path": "string",
}
[ASPSP] Parameters of Error Response:
| Parametru | Tip | Condiţie | Descriere |
| tppMessages | Array | Obligatoriu | Lista mesajelor de eroare generate de server. |
| tppMessages.category | String | Obligatoriu | Categoria mesajului (ERROR, WARNING). |
| tppMessages.code | String | Obligatoriu | Codul erorii (ex: FORMAT_ERROR). |
| tppMessages.text | String | Obligatoriu | Descrierea detaliată a erorii (ex: "Invalid IBAN format"). |
| tppMessages.path | String | Opţional | Indică locaţia exactă a erorii. |
Metoda: Get payment status
Tipul metodei: GET /v1/{payment-service}/{payment-prodyuct}/{paymentId}/status
Descriere: Această metodă returnează statutul actual al unei plăţi iniţiate, identificată prin {paymentId}, pentru tipul de produs de plată specificat ({payment-product}).
[TPP] Path Parameters:
| Nume | Tip | Condiţie | Descriere |
| payment-service | String | Obligatoriu | Tipul serviciului de plăţi (pot fi: payments, bulk-payments, periodic-payments). |
| payment-product | String | Obligatoriu | Tipul produsului utilizat (ca ex. domestic-credit-transfers-md sau instant-credit-transfers-md). |
| paymentId | String | Obligatoriu | Identificatorul plăţii iniţiate. |
[TPP] Request Header Parameters:
| Nume | Tip | Condiţie | Descriere |
| X-Request-ID | UUID | Obligatoriu | ID unic generat de TPP pentru identificarea cererii. |
| PSU-IP-Address | String | Obligatoriu | Adresa IP a PSU. În cazul apelului fără intervenţia PSU, TPP completează cu 0.0.0.0. |
| PSU-Device-ID | String | Obligatoriu | ID-ul dispozitivului utilizat de PSU. În cazul apelului fără intervenţia PSU, TPP completează cu no-psu-involved. |
| PSU-Device-Name | String | Obligatoriu | Denumirea/modelul (generic) al dispozitivului de pe care se conectează PSU. În cazul apelului fără intervenţia PSU, TPP completează cu no-psu-involved. |
| PSU-Geo-Location | Geo Location | Opţional | Poziţia geografică a PSU. |
| Date | Datetime | Obligatoriu | Data şi ora la care cererea este efectuată (RFC 7231). |
| Digest | String | Obligatoriu | Este inclus doar dacă şi numai dacă elementul “Signature” este inclus în antetul cererii. |
| Signature | String | Obligatoriu | Semnarea cererii de către TPP la nivel de aplicaţie. |
| TPP-Signature-Certificate | String | Obligatoriu | Certificatul utilizat pentru semnarea cererii, în codificare base64. Trebuie să fie inclus dacă există o semnătură. |
[TPP] Request Header Sample:
GET https://api.provider.com/v1/payments/domestic-credit-transfers-md/ MD123456789/status
X-Request-ID: 123e4567-e89b-12d3-a456-426614174000
PSU-IP-Address: 192.168.0.10
PSU-Device-ID: device-12345
PSU-Device-Name: ModelDevice X
Date: Wed, 11 Sep 2024 12:34:56 GMT
Digest: SHA-256=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
Signature: keyId=“SN= 4000000010FC01D520258AB15EAF, CA=CN=D-eSystemTrustIB, O=IP STISC 1003600096694, C=MD”, algorithm=”rsa-sha256”,
headers=”digest date x-request-id”,
signature=”Base64(RSA-SHA256(signing string))”
TPP-Signature-Certificate: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzKzT+I32ygAqDdZVfKYtDkWVZT7ySP54ZXgH8dEUM6d9fKhs6DFi
M9Do5slDDo7YwLjXU8Iq7C4eONHp+7u0z5LmvMyYnxgD0h1S7F6T5gqaOQz3Qkm9bW2QY5M6Fh8/FivYpno3pzUNrzzTyAdIQ8
MjbbJff7cDwDpwnFVgbQ6ZTxYm2CccovJQJuyfwO7ICtVjkkWmZTfl2AfQwvMFuPRTlxjDLDBMOwDsYMBVBym8vSdzY7AkDPyl
QtD/kTxMo+4toD+oLlo7mMtpTeDs/qhvZXMnRPvE/JIE58xsiCBvUe36V1ht+WLidqk9iYxeAwTbF7kZgxXjUGBYDrz/B4fqa2FqNzds
q2+LfsAk5cDBshXq1t/vmhty7TK09KPBrbDAjm9uDbf6zA0ZSczX4rh7tBf3rc5BC+Mv9WgfWHi5BQ=="
[ASPSP] Response Header sample:
X-Request-ID: 123e4567-e89b-12d3-a456-426614174000
[ASPSP] Response Body Sample (200 OK):
{
"transactionStatus": "ACCP"
}
[ASPSP] Response Header Parameters:
| Nume | Tip | Condiţie | Descriere |
| X-Request-ID | UUID | Obligatoriu | ID unic generat de TPP pentru identificarea cererii. |
[ASPSP] Parameters of Success Response:
| Parametru | Tip | Condiţie | Descriere |
| transactionStatus | String | Obligatoriu | Statutul actual al plăţii. |
[ASPSP] Response Sample (Error or Warning):
{
"tppMessages": [
{
"category": "ERROR",
"code": "FORMAT_ERROR",
"path": "string",
"text": "string"
}
[ASPSP] Parameters of Error Response:
| Parametru | Tip | Condiţie | Descriere |
| tppMessages | Array | Obligatoriu | Lista mesajelor de eroare generate de server. |
| tppMessages.category | String | Obligatoriu | Categoria mesajului (ERROR, WARNING). |
| tppMessages.code | String | Obligatoriu | Codul erorii (ex: FORMAT_ERROR). |
| tppMessages.text | String | Obligatoriu | Descrierea detaliată a erorii (ex: "Invalid IBAN format"). |
| tppMessages.path | String | Opţional | Indică locaţia exactă a erorii. |
Anexa nr.2
la Cerinţe funcţionale şi tehnice pentru
interfeţele prestatorilor de servicii de plată
care oferă servicii de administrare cont
Tipurile de răspuns şi codurile de eroare standardizate
1. Consent Status
| Cod | Descriere |
| received | Datele consimţământului au fost primite şi sunt corecte tehnic. Datele nu sunt încă autorizate. |
| rejected | Datele consimţământului au fost respinse, de exemplu, din cauza lipsei unei autorizări cu succes. |
| partiallyAuthorised | Consimţământul necesită o autorizare pe mai multe niveluri, dar nu toate autorizările mandatate au fost efectuate încă. |
| valid | Consimţământul este acceptat şi este valabil pentru apeluri GET de date ale contului şi altele specificate în obiectul consimţământului. |
| revokedByPsu | Consimţământul a fost revocat de PSU către ASPSP. |
| expired | Consimţământul a expirat. |
| terminatedByTpp | TPP-ul corespunzător a revocat consimţământul aplicând metoda DELETE resursei de consimţământ. |
2. Account Access
| Atribut | Tip | Descriere |
| accounts | Array | Solicitare pentru detaliile contului. |
| balances | Array | Solicitare pentru balanţele conturilor. |
| transactions | Array | Solicitare pentru tranzacţiile conturilor. |
| additionalInformation | Structurat | Solicită informaţii suplimentare structurate. |
| availableAccounts | String | Valori admise: "allAccounts" şi "allAccountsWithOwnerName". |
| availableAccountsWithBalance | String | Valori admise: "allAccounts" şi "allAccountsWithOwnerName". |
3. Account Reference
| Atribut | Tip | Descriere |
| iban | IBAN | Identificator IBAN al contului. |
| bban | BBAN | Cod BBAN, utilizat pentru conturile care nu au IBAN. |
| pan | PAN | Numărul de cont pentru carduri, utilizat în locul IBAN sau BBAN unde este cazul. |
| maskedPan | Masked PAN | PAN mascat, utilizat pentru a afişa parţial numărul cardului. |
| msisdn | MSISDN | Număr MSISDN utilizat pentru identificarea unui alias în plăţile instant. |
| currency | Cod valutar | Codul valutei contului. |
4. Account Details
| Atribut | Tip | Descriere |
| resourceId | String | Element de date utilizat pentru a accesa date dintr-un cont dedicat. |
| iban | IBAN | Referinţă IBAN a contului. |
| bban | BBAN | Codul BBAN, folosit pentru conturi fără IBAN. |
| pan | PAN | Număr de cont pentru carduri, utilizat în locul IBAN sau BBAN. |
| maskedPan | Masked PAN | PAN mascat pentru afişarea parţială a numărului cardului. |
| msisdn | MSISDN | Număr MSISDN pentru identificarea unui alias în plăţile instant. |
| currency | Cod Valutar | Codul valutei contului (ISO 4217). |
| ownerName | Max140Text | Numele proprietarului legal al contului. |
| name | Max70Text | Numele contului, atribuit de ASPSP în colaborare cu deţinătorul contului pentru o identificare suplimentară. |
| displayName | Max70Text | Numele contului aşa cum este definit de PSU în canale online. |
| product | Max35Text | Numele produsului aferent acestui cont. |
| cashAccountType | Cash Account Type | Codul tipului de cont conform ISO 20022. |
| status | String | Starea contului ("enabled" - disponibil, "deleted" - închis, "blocked" - blocat din motive legale). |
| bic | BICFI | Codul BIC asociat contului. |
| linkedAccounts | Max70Text | Nume pentru contul asociat tranzacţiilor cu carduri în aşteptare. |
| usage | Max4Text | Specifică utilizarea contului (PRIV - personal, ORGA - profesional). |
| details | Max500Text | Detalii suplimentare despre caracteristicile contului sau ale cardului relevant. |
| creditLimit | Amount | Limita de credit a PSU pentru toate cardurile legate de acest cont de card. |
| balances | Array of Balances | Specifică soldurile contului. |
| _links | Links | Link-uri directe pentru a accesa informaţii detaliate despre cont, solduri sau tranzacţii. |
5. Links
| Atribut | Descriere |
| scaRedirect | Link-ul către ASPSP unde SCA este realizat în cadrul abordării Redirect SCA. |
| scaOAuth | Link-ul face referire la un document JSON care specifică detaliile OAuth ale serverului de autorizare al ASPSP-ului. |
| confirmation | Link-ul care defineşte URL-ul către o resursă care trebuie actualizată cu un cod de confirmare sau un token de acces, în funcţie de procesul de autentificare (Redirect sau OAuth). |
| startAuthorisation | Link către un endpoint unde autorizarea unei tranzacţii sau anularea unei tranzacţii începe cu un POST. Nu sunt necesare date suplimentare. |
| startAuthorisationWithPsuIdentification | Link către un endpoint unde autorizarea unei tranzacţii începe cu furnizarea identificării PSU. |
| updatePsuIdentification | Link către resursa de iniţiere a plăţii sau de informaţii despre cont, care necesită actualizare cu identificarea PSU dacă aceasta nu a fost deja furnizată. |
| startAuthorisationWithProprietaryData | Link către un endpoint unde autorizarea unei tranzacţii începe cu date proprii specifice, conform documentaţiei ASPSP. |
| updateProprietaryData | Link către resursa care necesită actualizare cu datele proprii. |
| startAuthorisationWithPsuAuthentication | Link către un endpoint unde autorizarea începe cu autentificarea PSU. |
| updatePsuAuthentication | Link către resursa care necesită actualizare cu parola PSU şi, eventual, identificarea PSU dacă nu a fost deja furnizată. |
| updateAdditionalPsuAuthentication | Link către resursa care necesită actualizare cu o parolă suplimentară a PSU. |
| startAuthorisationWithEncryptedPsuAuthentication | Link către un endpoint unde autorizarea începe cu furnizarea datelor de autentificare criptate ale PSU. |
| updateEncryptedPsuAuthentication | Link către resursa care necesită actualizare cu parola criptată a PSU şi, eventual, identificarea PSU. |
| updateAdditionalEncryptedPsuAuthentication | Link către resursa care necesită actualizare cu o parolă suplimentară criptată a PSU. |
| startAuthorisationWithAuthenticationMethodSelection | Link către un endpoint unde autorizarea începe cu selectarea metodei SCA. |
| selectAuthenticationMethod | Link către o resursă unde TPP poate selecta metoda de autentificare aplicabilă pentru PSU. |
| startAuthorisationWithTransactionAuthorisation | Link către un endpoint unde autorizarea tranzacţiei şi transmiterea datelor de răspuns pentru provocare se realizează simultan. |
| authoriseTransaction | Link către resursa de iniţiere a plăţii sau consimţământ, unde este trimisă solicitarea de autorizare a tranzacţiei. |
| self | Link către resursa de iniţiere a plăţii creată prin solicitare. Poate fi utilizat pentru a verifica statutul tranzacţiei. |
| status | Link pentru a verifica statutul resursei tranzacţiei. |
| scaStatus | Link pentru a verifica statutul autorizării sau anulării autorizării. |
| account | Link către resursa care oferă detalii despre un cont specific. |
| balances | Link către resursa care oferă soldul unui cont specific. |
| transactions | Link către resursa care oferă istoricul tranzacţiilor unui cont specific. |
| cardAccount | Link către resursa care oferă detalii despre un cont de card. |
| cardTransactions | Link către resursa care oferă istoricul tranzacţiilor unui cont de card. |
| transactionDetails | Link către resursa care oferă detalii despre o tranzacţie specifică. |
| first | Link de navigare pentru rapoartele conturilor paginate. |
| next | Link de navigare pentru următorul raport paginat. |
| previous | Link de navigare pentru raportul anterior. |
| last | Link de navigare pentru ultimul raport paginat. |
| download | Link de descărcare pentru pachetele mari de date AIS. |
6. SCA Status
| Cod | Descriere |
| received | Resursa de autorizare a fost creată cu succes. |
| psuIdentified | PSU a fost identificat pentru resursa de autorizare. |
| psuAuthenticated | PSU a fost identificat şi autentificat. |
| scaMethodSelected | Procedura SCA a fost selectată de PSU/TPP. |
| started | Procedura SCA a fost începută. |
| unconfirmed | SCA a fost finalizat tehnic cu succes, dar necesită confirmare de la TPP. |
| finalised | Procedura SCA a fost finalizată cu succes. |
| failed | Procedura SCA a eşuat. |
7. Transaction Status
| Cod | Descriere |
| ACCC | Settlement-ul pe contul creditorului a fost completat. |
| ACCP | Verificarea profilului clientului a avut succes. |
| ACSC | Settlement-ul pe contul debitorului a fost completat. |
| ACSP | Iniţierea plăţii a fost acceptată pentru execuţie. |
| ACTC | Validarea tehnică a fost acceptată. |
| ACWC | Instrucţiunea a fost acceptată, dar se va face o modificare. |
| RCVD | Iniţierea plăţii a fost primită de agentul de recepţie. |
| PDNG | Iniţierea plăţii sau tranzacţia este în aşteptare. |
| RJCT | Iniţierea plăţii sau tranzacţia a fost respinsă de către PSU pe partea ASPSP. |
| CANC | Iniţierea plăţii a fost anulată înainte de execuţie prin cerere din partea TPP prin API. |
8. Balance Type
| Tip balans | Descriere |
| closingBooked | Soldul contului la sfârşitul perioadei de raportare convenite. Include toate înregistrările realizate pe cont. |
| expected | Sold calculat pe baza înregistrărilor realizate şi a articolelor în aşteptare, proiectând soldul de la sfârşitul zilei. |
| openingBooked | Soldul contului la începutul perioadei de raportare, identic cu soldul final al raportului anterior. |
| interimAvailable | Soldul disponibil calculat pe parcursul zilei lucrătoare, supus modificărilor ulterioare în cursul zilei. |
| interimBooked | Sold calculat în timpul zilei, pe baza înregistrărilor de credit şi debit realizate până la momentul specificat. |
| forwardAvailable | Sold disponibil în avans, pe care deţinătorul contului îl poate utiliza la o dată specificată. |
| nonInvoiced | Doar pentru conturile de card, în curs de definire. |
9. HTTP Response
| Cod Status | Descriere |
| 200 OK | Codul de răspuns pentru cereri PUT, GET, indicând că cererea a avut succes. |
| 201 Created | Răspuns POST pentru o cerere de Iniţiere de Plată sau Consimţământ efectuată corect. |
| 202 Accepted | Cod de răspuns pentru metoda DELETE, ul DELETE, utilizat atunci când o plată poate fi anulată, dar necesită o autorizare suplimentară. |
| 204 No Content | Cod de răspuns pentru metoda DELETE , care indică faptul că resursa de consimţământ a fost ştearsă/revocată cu succes. Cererea a fost procesată, dar răspunsul nu conţine niciun conţinut (no content). |
| 400 Bad Request | Eroare de validare, de exemplu, sintaxa greşită în cerere sau date incorecte în payload. |
| 401 Unauthorized | TPP-ul sau PSU-ul nu este autorizat corect să efectueze cererea. |
| 403 Forbidden | Resursa există dar nu poate fi accesată de TPP sau PSU. |
| 404 Not Found | Resursa sau endpoint-ul referit nu există sau nu poate fi găsit. |
| 405 Method Not Allowed | Metoda HTTP nu este suportată pe un endpoint specific. |
| 408 Request Timeout | Serverul funcţionează corect, dar cererea a expirat. |
| 409 Conflict | Cererea nu a fost completată din cauza unui conflict cu starea curentă a resursei ţintă. |
| 415 Unsupported Media Type | TPP-ul a furnizat un tip media (Content-Type) pe care ASPSP nu-l suportă. |
| 429 Too Many Requests | Cererea a fost respinsă din cauza unui volum prea mare de cereri într-un interval scurt de timp. |
| 500 Internal Server Error | Eroare generală a serverului ASPSP, indicând o problemă internă. |
| 503 Service Unavailable | Serviciul nu este disponibil temporar, de obicei din cauza mentenanţei sau suprasolicitării serverului. |
10. HTTP Error Codes
| Code | HTTP code | Descriere | Metoda endpoint |
| FORMAT_ERROR | 400 | Formatul anumitor câmpuri din cerere nu corespund cerinţelor. | /consents, /accounts, /payments |
| PARAMETER_NOT_CONSISTENT | 400 | Parametrii trimişi de TPP nu sunt consistenţi (doar pentru query parameters). | /consents, /accounts, /payments |
| PARAMETER_NOT_SUPPORTED | 400 | Parametrul nu este acceptat de API-ul ASPSP. | /consents, /accounts |
| SERVICE_INVALID | 400 (dacă payload)/ 405 (dacă metoda HTTP) | Serviciul solicitat nu este valid pentru resursele solicitate. | /consents, /accounts, /payments |
| RESOURCE_UNKNOWN | 400 (dacă payload)/ 403 (altă resursă în path)/ 404 (dacă account-id în path) | Resursa solicitată nu poate fi găsită în raport cu TPP. | /consents, /accounts, /payments |
| RESOURCE_EXPIRED | 400 (dacă payload)/ 403 (dacă path) | Resursa solicitată a expirat şi nu mai este accesibilă. | /consents, /accounts, /payments |
| RESOURCE_BLOCKED | 400 | Resursa solicitată nu poate fi accesată, fiind blocată de exemplu într-un coş de semnare (signing basket). | /consents, /accounts, /payments |
| TIMESTAMP_INVALID | 400 | Timpul nu este într-o perioadă acceptată. | /consents, /accounts, /payments |
| PERIOD_INVALID | 400 | Perioada de timp solicitată a ieşit din limită. | /consents, /accounts, /payments |
| SCA_METHOD_UNKNOWN | 400 | Metoda SCA abordată în cererea de selectare a metodei de autentificare este necunoscută sau nu poate fi comparată de ASPSP cu PSU. | /consents, /accounts, /payments |
| CONSENT_UNKNOWN | 400 (dacă header)/403 (dacă path) | Consent-ID nu poate fi găsit de ASPSP în raport cu TPP. | /consents, /accounts, /payments |
| SESSIONS_NOT_SUPPORTED | 400 | Indicatorul pentru serviciul combinat nu poate fi utilizat cu acest ASPSP. | /consents, /accounts, /payments |
| PAYMENT_FAILED | 400 | Cererea POST pentru iniţierea plăţii a eşuat. ASPSP va furniza detaliile eşuării. | /payments |
| EXECUTION_DATE_INVALID | 400 | Data de execuţie solicitată nu este validă pentru ASPSP. | /payments |
| CERTIFICATE_INVALID | 401 | Conţinutul certificatului semnăturii nu corespunde cerinţelor sau este invalid. | /consents, /accounts, /payments |
| ROLE_INVALID | 403 | TPP-ul nu deţine rolul necesar. | /consents, /accounts |
| CERTIFICATE_EXPIRED | 401 | Certificatul semnăturii este expirat. | /consents, /accounts, /payments |
| CERTIFICATE_BLOCKED | 401 | Certificatul semnăturii a fost blocat. | /consents, /accounts, /payments |
| CERTIFICATE_REVOKED | 401 | Certificatul semnăturii a fost revocat. | /consents, /accounts, /payments |
| CERTIFICATE_MISSING | 401 | Certificatul semnăturii nu a fost disponibil în cerere, dar este obligatoriu pentru serviciul corespunzător. | /consents, /accounts, /payments |
| CERTIFICATE_UNKNOWN | 401 | Certificatul semnăturii nu se regăsteşte în Lista Digitală Open Banking. | /consents, /accounts, /payments |
| SIGNATURE_INVALID | 401 | Semnătura aplicată pentru autentificarea TPP este invalidă. | /consents, /accounts, /payments |
| SIGNATURE_MISSING | 401 | Semnătura aplicată pentru autentificarea TPP este necesară dar lipseşte. | /consents, /accounts, /payments |
| CORPORATE_ID_INVALID | 401 | PSU-Corporate-ID nu poate fi găsit de ASPSP. | /consents, /accounts, /payments |
| PSU_CREDENTIALS_INVALID | 401 | PSU-ID nu poate fi găsit de ASPSP sau este blocat, sau parola/OTP nu este corectă. | /consents, /accounts, /payments |
| CONSENT_INVALID | 401 | Consimţământul creat de TPP nu este valid pentru serviciul/resursa solicitată. | /consents, /accounts, /payments |
| CONSENT_EXPIRED | 401 | Consimţământul creat de TPP a expirat şi trebuie reînnoit. | /consents, /accounts, /payments |
| TOKEN_UNKNOWN | 401 | Token-ul OAuth2 nu poate fi găsit de ASPSP în raport cu TPP. | /consents, /accounts, /payments |
| TOKEN_INVALID | 401 | Token-ul OAuth2 este asociat TPP-ului dar nu este valid pentru serviciul/resursa solicitată. | /consents, /accounts, /payments |
| TOKEN_EXPIRED | 401 | Token-ul OAuth2 a expirat şi trebuie reînnoit. | /consents, /accounts, /payments |
| SERVICE_BLOCKED | 403 | Serviciul nu este accesibil PSU din cauza unei blocări independente de canal din partea ASPSP. | /consents, /accounts, /payments |
| PRODUCT_INVALID | 403 | Produsul de plată solicitat nu este disponibil pentru PSU. | /payments |
| PRODUCT_UNKNOWN | 404 | Produsul de plată solicitat nu este acceptat de ASPSP. | /payments |
| CANCELLATION_INVALID | 405 | Plăţile adresate nu pot fi anulate din cauza unui timp limită sau a unor restricţii legale. | /payments |
| REQUESTED_FORMATS_INVALID | 406 | Formatele solicitate în antetului Accept nu corespund formatelor oferite de ASPSP. | /consents, /accounts |
| STATUS_INVALID | 409 | Resursa solicitată nu permite autorizări suplimentare. | /consents, /accounts, /payments |
| ACCESS_EXCEEDED | 429 | Accesul la cont a depăşit multiplicitatea consimţită fără implicarea PSU pe zi. | /consents, /accounts |
Anexa nr.3
la Cerinţe funcţionale şi tehnice pentru
interfeţele prestatorilor de servicii de plată
care oferă servicii de administrare cont
Mecanismul de verificare de către ASPSP a apelurilor transmise de TPP
1. Generarea cererii de către TPP
Pasul 1. Calcularea hash-ului pentru câmpul Digest
1.1. TPP-ul creează corpul cererii (de exemplu, JSON-ul cu datele tranzacţiei sau consimţământului).
1.2. TPP-ul aplică algoritmul SHA-256 asupra corpului cererii pentru a genera un hash unic.
1.3. Hash-ul rezultat este codificat în format Base64 şi plasat în header-ul cererii Digest.
Pasul 2. Crearea stringului de semnare (signing string)
2.1. TPP pregăteşte un string de semnare (signing string) pe baza unor câmpuri specifice din header-ul cererii.
2.2. Stringul de semnare se obţine prin concatenarea valorilor header-ilor semnate, în format specific.
2.3. Ordinea valorilor header-ilor este importantă şi este conformă specificaţiilor.
Pasul 3. Semnarea stringului de semnare
3.1. TPP foloseşte cheia privată RSA asociată certificatului său pentru a genera semnătura electronică.
3.2. Semnătura este aplicată pe stringul de semnare folosind algoritmul RSA-SHA256.
3.3. Semnătura electronică rezultată este codificată în Base64 şi plasată în header-ul Signature.
Pasul 4. Adăugarea certificatului în header-ul TPP-Signature-Certificate
4.1. TPP-ul include certificatul său public în header-ul cererii TPP-Signature-Certificate.
4.2. Certificatul este emis de o autoritate de certificare (CA) de încredere şi conţine cheia publică a TPP-ului.
Pasul 5. Trimiterea cererii către ASPSP
5.1. TPP-ul trimite cererea completă, inclusiv header-urile Digest, Signature şi TPP-Signature-Certificate, către endpoint-ul ASPSP.
2. Verificarea cererii de către ASPSP
Pasul 1. Validarea certificatului TPP
1.1. ASPSP verifică certificatul TPP-ului inclus în TPP-Signature-Certificate.
Etape:
1.1.1. Verificarea lanţului de încredere al certificatului până la o autoritate de certificare de încredere.
1.1.2. Verificarea că certificatul este valid (neexpirat şi nerevocat).
1.1.3. ASPSP trebuie să verifice că certificatul prezentat de TPP este emis şi valid pentru utilizarea în cadrul serviciilor Open Banking, având scopul de semnare electronică şi autentificare, şi că acesta corespunde exact TPP-ului înregistrat sau licenţiat de BNM (prin interogarea Listei digitale Open Banking a BNM în cazul utilizării acesteia de ASPSP pentru verificare TPP), prin validarea numărului de serie al certificatului şi a autorităţii emitente (CA nivel 2 sau root CA), precum şi a câmpului Signature.
Rezultat: Dacă certificatul este valid, identitatea TPP-ului este confirmată.
Pasul 2. Verificarea hash-ului din Digest
2.1. ASPSP calculează propriul hash SHA-256 asupra corpului cererii primit.
2.2. Hash-ul calculat este comparat cu valoarea din header-ul Digest.
Rezultat: Dacă cele două hash-uri sunt identice, integritatea corpului cererii este confirmată.
Pasul 3. Verificarea semnăturii din Signature
3.1. ASPSP-ul extrage valorile header-ilor incluse în "signing string" pe baza informaţiilor din Signature.
3.2. ASPSP recreează stringul de semnare conform aceluiaşi format folosit de TPP.
3.3. ASPSP foloseşte publică extrasă din certificatul aflat în header TPP-Signature-Certificate pentru a verifica semnătura din Signature.
Rezultat: Dacă semnătura este validă, autenticitatea cererii este confirmată.
Pasul 4. Autorizarea cererii
4.1. Dacă toate verificările sunt trecute (rolul, integritatea, semnătura şi certificatul), ASPSP procesează cererea.
4.2. În caz contrar, cererea este respinsă cu un mesaj de eroare (de exemplu, 401 Unauthorized sau 403 Forbidden).
3. Detalii adiţionale.
Cum verifică ASPSP semnătura din Signature?
1. Extrage cheia publică din certificatul TPP-Signature-Certificate:
1.1. ASPSP preia certificatul (TPP-Signature-Certificate) din header-ul (TPP-Signature-Certificate) cererii.
1.2. Din acest certificat, ASPSP extrage cheia publică a TPP-ului.
2. Recreează signing string:
2.1. ASPSP analizează header-ul Signature pentru a identifica câmpurile semnate (ex.: Digest, X-Request-ID, Date, etc.).
2.2. ASPSP recreează signing string din valorile efective ale acestor headere, în ordinea specificată.
3. Decodifică semnătura:
3.1. ASPSP decodifică valoarea din câmpul signature al antetului HTTP Signature (adică Signature.signature), care reprezintă semnătura electronică generată de TPP.Decodarea se face utilizând cheia publică extrasă din certificatul TPP-Signature-Certificate şi algoritmul specificat în Signature.algorithm (ex.: RSA-SHA256).
4. Compară hash-ul rezultat:
4.1. În timpul decodificării, ASPSP obţine un hash calculat de TPP în momentul semnării.
4.2. ASPSP compară acest hash cu hash-ul generat intern din stringul de semnare recreat.
5. Rezultate posibile:
5.1. Dacă hash-urile coincid, semnătura este validă.
5.2. Dacă hash-urile nu coincid, semnătura este invalidă, iar cererea este respinsă.