Nordlet

← Emuārs

Kas ir definējams kā nemainīga dubultierakstu virsgrāmatas API

Praktisks apskats par funkcijām, kas atšķir īstu grāmatvedības virsgrāmatu ES tirdzniecības vietām no mainīgas bilances tabulas ar labu mārketingu.

Nordlet Team · · 10 min. lasīts

Tirdzniecības vietas (marketplace) virsgrāmatu nenosaka tas, vai tā uzglabā naudas plūsmas. Lielākā daļa sistēmu to dara. To nosaka tas, kas notiek, kad maksājumu pakalpojumu sniedzējs divreiz nosūta to pašu tīmekļa āķi (webhook), kad atmaksa ienāk pēc tam, kad tirgotājam jau ir izveikts izmaksas maksājums, vai kad auditors jautā, kā tirgotāja bilance sasniedza savu pašreizējo skaitli. Šie brīži parāda, vai jūsu rīcībā ir nemainīga dubultieraksta virsgrāmata vai mainīgs lauks ar cerīgu nosaukumu.

Tirdzniecības vietas platformai īsā atbilde ir šāda: nemainīga dubultierakstu virsgrāmatas API reģistrē katru finansiāli nozīmīgu notikumu kā sabalansētu žurnāla darījumu, iegrāmato to atomāri, nekad nepārraksta un ļauj atvasināt bilances, saskaņot datus ar ārējām sistēmām un programmatiski eksportēt vēsturi. Viss pārējais ir detaļas, kas balstās uz šo kodolu.

Sabalansēti žurnāla ieraksti, nevis tekošās bilances lauks

Vienīgais skaidrākais pārbaudījums ir tas, kā API attēlo tirgotāja bilanci. Ja bilance ir skaitlis, ko jūsu lietojotne palielina tieši, tā nav dubultierakstu virsgrāmata. Ja bilance ir atvasināts skats no iegrāmatotajām žurnāla rindām, tā varētu tāda būt.

Katram darījumam jāsatur vienādi debeti un kredīti. Kad pircējs samaksā 100 EUR par pasūtījumu, kurā tirdzniecības vieta ietur 15 EUR komisijas maksu, virsgrāmata reģistrē norēķinu kontu debetā par 100 EUR pret tirgotāja kreditoru parādu kredītā par 85 EUR un komisijas ieņēmumiem kredītā par 15 EUR. Abas puses vienmēr summējas līdz vienādai summai. Šis strukturālais noteikums novērš lielu kļūdu klasi, pirms tās nonāk atskaitē.

Žurnāla darījumam ir jāuzrāda vismaz:

  • unikāls, nemainīgs darījuma ID;
  • debeta un kredīta rindas, katra ar kontu, summu un valūtu;
  • spēkā stāšanās datums un iegrāmatošanas laika zīmogs;
  • biznesa notikuma veids (pārdošana, atmaksa, izmaksa, maksājuma atgriešana jeb chargeback);
  • idepotences atslēga;
  • avota atsauce uz pasūtījumu, maksājumu vai pakalpojumu sniedzēja notikumu;
  • statuss (gaida, iegrāmatots, anulēts);
  • pakalpojums vai akreditācijas dati, kas to izveidoja.

Tirgotāja pieejamie līdzekļi tad kļūst par vaicājumu šīm rindām, nevis vērtību, ko kāds atjauninājis lietotnes kodā. Tas ir svarīgi tāpēc, ka tieši modificēta bilance zaudē katras kustības iemeslu. Nordlet modelis izmanto dubultierakstu virsgrāmatu kā autoritatīvu ieraksta ceļu: katrs dokuments iegrāmato sabalansētas žurnāla rindas, un pati datubāze atsakās apstiprināt nesabalansētas rindas. Tas ir pareizais noklusējums ikvienam, kas ievieš grāmatvedību tirdzniecības vietā.

Tikai pievienošanas (append-only) iegrāmatošana ar kompensējošiem labojumiem

Vārdam "nemainīgs" (immutable) ir jānozīmē, ka iegrāmatotu žurnālu nevar rediģēt tā atrašanās vietā. Kļūdas tiek labotas virzienā uz priekšu, nevis dzēstas. Nepareizs komisijas ieraksts saņem anulēšanu (reversal), kas dzēš oriģinālu, un pēc tam labotu ierakstu, kas reģistrē paredzēto rezultātu. Abi ir savienoti ar oriģinālu, un audita vēsture parāda, kas un kad ierosināja izmaiņas.

API ir jānoraida vienkārši UPDATE un DELETE pieprasījumi attiecībā uz iegrāmatotajiem grāmatvedības ierakstiem. Tā varļaut pievienot ar finansēm nesaistītus metadatus, piemēram, atbalsta pieteikuma atsauci, ja vien summas, konti un laika zīmogi paliek neskarti.

Ir noderīgi nodalīt trīs lietas, kuras cilvēki jauc:

  • Operacionālā nemaināmība: lietotnes lietotāji nevar mainīt vai dzēst iegrāmatotās rindas.
  • Audita nemaināmība: sistēma var pierādīt, ka vēsture nav mainīta.
  • Juridiskā glabāšana: ieraksti tiek glabāti normatīvajos aktos noteikto laiku.

Relāciju datubāze, kas ļauj tikai pievienot datus (append-only) ar stingrām atļaujām, dublējumiem un disciplinētiem anulēšanas darbplūsmām, nodrošina patiesi nemainīgu virsgrāmatas sistēmu. Blokķēde šeit nav prasība, un ES grāmatvedības datiem tā parasti rada privātuma un labošanas problēmas, kas atsver tās sniegtās viltošanas pazīmju pārbaudes priekšrocības.

Atomitāte un idepotence

Tirdzniecības vietas notikumam jābūt iegrāmatotam atomāri. Vai nu visas žurnāla rindas tiek apstiprinātas, vai neviena. 100 EUR ieņēmumu reģistrēšana, neierakstot 15 EUR komisijas maksu, rada nesabalansētu, maldinošu rezultātu, kas vēlāk kādam ir jāatšķetina. Nordlet to nodrošina zem lietotnes slāņa: aizkavēts datubāzes trigeris (trigger) pārbauda, ka katrs ieraksts darījuma brīdī ir sabalansēts, tāpēc nesabalansētu darījumu vispār nav iespējams apstiprināt.

Idepotence ir vieta, kur lielākā daļa integrāciju klusi sabrūk. Maksājumu sistēmas tīkla kļūdu gadījumā veic atkārtotus mēģinājumus, un norēķinu faili tiek atskaņoti atkārtoti. Bez idepotences atslēgas, kas attiecas uz nomnieku vai kontu, viens atkārtots pieprasījums rada dubultu grāmatvedību. Atkārtotam pieprasījumam ar to pašu atslēgu vajadzētu atgriezt sākotnējo darījumu, nevis otru.

Atsaucei jābūt saistītai ar sākotnējo notikumu, notikuma veidu, pakalpojumu sniedzēja notikuma ID, juridisko personu un pieprasījuma datu (payload) jaucējkodu (hash). Ja tiek saņemta tā pati atslēga ar citu summu vai valūtu, API ir jāuztver tas kā sadursme un jānoraida pieprasījums, nevis klusējot jāpieņem jauni dati. Klusa pieņemšana ir iemesls, kāpēc audita pēdas sabojājas. Nordlet Idempotency-Key galvene (header) darbojas šādi: atkārtots mēģinājums ar to pašu atslēgu un datiem atskaņo saglabāto atbildi, bet tā pati atslēga ar citiem datiem tiek noraidīta ar kļūdu idempotency_key_reuse. Tā ir maza funkcija ar milzīgu ietekmi uz saskaņošanu.

Vairāku pušu sadalītā grāmatvedība (Multi-party split accounting)

Tirdzniecības vietas pasūtījums nav viena naudas kustība. Viens pārdošanas darījums var skart pircēja līdzekļus, tirgotāja ienākumus, tirdzniecības vietas komisijas maksu, maksājumu apstrādes maksu, komisijas maksas PVN, piegādi un rezerves. Virsgrāmatai ir nepieciešamas kontu struktūras, kas tās glabā atsevišķi, nevis apvieno vienā neto rādītājā.

Pastāv izplatīts pieņēmums, pret kuru ir vērts iebilst: maksājumu pakalpojumu sniedzēja "dalīto izmaksu" (split payout) funkcija nav tas pats, kas tirdzniecības vietas grāmatvedība. Naudas sadalīšana starp saņēmējiem novirza skaidru naudu. Tas nesniedz pilnīgu, nemainīgu ierakstu par nopelnīto komisijas maksu, iekasēto PVN, atmaksājamām summām vai turētajām rezervēm. Jums joprojām ir nepieciešama sava virsgrāmata, un tā joprojām ir jāsaskaņo ar pakalpojumu sniedzēju.

Tirdzniecības vietas virsgrāmatai ir arī jānošķir vairāk nekā viena tirgotāja bilance:

Bilances statuss Ko tas attēlo
Gaida (Pending) Līdzekļi, kas piesaistīti notikumam, bet vēl nav tiesīgi izņemšanai
Pieejams (Available) Līdzekļi, kas atbilst izlaišanas, rezervju, atmaksas un strīdu noteikumiem
Noturēts / rezervēts (Held / reserved) Summas, kas ieturētas par maksājumu atgriešanu, atgriešanu vai krāpšanas kontroli
Izmaksāts (Paid out) Tirgotājam pārskaitītās summas
Negatīvs / atgūstams (Negative / recoverable) Summas, kuras tirgotājs ir parādā pēc tam, kad atmaksas vai maksas pārsniedz pieejamos līdzekļus

Līdzekļu pārvietošanai no stāvokļa "gaida" uz "pieejams" pašai par sebej būtu jābūt sabalansētam žurnāla darījumam, nevis pārdēvētam laukam.

Anulēšana, atmaksas un negatīvas bilances

Tirdzniecības vietas naudas plūsmas notiek abos virzienos, bieži vien nepareizā secībā. Sarežģītie gadījumi ir atmaksas pēc izmaksas un maksājumu atgriešana, kas pienāk nedēļas vēlāk. Nopietna virsgrāmata nosaka, kas notiek, ja tirgotāja pieejamā bilance nevar segt atmaksu: izveidot negatīvu bilanci, pārvietot summu uz tirgotāja debitoru parādiem, izmantot rezerves vai ierobežot turpmākas izmaksas.

Katram no šiem notikumiem ir jāatsaucas uz sākotnējo darījumu un tas jāsaglabā. Virsgrāmata reģistrē atmaksas grāmatvediskās sekas. Tā nenosaka tirdzniecības vietas atmaksas politiku vai juridisko atbildību. Šīs robežas skaidra uzturēšana novērš daudzas mulsinošas dizaina diskusijas.

Valūtas un precizitāte

Starptautiskajām tirdzniecības vietām ir nepieciešama nepārprotama naudas līdzekļu apstrāde. Summat jāizmanto ISO 4217 valūtu kodi un precīzs attēlojums, izmantojot vai nu mazākās veselas naudas vienības (minor units), vai fiksētas precizitātes decimāldaļas, nekad neizmantojot peldošā punkta skaitļus (floats). Bez klusas noapaļošanas. Konvertēšanas gadījumā virsgrāmatai jāsaglabā oriģinālā summa, valūtas maiņas kurss, kursa avots, laika zīmogs un iegūtā summa, noapaļošanas starpības iegrāmatojot noteiktā kontā.

Viens sabalansēts darījums nedrīkst sajaukt valūtas bez skaidra valūtas maiņas mehānisma. Ja tas tā notiek, jūsu atskaites nesakritīs ar realitāti tādā veidā, ko mēneša beigās ir sāpīgi izsekot.

Saskaņošana ar ārējām sistēmām

Iekšēji sabalansēta virsgrāmata pati par to nav autoritatīva. Tai ir jāsakrīt ar ārpasauli: maksājumu pakalpojumu sniedzēja darījumiem, pakalpojumu sniedzēja maksām, norēķinu atskaitēm, bankas izrakstiem, izmaksu failiem un strīdu atskaitēm.

Briedumu sasnieguša API atbalsta importētus ārējos notikumus un atbilstības stāvokļus, piemēram, saskaņots, daļēji saskaņots, nesaskaņots, dublēts, summu neatbilstība un nepieciešama pārbaude. Saskaņošanas atšķirībām ir jārada skaidri izņēmuma ieraksti vai grāmatvedības ieraksti. Tās nekad nedrīkst klusi pārrakstīt virsgrāmatas vēsturi. Nordlet pieeja bankas izrakstu un maksājumu saskaņošanai balstās uz šo principu: importētie izraksti un Stripe eksportētie dati izlaiž visu, kas jau ir importēts, maksājumu ieteikumi tiek vērtēti pēc summas, atsauces, darījuma partnera un IBAN, saskaņošana ar vienu klikšķi risina ierastos gadījumus, un izņēmumi tiek izcelti virspusē, nevis absorbēti.

ES robežas, kas API ir jāievēro, un tās, kuras tā nevar

Šeit mārketinga apgalvojumi parasti apsteidz realitāti. Virsgrāmata palīdz pildīt ES saistības, taču tā pati par to tās neizpilda.

PVN. Virsgrāmatai jāsaglabā ar nodokli saistītās dimensijas: jurisdikcija, likme, nodokļu kategorija un tas, kā likme tika noteikta. Tai jānošķir tirgotāja pārdošana pircējam no tirdzniecības vietas komisijas maksas, kā arī jāatdala pakalpojumu maksas PVN no summām, kas vienkārši iet cauri sistēmai. Nordlet apstrādā katras valsts PVN aprēķinus, VIES validāciju un i.SAF reģistru ģenerēšanu, kā arī OSS un IOSS scenārijus, ar kuriem saskaras ES tirdzniecības vietas. Uztveriet virsgrāmatu kā pierādījumu un nodokļu dzinēju, nevis kā nodokļu konsultāciju.

DAC7. Platformas atskaišu sniegšanas noteikumi pieprasa drošas saites starp tirgotāja identitāti, jurisdikciju, darījumu kopsummām, maksām, atmaksām un izmaksām. Sabalansēta virsgrāmata rada darījuma pierādījumus. T tā nenosaka, vai tirgotājs ir pakļauts ziņošanai, un neaizstāj KYC, onboarding vai ziņošanas darbplūsmu. Nošķiriet darījumu grāmatvedību un normatīvo atskaišu sniegšanu kā dažādas lietas.

PSD2 un līdzekļu glabāšana. Naudas kustības reģistrēšana nav tas pats, kas būt par licencētu maksājumu pakalpojumu vai aizsargāt līdzekļus. Virsgrāmatai ir jāpadara naudas plūsma un puses nepārprotamas. Tā pati par sevi nevar nodrošināt maksājumu pakalpojumu atļauju vai pierādīt, ka skaidrā nauda tiek glabāta noteiktā kontā. Tas joprojām ir jūsu regulatīvās lomas un PSP jautājums.

GDPR. Nemaināmība rada reālu spriedzi ar datu aizsardzības principiem. Drošākā arhitektūra saglabā monetāros faktus nemainīgajā kodolā un personas datus ārpus tā. Žurnāla rindās izmantojiet stabilas pseidonimizētas tirgotāja un klienta atsauces. Glabājiet mainīgo personas informāciju atsevišķā, piekļuves kontrolētā sistēmā ar savu saglabāšanas un dzēšanas darbplūsmu. "Nemainīgs" nenozīmē atļauju mūžīgi glabāt katru maksājuma datu kopu (payload).

Kontrolsaraksts virsgrāmatas API novērtēšanai

Funkciju etiķetes ir lētas. Tā vietā pārbaudiet darbību smilšu kastē (sandbox). Izpildiet šos scenārijus un pārbaudiet pierādījumus:

  • Iegrāmatojiet 100 EUR pasūtījumu, kas sadalīts starp tirgotāju un tirdzniecības vietu, un apstipriniet sabalansētu žurnālu ar skaidriem kontiem.
  • Nosūtiet to pašu pieprasījumu divreiz un apstipriniet vienu darījumu, bez dublikātiem.
  • Mēģiniet rediģēt iegrāmatotu ierakstu un apstipriniet, ka tas tiek noraidīts vai ierobežots līdz ar finansēm nesaistītiem metadatiem.
  • Izlabojiet nepareizu komisiju un apstipriniet saistītu anulēšanu un labotu ierakstu.
  • Izsniedziet daļēju atmaksu pēc izmaksas un apstipriniet izsekojamu atmaksu ar tirgotāja debitoru parādu vai negatīvu bilanci, ja nepieciešams.
  • Atskaņojiet pakalpojumu sniedzēja tīmekļa āķi un apstipriniet dublikātu noteikšanu.
  • Apstrādājiet vairāku valūtu norēķinu un apstipriniet valūtas maiņas informāciju un konvertēšanas grāmatvedību.
  • Vaicājiet tirgotāja bilanci perioda beigās un apstipriniet reproducējamu rezultātu ar dokumentētu norēķinu datumu (cut-off).
  • Importējiet pakalpojumu sniedzēja norēķinu un apstipriniet saskaņošanu ar izņēmuma statusu, kas atstāj vēsturi neskartu.
  • Eksportējiet mēneša aktivitāti un apstipriniet pilnīgu, lappusēs sadalītu (paginētu), atkārtojamu izrakstu.

Visstiprākie pierādījumi ir dokumentācija kopā ar reproducējamu testu. Tādi vārdi kā "reāllaika", "gatavs auditam" un "nemainīgs" neko nenozīmē bez datu modeļa, kļūdu semantikas un saglabāšanas uzvedības, kas slēpjas aiz tiem.

Ko mēs pārbaudītu vispirms

Ja mēs rīt tirdzniecības vietai vērtētu virsgrāmatas API, mēs sāktu ar divām lietām, pirms skatīties uz kaut ko citu. Pirmkārt, pierādiet, ka tirgotāja bilance ir atvasināta no žurnāla rindām, nevis mainīga lauka, jo viss turpmākais ir atkarīgs no tā. Otrkārt, atskaņojiet to pašu tīmekļa āķi un apstipriniet precīzi vienu grāmatvedības rezultātu. Šie divi testi pasaka vairāk par pamatā esošā dizaina kvalitāti nekā jebkurš funkciju saraksts.

Pēc tam API pirmās kārtas apsvērumi ir svarīgi tam, cik ātri jūsu komanda piegādā risinājumu: tipizēti SDK, tīmekļa āķi tādiem notikumiem kā sale_invoice.paid, strādājoša smilšu kaste un periodu bloķēšana, lai aizsargātu slēgtos mēnešus. Nordlet tika izveidots ap šo modeli, piedāvājot caur API tādu pašu funkciju kopumu kā lietotnē, kas ļauj platformai vadīt auditam gatavus grāmatvedības datus savā produktā, nevis piesliet trešās puses norēķinus. Plašāku priekšstatu par to, kā šāda virsgrāmata iekļaujas tirdzniecības vietas sistēmā, skatiet mūsu ceļvedī par dubultierakstu virsgrāmatas API tirdzniecības vietu grāmatvedībai.

FAQ

Vai dubultieraksts garantē, ka mana grāmatvedība ir pareiza?

Nē. Virsgrāmata var būt pilnībā sabalansēta, vienlaikus grāmatojot nepareizos kontos, piemērojot nepareizu PVN apstrādi vai piedēvējot līdzekļus nepareizam tirgotājam. Bilance ir strukturāla kontrole, kas uztver aritmētiskās kļūdas un trūkstošās darījuma puses. Tā neko nepasaka par to, vai jūsu biznesa loģika notikumu kartēja pareizi. Tāpēc smilšu kastes testēšana reālos scenārijos ir svarīgāka nekā tikai bilances pārbaude vien.

Vai maksājumu pakalpojumu sniedzēja virsgrāmata ir pietiekama tirdzniecības vietai?

Parasti nē. PSP izseko līdzekļus savā sistēmā, kas ir noderīgi kustībai un izmaksai. Jūsu tirdzniecības vietai joprojām ir nepieciešami savi ieraksti komisijas ieņēmumiem, tirgotāja saistībām, maksas PVN, atmaksām, rezervēm, strīdiem un vadības atskaitēm. Abas sistēmas ir jāsaskaņo, un pakalpojumu sniedzēja skatījuma uztveršana par jūsu grāmatvedību rada nepilnības, kas parādās audita laikā.

Vai man ir nepieciešama blokķēde, lai virsgrāmata būtu nemainīga?

Nē. Tikai pievienošanas (append-only) relāciju datu krātuve ar stingrām rakstīšanas atļaujām, kontrolētām labošanas darbplūsmām, audita žurnālu un uzticamiem dublējumiem nodrošina operacionālo un audita nemaināmību. Blokķēde pievieno decentralizētu viltošanas pierādījumu, bet rada privātuma, veiktspējas un labošanas grūtības, kas ir pretrunā ar ES grāmatvedības un GDPR prasībām. Vairākumam tirdzniecības vietu tā atrisina problēmu, kuras tām nav.

Vai nemainīga virsgrāmata var glabāt datus mūžīgi saskaņā ar GDPR?

Grāmatvedības ierakstu glabāšana normatīvajos aktos noteiktajā periodā ir pieņemama. Pilnu personas datu vai maksājumu datu kopu saglabāšana bezgalīgi ilgi tikai tāpēc, ka virsgrāmata ir nemainīga, nav pieņemama. Saglabājiet monetāros faktus un pseidonimizētās atsauces nemainīgajā kodolā, bet personas datus turiet atsevišķā sistēmā ar atbilstošu glabāšanas un dzēšanas kārtību. Nemaināmība attiecas uz finanšu notikumu, nevis uz katru tam piesaistīto datu vienību.