Nordlet

← Blog

API-uri de registre contabile în partidă dublă pentru contabilitatea platformelor de tip marketplace

Un ghid tehnic despre cum funcționează API-urile de registre contabile imuabile în partidă dublă, de ce au nevoie marketplace-urile de acestea și ce trebuie să urmăriți atunci când integrați contabilitatea în platforma dumneavoastră.

Nordlet Team · · 13 min de citire

Majoritatea marketplace-urilor descoperă că au o problemă contabilă în același mod: un nou angajat la departamentul financiar vine, deschide foaia de calcul cu plățile și întreabă cine înregistrează de fapt datoria față de vânzători între momentul în care un cumpărător plătește și momentul în care fondurile părăsesc contul platformei. Echipa de inginerie indică spre un tabel transactions. Angajatul financiar subliniază că un tabel de evenimente nu reprezintă un set de registre contabile. Această prăpastie dintre datele despre evenimente și contabilitatea reală este ceea ce un API de registru contabil în partidă dublă este conceput să o acopere.

Aceasta este o chestiune tehnică cu implicații de reglementare serioase. Marketplace-urile dețin banii altor persoane, calculează TVA-ul în mai multe jurisdicții și emit facturi în numele vânzătorilor. Să faceți acest lucru cu un tabel de tranzacții creat intern funcționează până în momentul în care un auditor, o autoritate fiscală sau un cumpărător serios solicită dovezi.

Ce este de fapt un API de registru contabil în partidă dublă

Un API de registru contabil în partidă dublă este un motor contabil programabil expus prin HTTP. Fiecare eveniment financiar pe care platforma dumneavoastră îl înregistrează este scris sub forma unei înregistrări jurnal echilibrate: cel puțin un debit și un credit, egale în total, postate în conturi denumite dintr-un plan de conturi. API-ul impune acest echilibru în momentul scrierii și stochează înregistrările astfel încât să nu poată fi modificate în mod subtil ulterior.

Partea de „partidă dublă” reprezintă regula contabilă veche de patru sute de ore conform căreia fiecare tranzacție afectează cel puțin două conturi. Partea de „API” înseamnă că produsul dumneavoastră, nu un contabil uman, este cel care apelează serviciul. Partea de „imuabil” înseamnă că corecțiile se fac prin înregistrări de stornare, nu prin editarea istoricului. Împreună, aceste trei proprietăți sunt cele care fac ca registrele rezultate să fie pregătite pentru audit, mai degrabă decât pur și simplu ordonate.

O definiție de lucru utilă:

Un API de registru contabil în partidă dublă acceptă evenimente financiare din aplicația dumneavoastră, le convertește pe fiecare într-o înregistrare jurnal echilibrată în raport cu un plan de conturi definit, stochează aceste înregistrări în mod imuabil și expune registrul rezultat, balanța de verificare și rapoartele financiare prin intermediul unor puncte finale (endpoints) previzibile.

Nordlet este construit exact în jurul acestei idei: registre contabile reale ca API, unde registrul, logica TVA-ului, facturarea și reconcilierea sunt accesibile din aceeași set de puncte finale cu care produsul dumneavoastră comunică deja.

De ce au nevoie marketplace-urile în mod special de acest lucru

O companie SaaS cu un singur comerciant poate scăpa adesea sincronizându-se cu o unealtă contabilă generală o dată pe zi. Marketplace-urile nu pot face acest lucru, din trei motive.

În primul rând, ele se află în mijlocul fluxului de bani. Un cumpărător plătește platforma, platforma deține fondurile, apoi îi plătește pe vânzători minus comisioane. Fiecare dintre aceste mișcări este un eveniment contabil distinct care afectează diferite conturi: numerar, datorii față de vânzători, venituri ale platformei, TVA de plată, rezerve pentru rambursări. Un tabel de payments cu o coloană status nu surprinde acest lucru.

În al doilea rând, ele operează în mai multe jurisdicții fiscale. Un marketplace din UE cu vânzători în Lituania, Germania și Polonia, și cumpărători în tot blocul comunitar, trebuie să aplice tratamentul de TVA corect pentru fiecare tranzacție, să valideze codurile de TVA ale vânzătorilor prin VIES și să producă declarații care să satisfacă fiecare autoritate locală. Să implementați acest lucru corect în codul aplicației, reconciliindu-l apoi cu un sistem contabil separat, reprezintă punctul în care majoritatea marketplace-urilor cedează în tăcere.

În al treilea rând, volumul nu este potrivit pentru contabilitatea manuală. O platformă care procesează zece mii de comenzi pe lună generează zeci de mii de înregistrări jurnal. Acest proces trebuie automatizat cap-coadă, altfel echipa financiară devine un blocaj în calea creșterii.

Cum funcționează API-ul, pas cu pas

Mecanismele sunt mai puțin exotice decât sună. Un flux tipic pentru o comandă pe marketplace arată cam așa:

1. Platforma dumneavoastră emite un eveniment financiar. Un cumpărător finalizează achiziția. Backend-ul dumneavoastră apelează API-ul de registru cu elemente precum: ID-ul comenzii, cumpărătorul, vânzătorul, suma brută, cota de TVA, comisionul platformei, moneda și o cheie de idempotență (idempotency key).

2. Registrul construiește o înregistrare jurnal. API-ul traduce acest eveniment în debite și credite. Pentru o vânzare directă pe marketplace, acest lucru ar putea însemna debitarea unui cont de numerar în tranzit, creditarea unui cont de datorii față de vânzători pentru suma netă, creditarea unui cont de venituri ale platformei pentru comision și creditarea unui cont de TVA de plată pentru partea de taxă. Totul este echilibrat și postat atomic.

3. Înregistrarea este scrisă în mod imuabil. Odată postată, înregistrarea primește un identificator și o marcă temporală și nu mai poate fi editată. Dacă ceva este în regulă, postați o înregistrare de stornare și una corectată. Traseul de audit (audit trail) este scopul principal.

4. Rapoartele din aval se actualizează în timp real. Balanța de verificare, soldurile datoriilor către vânzători, sumarele de TVA și contul de profit și pierdere reflectă noua înregistrare imediat. Nu există nicio sarcină nocturnă (nightly job), niciun export, nicio fereastră de reconciliere în care numerele să se „așeze”.

5. Webhook-urile notifică sistemul dumneavoastră. Evenimente precum sale_invoice.paid sau bank_transaction.matched sunt trimise către punctele dumneavoastră finale (endpoints), astfel încât produsul să poată reacționa fără interogări periodice (polling). Combinat cu cheile de idempotență, acest lucru înseamnă că reîncercările sunt sigure, iar duplicatele nu își fac apariția atunci când rețeaua întâmpină probleme.

Punctul de design important: registrul este sursa unică de adevăr pentru ceea ce s-a întâmplat din punct de vedere financiar. Baza de date a aplicației dumneavoastră este sursa unică de adevăr pentru starea produsului. Cele două sisteme se reconciliază deoarece registrul este scris pe baza evenimentelor din aplicație, și nu invers.

Planul de conturi este locul unde se desfășoară munca de design

Cea mai mare parte a efortului intelectual în configurarea unui registru pentru un marketplace se concentrează în planul de conturi. Aceasta este lista de categorii denumite în care se reflectă debitele și credite: conturi de numerar pe bancă, conturi de datorii față de vânzători (deseori unul per vânzător sau un cont agregat cu sub-registre), venituri ale platformei pe categorii, TVA de plată per țară, rezerve pentru rambursări, rezerve pentru sume contestate (chargebacks) și așa mai departe.

Câteva modele care se repetă în rândul marketplace-urilor:

  • Fondurile vânzătorilor reprezintă o datorie, nu un venit. Banii pe care îi dețineți în numele vânzătorilor reprezintă o datorie exigibilă. Să îi tratați ca venituri și să „treceți pe cheltuieli” plata ulterioară este greșeala clasică care iese la iveală în timpul auditurilor de due diligence.
  • TVA-ul este o datorie separată pentru fiecare țară. Dacă operați în jurisdicții din UE, doriți conturi distincte de TVA de plată per țară, astfel încât declarațiile să se potrivească în mod curat.
  • Comisioanele trebuie modelate în momentul în care sunt câștigate, nu atunci când sunt plătite efectiv. Contabilitatea pe bază de angajamente (accrual accounting) nu este opțională aici.
  • Rambursările, sumele contestate și dispute necesită fiecare conturile proprii, astfel încât contul de profit și pierdere să reflecte realitatea mai degrabă decât un amestec de vânzări pozitive și negative.

Un API de registru bun vă permite să definiți această structură o singură dată și apoi să postați în ea cu încredere, în loc să reinventați logica contabilă în interiorul codului de checkout.

Imuabilitatea, blocarea perioadelor și de ce le pasă auditorilor

Imuabilitatea sună a detaliu de bază de date. De fapt, este diferența dintre registrele pe care un auditor le va contrasemna și cele pe care le va refuza.

Dacă un marketplace poate edita în liniște înregistrările din trimestrul trecut, atunci numerele din trimestrul trecut sunt, din punct de vedere contabil, necunoscute. Un registru imuabil impune regula că istoricul rămâne istoric. Corecțiile sunt vizibile ca fiind corecții. Blocarea perioadelor extinde acest concept: odată ce o lună este închisă, nicio înregistrare nouă sau editare nu poate fi efectuată în acea perioadă fără o acțiune explicită de redeschidere, care este la rândul ei înregistrată în jurnal.

Pentru platformele care vor atrage finanțare în cele din urmă, vor fi vândute sau se vor confrunta cu un audit fiscal, acest lucru nu este un moft. Este elementul care face ca registrele să poată fi susținute și apărate. Registrul Nordlet este conceput în jurul acestui principiu în mod nativ, structura în partidă dublă fiind imuabilă, iar blocarea perioadelor fiind integrată din start, nu adăugată ulterior.

TVA-ul în UE: partea care consumă timp din inginerie

TVA-ul este domeniul în care majoritatea proiectelor contabile pentru marketplace-uri depășesc estimările. Regulile nu înseamnă simpla „aplicare a unui procent”. Ele depind de locul unde se află cumpărătorul, unde se află vânzătorul, ce anume se vinde, dacă vânzătorul este înregistrat în scopuri de TVA, dacă marketplace-ul este considerat furnizor (deemed supplier) conform regulilor de comerț electronic din 2021 și ce regim de raportare se aplică la nivel local.

Un API de registru serios pentru UE gestionează cel puțin următoarele aspecte:

  • Validarea VIES pentru codurile de TVA ale vânzătorilor și cumpărătorilor, ideal cu rezultatele stocate în cache și marcate pe tranzacție
  • Logica cotelor de TVA per țară, inclusiv cote reduse și scutiri
  • Generarea registrului i.SAF pentru declarațiile din Lituania și ieșiri structurate echivalente acolo unde alte state membre le solicită
  • Facturarea electronică Peppol BIS 3.0 pentru jurisdicțiile care trec la facturarea electronică obligatorie
  • Gestionarea OSS/IOSS pentru vânzările transfrontaliere B2C

Să implementați toate acestea în codul aplicației, pentru fiecare țară în parte, reprezintă munca unei echipe întregi de ingineri, o muncă ce nu se termină niciodată cu adevărat deoarece regulile continuă să se schimbe. Mutarea acestei poveri în stratul registrului este decizia pragmatică.

Reconcilierea este locul unde apar economiile de timp

Odată ce registrul devine sursa unică de adevăr, reconcilierea bancară încetează să mai fie un chin lunar. Extrasele bancare sosesc, registrul știe deja ce ar trebui să se afle acolo, iar potrivirea este în mare măsură automată.

Versiunea realistă a acestui proces nu înseamnă „zero muncă manuală”. Înseamnă că „excepțiile ies singure la suprafață”. Un flux de reconciliere cu un singur clic pentru cele nouăzeci la sută dintre tranzacții care se potrivesc perfect, plus o coadă de așteptare pentru cele zece la sută care necesită o decizie umană, reprezintă aproximativ ceea ce oferă un API de reconciliere bine conceput. Potrivirea inteligentă a plăților gestionează plățile parțiale, plățile în exces și plățile care acoperă facturi multiple fără ca un om să scrie reguli pentru fiecare caz în parte.

Exportul SEPA (formatul pain.001) pentru plățile către furnizori și vânzători închide cercul pe partea de ieșiri. Dumneavoastră aprobați plățile în produs, registrul generează fișierul SEPA, banca îl procesează, iar mișcarea rezultată este reconciliată în mod automat.

Construire vs. cumpărare vs. integrare

Echipele de la marketplace-uri tind să ia în considerare trei căi. Iată cum se compară acestea în funcție de criteriile care contează:

Abordare Timp până la producție Pregătire pentru audit Gestionarea TVA în UE Se integrează în produsul dumneavoastră
Construirea propriului registru 12 până la 24+ luni Depinde în totalitate de echipa dumneavoastră Îl construiți dumneavoastră, per țară Da
Sincronizarea cu Xero/QuickBooks Săptămâni Bună pentru partea contabilă, slabă pentru fluxurile specifice marketplace-urilor Parțială, sunt necesare suplimente (add-ons) Nu, funcționează într-o unealtă separată
Integrarea unui API de registru (de ex., Nordlet) Săptămâni Inclusă prin registru imuabil și blocare a perioadelor Inclusă pentru UE, inclusiv VIES și i.SAF Da, prin API și SDK-uri

Construirea propriei soluții este justificată dacă activitatea de contabilitate este chiar produsul dumneavoastră. Pentru toți ceilalți, calculele economice funcționează rar în favoarea acestei variante. Sincronizarea cu o unealtă contabilă tradițională funcționează pentru afacerile cu o singură entitate, dar cedează sub presiunea fluxurilor specifice unui marketplace: plăți divizate, sub-registre pentru vânzători, TVA per țară și scenariile în care platforma este considerată furnizor (deemed supplier) nu se mapează curat pe unelte concepute pentru registrele unei singure companii.

Integrarea unui registru bazat pe API reprezintă direcția spre care converg majoritatea platformelor moderne. Registrele trăiesc în interiorul experienței produsului dumneavoastră, vânzătorii își văd propriile date financiare în interfața dumneavoastră, iar partea dificilă legată de conformitate este gestionată la nivelul infrastructurii.

Ce să urmăriți atunci când evaluați un API de registru contabil

O listă scurtă de verificare pe care merită să o aveți la îndemână în timpul apelurilor cu furnizorii:

  • Stocare imuabilă în partidă dublă cu corecții prin înregistrări de stornare, nu cu rânduri editabile
  • Blocare a perioadelor cu acțiuni de redeschidere înregistrate în jurnal
  • Chei de idempotență pentru fiecare punct final (endpoint) de scriere
  • Webhook-uri pentru evenimentele la care produsul dumneavoastră trebuie să reacționeze, nu doar un API de interogare periodică (polling)
  • SDK-uri tipizate în limbajele pe care echipa dumneavoastră le folosește efectiv
  • Logică de TVA per țară, inclusiv VIES, i.SAF sau echivalente, precum și OSS/IOSS
  • Suport multi-companie, dacă operați mai multe entități sau intenționați să o faceți
  • Acces bazat pe roluri suficient de granular pentru a separa dezvoltatorii, contabilii și persoanele cu drept de vizualizare
  • Exporturi de rapoarte în XLSX, PDF și JSON, cu notificări prin webhook atunci când rapoartele mari sunt gata
  • Un mediu de testare (sandbox) care oglindește comportamentul din producție, nu o demonstrație simplificată

Dacă un furnizor nu poate demonstra primele trei puncte într-o discuție tehnică, restul nu mai contează.

Ce aș face prima dată

Dacă un marketplace începe această muncă de la zero, succesiunea care economisește cel mai mult timp și efort:

  1. Mapatți fluxurile reale de bani pe o tablă albă înainte de a scrie cod. Cine îi datorează cui, în ce moment, în ce monedă, cu ce tratament de TVA.
  2. Schițați planul de conturi pornind de la acea hartă. Datorii față de vânzători, venituri ale platformei, TVA de plată per țară, rezerve. Rugați un contabil să îl revizuiască înainte de a ajunge în producție.
  3. Alegeți stratul registrului: construiți, sincronizați sau integrați. Fiți sinceri cu privire la opțiunea pe care echipa dumneavoastră o poate livra și menține efectiv.
  4. Implementați un flux complet cap-coadă: de la comandă, la factură, plată și reconciliere. Aduceți dovezi că se echilibrează. Apoi extindeți-vă.
  5. Activați blocarea perioadelor de îndată ce prima lună se închide corect. Această disciplină aduce beneficii cumulate.

Echipele care înțeleg corect acest lucru tratează registrul ca pe o infrastructură de bază, nu ca pe o completare ulterioară destinată doar raportării. Aceasta este schimbarea de perspectivă, iar ea transformă discuția financiară cu un auditor, un investitor sau o autoritate fiscală dintr-una lungă și dificilă într-una scurtă.

FAQ

Este un API de registru contabil în partidă dublă același lucru cu o integrare contabilă?

Nu. O integrare sincronizează datele din produsul dumneavoastră într-o unealtă contabilă externă, de obicei cu o anumită întârziere. Un API de registru este sistemul contabil în sine, în care se scrie direct, în timp real. Această distincție contează deoarece integrările pierd din fidelitate la margini: plăți parțiale, multi-valută, divizări specifice marketplace-urilor. Un API de registru înregistrează aceste aspecte în mod nativ.

Nu putem folosi pur și simplu rapoartele de la Stripe sau Adyen?

Rapoartele procesatorilor de plăți vă arată ce a trecut prin procesator. Ele nu reprezintă registre contabile în partidă dublă. Acestea nu cunosc datoriile dumneavoastră față de vânzători care nu au fost încă plătite, datoriile de TVA în diferite țări sau cheltuielile care nu trec prin procesatorul de plăți. Ele constituie o singură intrare în registru, nu o înlocuire a acestuia.

Cât de imuabil este termenul „imuabil” în practică?

Înregistrările nu pot fi editate. Corecțiile sunt înregistrări noi care fac referire la cea originală. Aceasta este o decizie de design, nu una tehnologică. Orice registru competent va impune acest lucru. Motivul pentru care trebuie să vă pese este că abordarea „l-am editat ca să se potrivească cu banca” reprezintă exact tiparul care face ca registrele contabile să nu mai fie de încredere.

Ce se întâmplă cu marketplace-urile din afara UE?

Mecanismele partidei duble sunt universale. Logica fiscală nu este însă la fel. Un API de registru optimizat pentru TVA-ul din UE va gestiona bine operațiunile cu un volum mare în UE și poate sprijini tranzacțiile din afara UE, dar dacă piața dumneavoastră principală este reprezentată de taxa pe vânzări din SUA sau de regimurile de facturare electronică din America Latină, verificați acoperirea specifică de conformitate înainte de a vă lua un angajament.

Cât durează efectiv implementarea?

Pentru un marketplace cu un model de evenimente curat, integrarea unui API de registru până la punctul rulării unui flux complet cap-coadă durează de obicei câteva săptămâni de inginerie. O migrare completă de la o configurație veche, incluzând datele istorice, durează mai mult. Variabila este aproape întotdeauna starea datelor existente, nu API-ul în sine.