Mikä on markkinapaikkojen kahdenkertaisen kirjanpidon pääkirja-API?
Kahdenkertaisen kirjanpidon pääkirja-API kirjaa markkinapaikan rahaliikenteen tasapainoisina, muuttumattomina tositteina, jotta tiedät aina, kenelle ollaan velkaa ja mitä.
Markkinapaikka saattaa näyttää orders-taulukkonsa perusteella terveeltä, vaikka sen rahoissa olisi silti virheitä. Tilaus osoittaa tilan "maksettu". Myyjän näkymässä näkyy saldo. Mikään kyseisessä taulukossa ei kuitenkaan todista sitä, kuinka paljon käteistä alustalla on hallussaan, kuinka paljon se on velkaa kullekin myyjälle, kuinka suuri osa maksusta on komissiotuloa tai kuinka paljon arvonlisäveroa on nyt tilitettävä. Kahdenkertaisen kirjanpidon pääkirja-API (double-entry ledger API) on olemassa siksi, että nämä taloudelliset vaikutukset kirjataan oikein, yksi tasapainoinen tapahtuma kerrallaan.
Selkokielellä sanottuna pääkirja-API on ohjelmoitava kirjanpitojärjestelmä. Sovelluksesi lähettää sille taloudellisen tapahtuman, kuten veloitetun maksun tai hyväksytyn tilityksen, ja pääkirja kirjaa tapahtuman kirjauskirjaksi, joka sisältää yhtä suuret debet- ja kredit-kirjaukset nimetyille tileille. Se ei siirrä rahaa. Se kirjaa totuuden rahasta, joka on siirtynyt muualla.
Mitä "kahdenkertaisen kirjanpidon pääkirja" tarkoittaa tässä yhteydessä
Pääkirja on kirjaus tilien muutoksista, ei taulukko, joka pitää sisällään vain viimeisimmän saldon. Toimivassa pääkirjassa on kolme toisiinsa liittyvää käsitettä:
- Tili (Account): nimetty taloudellinen asema, kuten maksupalveluntarjoajan saamiset, myyjille maksettavat velat, komissiotulot tai maksettava arvonlisävero.
- Tapahtuma / kirjauskirja (Transaction / journal): yksi atominen taloudellinen tapahtuma, joka sisältää useita tasapainotettuja rivejä.
- Kirjaus / vienti (Entry / posting): yksittäinen debet- tai kredit-rivi kyseisen tapahtuman sisällä.
Invariantti, joka pitää koko arkkitehtuurin kasassa, on yksinkertainen: debet- ja kredit-puarten loppusummat ovat tasan yhtä suuret jokaisessa tapahtumassa ja jokaisessa valuutassa. Pääkirja-APIt hylkäävät tyypillisesti epätasapainoisen kirjauksen ennen kuin se tallennetaan. Modern Treasury määrittelee dokumentaatiossaan pääkirjatapahtuman sellaiseksi, että se käsittää vähintään kaksi tiliä, joilla on vähintään yksi yhtä suuri debet- ja kredit-kirjaus, ja se käsittelee kirjattua tapahtumaa muuttumattomana (immutable).
Kahdenkertaisuus ei tarkoita tasan kahta riviä. Yksi markkinapaikkamyynti vaatii usein yhden debet-kirjauksen ja useita kredit-kirjauksia. Tätä ihmiset tulkitsevat useimmiten väärin.
Miksi markkinapaikat tarvitsevat pääkirjan pelkän maksutaulukon sijaan
Markkinapaikalla on käynnissä useita taloudellisia suhteita samanaikaisesti. Ostaja maksaa. Maksupalveluntarjoaja tekee tilityksen. Alusta saattaa hallita varoja väliaikaisesti. Myyjä ansaitsee osuuden. Alusta pitää komission. Verosta tulee maksettava. Osa varoista saatetaan pidättää varauksena. Myöhemmin tilitys siirtää rahaa ulos, ja palautukset tai takaisinperinnät kumoavat osan tästä.
payments-taulukko voi kertoa tilauksen kaupallisesta tilasta. Se ei voi luotettavasti kertoa sinulle:
- kuinka paljon maksupalveluntarjoajan saamisia tai käteistä on olemassa
- kuinka paljon kullekin myyjälle ollaan velkaa
- kuinka suuri osa tuloista kuuluu alustalle
- kuinka paljon arvonlisäveroa on maksettava ja missä maassa
- mikä osuus on varattu palautuksia tai riitoja varten
- vähensikö tilitys oikeaa myyjävelkaa
- vastaavatko maksupalveluntarjoajan tilitykset sitä, mitä alusta odotti
Nordletin opas markkinapaikkakirjanpidon kahdenkertaisen kirjanpidon pääkirja-API-rajapinnoista vetää rajan selvästi: sovellustaulukot kuvaavat tuotteen tilaa, kun taas pääkirja kirjaa kyseisen tilan taloudelliset seuraukset. Oppaassa tuodaan esiin myös toistamisen arvoinen seikka, että maksupalveluntarjoajien raportit ovat syötteitä täsmäytystä varten, eivät täydellisiä kahdenkertaisen kirjanpidon kirjoja.
Esimerkki toteutetusta markkinapaikkamyynnistä
Oletetaan, että ostaja maksaa 100 €, myyjä on oikeutettu 85 euroon ja alustan komissio on 15 €. Jätetään selkeyden vuoksi arvonlisävero ja maksupalveluntarjoajan kulut huomioimatta.
| Tili | Debet | Kredit | Peruste |
|---|---|---|---|
| Maksupalveluntarjoajan saamiset | 100 € | Maksupalveluntarjoaja on velkaa alustalle veloitetun maksun | |
| Myyjille maksettavat velat | 85 € | Alusta on velkaa myyjälle | |
| Komissiotulot | 15 € | Alusta ansaitsi komissionsa | |
| Yhteensä | 100 € | 100 € | Tasapainossa |
Tärkeä luokittelu tässä on se, että myyjälle maksettava 85 € on velka eikä alustan tulo. IFRS-käsitteellisen viitekevelyn mukaan velka on nykyinen velvoite siirtää taloudellinen resurssi. Markkinapaikan ei tulisi kirjata myyjän koko myyntituottoa omaksi tulokseen pelkästään siksi, että ostaja maksoi sen kautta. Toimitko sitten asiamiehenä, päämiehenä tai arvonlisäverovelvollisena välittäjänä (deemed supplier), se muuttaa käsittelytapaa, mutta pääkirjan mekanismi pysyy samana.
Kun myyjä on oikeutettu tilitykseen, uutta tuloa ei kirjata. Velka kuitataan:
| Tili | Debet | Kredit |
|---|---|---|
| Myyjille maksettavat velat | 85 € | |
| Pankki- tai tilitystili | 85 € | |
| Yhteensä | 85 € | 85 € |
Jos maksupalveluntarjoaja ottaa 3 € kulun ennen tilitystä, rahavirrasta tulee kolmerivinen kirjauskirja: 97 € pankkikassaan, 3 € käsittelykuluihin ja 100 € pois maksupalveluntarjoajan saamisista. Jokaisella aseman muutoksella on lähde ja kohde.
Miten API toimii vaihe vaiheelta
1. Sovelluksesi havaitsee liiketoimintatapahtuman. Maksu veloitetaan, tilaus toteutetaan, tilitys hyväksytään, hyvitys myönnetään, takaisinperintä avataan tai tilitys saapuu. Tietokantasi hallitsee edelleen toiminnallista tilaa. Pääkirja kirjaa rahallisen vaikutuksen.
2. Lähetät rakenteellisen pyynnön. Se sisältää yleensä tapahtumatyypin, summan ja valuutan, tilaus- tai maksu-ID:n, ostajan ja myyjän tunnisteet, komission, verotiedot, kyseiset tilit, toteutumis- ja kirjauspäivät, idempotenssiavaimen (idempotency key) sekä metatiedot, jotka viittaavat takaisin maksupalveluntarjoajan ja tuotteen tietoihin. Nordletin julkinen API-esimerkki näyttää käsitteellisen myyntipyynnön, joka sisältää myyjä-ID:n, myyntityypin, summan, valuutan sekä arvonlisäveromaan ja -kannan.
3. API validoi tiedot. Se tarkistaa, että debet ja kredit ovat tasapainossa, tilit ovat olemassa ja niille voi kirjata, valuuttaa tuetaan, summa käyttää tarkkoja pienimpien rahayksiköiden käsittelyä, idempotenssiavainta ei käytetä uudelleen eri tulokselle, tilikausi on avoinna ja vaadittavat metatiedot ovat olemassa. Epäonnistunut tarkistus ei jätä jälkeensä osittaista kirjauskirjaa.
4. Se kirjaa atomisesti. Koko tapahtuma tallennetaan yhtenä kokonaisuutena. Debet-kirjausta ei saa koskaan pystyä kirjaamaan niin, että vastaava kredit epäonnistuu. Markkinapaikalla osittainen jako voisi luoda näennäisen myyjän saldon ilman vastaavaa käteistä tai kirjata komission ilman myyjän velvoitetta.
5. Saldot ja raportit johdetaan pääkirjasta. Kirjauksen jälkeen voit lukea tilisaldot, myyjän odottavat ja käytettävissä olevat saldot, saldolaskelman (trial balance), pääkirjan tapahtumahistorian, arvonlisäveroyhteenvedot ja historian tiettynä menneen ajan päivämääränä. Myyjän saldon tulisi olla uudelleen muodostettavissa kirjauksista, eikä siihen tule luottaa muokattavan kentän kautta.
6. Webhookit ilmoittavat tuotteellesi. Tapahtumat, kuten sale_invoice.paid, kirjattu kirjauskirja, saatavilla oleva tilitys tai täsmäytyspoikkeus, välitetään sinulle. Käsittele ne idempotenteisti. Webhook on ilmoitus, ei lupa soveltaa taloudellista tapahtumaa toistamiseen. API-käytännöt kattavat laajuudet (scopes), idempotenssiavaimet, virhemuodot ja webhookien allekirjoittamisen yksityiskohtaisesti.
Myyjien saldot eivät ole yksi ainoa luku
Useimmat markkinapaikat joutuvat vaikeuksiin käsittelemällä myyjän saldoa yhtenä lukuna. Rahan tulisi olla eri tiloissa:
| Tila | Merkitys |
|---|---|
| Odottava (Pending) | Myyjä saattaa olla oikeutettu varoihin, mutta vapautusehdot eivät täyty |
| Käytettävissä (Available) | Oikeuttaa tilitykseen |
| Varattu (Reserved) | Pidätetty palautuksia, palautusoikeuksia tai riitoja varten |
| Maksettu (Paid out) | Velvoite tasattu siirrolla |
| Negatiivinen (Negative) | Palautukset, takaisinperinnät tai kulut ylittävät käytettävissä olevat varat |
Maksupalveluntarjoajien mallit heijastavat tätä. Stripen erilliset veloitus- ja siirtovirrat antavat alustalle mahdollisuuden veloittaa omaa tiliään ja siirtää sitten osia yhdistetyille tileille, jolloin kulut, palautukset ja takaisinperinnät päätyvät alustan saldoon. Adyenin markkinapaikkamalli erottaa käyttäjien saldotilit, joilla varoja pidetään tilitykseen asti, vastuusalstosta, joka voi imeä negatiivisia saldoja palautuksista tai takaisinperinnöistä. Nämä ovat hyödyllisiä syötteitä pääkirjallesi. Ne eivät ole täydellinen kirjanpitomallisi.
Tilitykset ja myyjän ansiot tapahtuvat eri aikoina
Myyjä voi ansaita rahaa maanantaina ja saada maksun seuraavana maanantaina. Näiden pisteiden välissä tilaus toteutetaan, varaus pidetään, tilityserä kootaan, maksupalveluntarjoaja selvittää sen vähennettynä kuluilla ja pankkitalletus saapuu. Pääkirjan on säilytettävä jokainen vaihe sen sijaan, että se korvaisi tilauksen lopullisella "maksettu"-merkinnällä. Tämä mahdollistaa sen, että pystyt selittämään ajoituserot tilaustoiminnan, myyjän oikeutusten, tilityksen, tilityksen aloittamisen ja pankkisuorituksen välillä.
Palautukset ja takaisinperinnät: peruuta, älä kirjoita uudelleen
Palautukset ja takaisinperinnät ovat uusia tapahtumia, jotka on sidottu alkuperäiseen maksuun. Muuttumattomassa pääkirjassa korjaus tehdään oikaisukirjauksella, jota seuraa korjattu kirjaus, jotta alkuperäinen pysyy näkyvissä tilintarkastusta varten. Modern Treasury käsittelee kirjatut tapahtumat muuttumattomina ja tukee idempotenssiavaimia kaksoiskappaleiden estämiseksi uudelleenyrityksissä.
Palautus tyypillisesti vähentää käteistä tai ostajan saamisia, kumoaa myyjälle maksettavan velan, saattaa kumota osan komisiosta käytännöstä riippuen, mukauttaa veroa ja voi kuluttaa palautusvarausta. Takaisinperintä vähentää käteistä tai maksupalveluntarjoajan saamisia, saattaa avata uudelleen myyjän tai alustan maksettavaksi tulevan summan, kirjaa riitakulun ja maksupalveluntarjoajan maksun sekä siirtää varoja varastilin kautta.
Täsmäytys: todellisen rahan yhdistttäminen pääkirjaan
Pääkirja voi olla sisäisesti tasapainossa, mutta silti väärässä ulkomaailman suhteen. Täsmäytyksessä verrataan sisäisiä kirjauksia ulkoiseen todistusaineistoon: maksupalveluntarjoajan tilitysraportteihin, tiliotteisiin, tilitystiedostoihin sekä palautus- ja riitakirjauksiin.
Toimiva silmukka näyttää tältä:
- Tuo tilitys- tai pankkierä.
- Kohdista jokainen rivi tilaukseen, maksuun, palautukseen, kuluun, tilitykseen tai riitaan.
- Vertaa odotettua bruttosummaa, vähennyksiä, varauksia ja nettosummaa.
- Kirjaa vahvistetut siirrot pääkirjaan.
- Lähetä täsmäämättömät erät nimetyt väliaikaistilille (suspense account).
- Tutki poikkeukset.
- Lukitse tilikausi.
Nordletin täsmäytysmateriaali kuvaa juuri tätä: tilityserien tuontia, veloitus- ja hyvitysrivien täsmäyttämistä ja täsmäämättömien saapuvien suoritusten ohjaamista väliaikaistilille sen sijaan, että laskua arvuuteltaisiin. Kaksi tarkistusta ovat tärkeitä, eikä kumpikaan korvaa toista: kahdenkertaisen kirjanpidon tarkistus kysyy, tasapainottaako jokainen kirjauskirja, ja täsmäytys kysyy, onko se yhtä mieltä maksupalveluntarjoajan, pankin ja liiketoimintatapahtuman kanssa.
Arkkitehtuurin yksityiskohdat, jotka ratkaisevat onnistumisesi
Idempotenssi. Sido avain vakaaseen tapahtumaan, kuten payment_captured:pi_123. Uudelleenyritys palauttaa alkuperäisen tuloksen, ei uutta kirjauskirjaa.
Atomismi. Yhden tapahtuman kaikki rivit kirjataan yhdessä tai ei lainkaan.
Muuttumattomuus ja oikaisut. Kirjattua historiaa ei voi muokata tavallisten päivitysten kautta. Korjaukset luovat linkitettyjä kirjauksia, jotka säilyttävät alkuperäisen summan, päivämäärän, luokittelun, syyn ja tekijän.
Tarkka raha. Ei binäärisiä liukulukuja. Käytä kokonaislukuina esitettyjä pienimpiä rahayksiköitä tai tarkkoja desimaaleja, selkeää valuuttaa ja determinististä pyöristyssääntöä jakoja varten. Jaa 100 € myyjien ja kulujen kesken ilman sääntöä, niin harhateille joutunut sentti rikkoo saldosi.
Toteutumis- ja kirjauspäivät. Se, milloin ostaja maksoi, milloin myyjä ansaitsi, milloin pankki teki tilityksen ja milloin kirjaus tehtiin, ovat eri päiviä. Näiden sekoittaminen tekee kausiraportoinnista ja verotuksen ajoituksesta epäluotettavaa.
Monivaluutta. Debetin ja kreditin on oltava tasapainossa valuutan sisällä. Valuuttamuunnos vaatii erillisen kurssitapahtuman tileillä kululle, pyöristykselle ja mahdolliselle valuuttakurssivoitolle tai -tappiolle. currency-kentän hyväksyminen ei tee pääkirjasta valuuttamoottoria.
Mitä pääkirja-API ei tee puolestasi
Se ei päätä tilikarttaasi. Sinun on silti määritettävä, oletko päämies vai asiamies, milloin komissio ansaitaan, mikä osapuoli vastaa maksupalveluntarjoajan kuluista, miten palautukset vaikuttavat komissioon ja miten arvonlisävero lasketaan ja ilmoitetaan. Nordletin oma ohjeistus on kartoittaa rahavirrat ensin, laatia tilikartta, pyytää kirjanpitäjää tarkistamaan se ja sitten toteuttaa yksi täydellinen prosessi tilauksesta tilitykseen ja täsmäytykseen ennen skaalaamista.
Se ei ratkaise verokysymyksiä. Arvonlisävero riippuu ostajan ja myyjän sijainnista, tuotetyypistä, rekisteröintitilasta ja arvonlisäverovelvollisena välittäjänä toimimisen säännöistä; EU:n arvonlisäverooppaassa määritellään, mitä moottori johtaa ja mitä se merkitsee ihmisen tarkistettavaksi. Nordletin arvonlisäverokattavuus keskittyy EU:hun ja ETA-alueeseen, joten se ei ulotu Yhdysvaltain liikevaihtoveroon (sales tax) tai Latinalaisen Amerikan e-laskutukseen. Se ei myöskään ratkaise operatiivista epäselvyyttä siitä, onko palautusikkuna sulkeutunut, pitäisikö tilitys estää tai onko maksu petollinen. Nämä ovat sinun päätöksiäsi. Pääkirja kirjaa niiden taloudellisen tuloksen.
Mihin Nordlet sijoittuu
Nordlet on alustoille ja markkinapaikoille rakennettu kirjanpito-API, joka sisältää muuttumattoman kahdenkertaisen kirjanpidon pääkirjan, tilitykset, EU:n arvonlisäverokäsittelyn, REST-päätepisteet, tyypitetyt SDK:t ja webhoookit, joita käytetään yhden rajapinnan kautta. Sen erottuva valinta on upotettu kirjanpito omassa tuotteessasi kolmannen osapuolen kassajärjestelmän sijaan. Tätä kirjoitettaessa tuote on ennakkokäytössä suunnittelukumppaneille tarkoitetun hiekkalaatikon (sandbox) kanssa, joten pidä sitä vahvana esimerkkinä kyseisestä kategoriasta ja arvioi tuotantokykyä, käytettävyyttä ja lainkäyttöalueen kattavuutta omaa tapaustasi varten ennen sitoutumista.
Markkinapaikka- ja alustakehittäjille hyödyllinen ajattelumalli on maksun liikkeen ja taloudellisen totuuden välinen erottelu. Maksupalveluntarjoajasi liikuttaa rahaa. Kahdenkertaisen kirjanpidon pääkirja-API kirjaa sen, kenelle ollaan velkaa ja mitä, mitä ansaitsit, mitä veroja ja varauksia kannat ja täsmääkö ulkomaailma kirjojesi kanssa.
FAQ
Onko kahdenkertaisen kirjanpidon pääkirja-API sama asia kuin maksupalveluntarjoaja?
Ei. Maksupalveluntarjoaja valtuuttaa, veloittaa, tilittää ja toisinaan maksaa varoja. Pääkirja-API kirjaa näiden tapahtumien kirjanpidolliset seuraukset. Useimmat markkinapaikat käyttävät molempia: maksupalveluntarjoajaa, kuten Stripe tai Adyen, varojen siirtoon ja pääkirjaa kirjanpitoon.
Voinko vain käyttää maksupalveluntarjoajani hallintapaneeliä yleisenä pääkirjana?
Voit yrittää, mutta se tulee lopulta epäonnistumaan tilintarkastuksessa. Maksupalveluntarjoajan raportointi näyttää veloitukset, kulut, siirrot ja tilitykset, mutta se ei yleensä edusta kaikkia myyjävelvoitteitasi, verovelkojasi, muita kuin maksupalveluntarjoajan kuluja tai kirjanpidon oikaisuja. Käsittele sitä täsmäytyssyötteenä.
Tarkoittaako tasapainossa oleva pääkirja, että kirjanpitoni on oikein?
Vain sen, että kirjauksesi täyttävät debet-kredit-säännön. Täydellisesti tasapainossa oleva tapahtuma voidaan silti kirjata väärälle tilille, väärälle myyjälle tai väärällä verokäsittelyllä. Tasapaino on välttämätön, mutta ei riittävä ehto. Täsmäytys poimii loput.
Jos pääkirja on muuttumaton, miten korjaan virheet?
Teet oikaisukirjauksen ja sen jälkeen korjatun kirjauksen. Alkuperäinen pysyy näkyvissä, mikä on koko asian ydin. Muuttumattomuus suojaa tilintarkastusketjua, se ei vangitse virheitäsi.
Tekeekö kirjanpito-API minut automaattisesti sääntöjen mukaiseksi?
Ei. Se valvoo kirjanpitorakennetta ja tuottaa käyttökelpoisia tositteita. Lakisääteinen vaatimustenmukaisuus riippuu edelleen lainkäyttöalueestasi, sopimussuhteestasi, verokäsittelystäsi, maksumääräyksistäsi, KYC- ja AML-prosesseistasi sekä raportointivelvoitteistasi.