Nordlet

← Dokumentácia / Príručky

Bankové a platobné importy

Výpisy camt.053, CSV zo služby Stripe, párovanie vyúčtovaní od poskytovateľov platobných služieb (PSP) a vlastné JSON feedy.

Všetky importy sa ukladajú ako bankové transakcie na bankový účet (bank/accounts/create). Transakcie obsahujú identifikátor externalId, takže opätovný import toho istého súboru je bezpečný - riadky, ktorých kombinácia (bankAccountId, externalId) už existuje, sa preskočia a zaznamenajú v počítadle skipped. Importované transakcie začínajú v stave new a do hlavnej knihy sa zaúčtujú až po spárovaní (bank/transactions/match, pričom pre kandidátov slúži bank/transactions/suggest-matches).

Webová aplikácia sprístupňuje rovnaké importy v časti Banka → Importovať súbor (nahranie súboru, výber šablóny).

Nesprávne spárovanie možno zrušiť pomocou bank/transactions/unmatch (položka Zrušiť spárovanie v časti Banka → Transakcie). Zaúčtované položky sa nikdy neupravujú ani neodstraňujú: platba spárovaná s faktúrou alebo riadok, ktorý importná šablóna zaúčtovala na účet, dostane stornovaciu účtovnú operáciu so všetkými položkami na opačnej strane s dátumom date (predvolene: dnešný dátum, pričom nesmie predchádzať pôvodnému zaúčtovaniu). Uhradená suma a stav platby faktúry sa znížia o sumu daného bankového riadku. Riadok prepojený so vyúčtovaním poskytovateľa platieb sa iba odpojí, pretože zaúčtovanie vyúčtovania patrí do dávky. Riadok sa vráti do stavu new a je možné ho znova spárovať. Dátum stornovania musí spadať do otvoreného účtovného obdobia.

Importné šablóny

Importná šablóna definuje zdroj údajov, zoznam polí, ktoré zdroj poskytuje, a priradenie peňažných polí k účtom hlavnej knihy. Šablóny sa spravujú v časti Banka → Importné šablóny a prostredníctvom rozhrania bank/import-templates/create|update|delete|get|list.

POST /v1/bank/import-templates/create
{
  "name": "Stripe payments export",
  "type": "stripe",
  "fields": [
    { "name": "id" },
    { "name": "Created date (UTC)" },
    { "name": "Amount" },
    { "name": "Fee", "accountCode": "6800" },
    { "name": "Amount Refunded" }
  ],
  "metaFields": ["order_id"]
}
  • Parameter type nadobúda hodnotu stripe, iso20022, bank_connection alebo revolut.
  • Každé pole má názov name a voliteľný kód účtu accountCode. Účet možno priradiť iba peňažným poliam: v službe Stripe sú to Amount, Fee a Amount Refunded; v camt.053 je to Ntry/Amt; v bankovom feede transaction_amount.amount. Účet musí existovať v účtovnom rozvrhu (možno ho vytvoriť pomocou ledger/accounts/create).
  • Zoznam fields možno vynechať, pričom sa predvolene použije štandardný zoznam polí pre daný typ: názvy stĺpcov súboru Payments → Export zo služby Stripe (bez 19 stĺpcov Card …, ktoré formulár predvolene necháva nezačiarknuté), prvky camt.053, ktoré obsahuje každý výpis (Stmt/Id, Stmt/Acct/Id/IBAN, Stmt/Bal/…, Ntry/Amt, Ntry/CdtDbtInd, Ntry/Sts, Ntry/BookgDt), alebo atribúty, ktoré pre každú transakciu vracia PSD2 bankový feed. Záznamy môžete pridávať alebo odoberať tak, aby zodpovedali vášmu súboru: importér číta aj voliteľné prvky camt.053 Ntry/ValDt, Ntry/NtryRef, Ntry/AcctSvcrRef, Ntry/AddtlNtryInf, TxDtls/Refs/EndToEndId, TxDtls/Refs/TxId, TxDtls/RltdPties/Dbtr/Nm, TxDtls/RltdPties/DbtrAcct/Id/IBAN, TxDtls/RltdPties/Cdtr/Nm, TxDtls/RltdPties/CdtrAcct/Id/IBAN, TxDtls/RmtInf/Ustrd a TxDtls/AddtlTxInf.
  • Pole Customer Email v službe Stripe môže obsahovať hodnotu "createPartner": true. Import potom pre každý e-mail v súbore, ktorý nemá zodpovedajúceho existujúceho partnera, vytvorí zákazníka (partnera typu fyzická osoba s príznakom zákazníka), pričom ako názov použije položku Customer Description (alebo e-mail, ak je prázdna) a ako adresu stĺpce Card Address …, ak ich súbor obsahuje. Existujúci partneri sa vyhľadávajú podľa e-mailovej adresy bez ohľadu na veľkosť písmen. Odpoveď vráti počet v položke customersCreated.
  • Položka metaFields (iba pre Stripe) obsahuje zoznam kľúčov metadát, ktorými disponujú vaše platby. Stripe exportuje každý kľúč ako stĺpec <key> (metadata). Zoznam je voľný a môže byť dlhý.
  • Položka invoiceItemId (iba pre Stripe, voliteľná) predstavuje položku katalógu. Ak je nastavená, každá riadková položka faktúry a dobropisu vytvorená importom odkazuje na túto položku (jej zaúčtovanie a sadzbu DPH, ak je invoiceVatRatePercent prázdne). Text riadku sa naďalej preberá z platby.
  • Položka companyMetaField (iba pre Stripe) určuje jeden z týchto kľúčov ako príznak firemného zákazníka. Ak platba obsahuje v tomto stĺpci hodnotu true, 1, yes, company, business alebo b2b, pre takúto platbu sa vytvorí partner typu spoločnosť namiesto fyzickej osoby.
  • Položka invoiceMetaField (iba pre Stripe) určuje jeden z týchto kľúčov (napríklad číslo objednávky) a invoiceVatRatePercent definuje sadzbu DPH pre faktúry vytvorené na základe tohto poľa. Pri importe sa každý riadok platby a vrátenia platby zoskupí podľa hodnoty tohto kľúča:
    • hodnota, ktorá sa zhoduje s existujúcou vydanou faktúrou (objednávka predaja, ktorej externalRef sa rovná tejto hodnote (ecommerce/orders/create, pre ľubovoľný kanál) alebo faktúra, ktorej fullNumber sa rovná tejto hodnote), prepojí skupinu s danou faktúrou,
    • hodnota, ku ktorej neexistuje faktúra, vytvorí novú faktúru: partner sa určí z poľa Customer Email (ak chýba, vytvorí sa rovnako ako pri createPartner), vytvorí sa jeden riadok na platbu (hodnota Checkout Line Item Summary alebo Description ako text, suma platby ako cena s DPH pri sadzbe invoiceVatRatePercent), dátum vystavenia sa rovná dátumu prvej platby a režim DPH sa určí podľa spoločnosti a krajiny karty. Faktúra sa naraz vystaví aj zaúčtuje a zaznamená sa objednávka predaja s kanálom stripe a danou hodnotou ako externalRef, aby budúce importy vykonali prepojenie namiesto vytvárania,
    • každá platba v skupine sa následne spáruje s faktúrou ako úhrada (zaúčtuje sa príjem); každá refundácia vytvorí vydaný dobropis voči faktúre na vrátenú sumu a spáruje refundáciu s faktúrou. Výsledné počty sa vrátia v položkách invoicesCreated, invoicesLinked, creditNotesCreated a paymentsMatched. Skupiny, ktoré nebolo možné spracovať (chýbajúci e-mail zákazníka, zmiešané meny, prepojená faktúra v stave konceptu alebo už v plnej výške uhradená), sú uvedené v poli warnings a zostávajú ako bankové transakcie v stave new. V tej istej šablóne nemapujte pole Amount na účet hlavnej knihy: platba spárujúca sa s faktúrou sa nezaúčtuje dvakrát, ale nespárujúca sa platba by sa zaúčtovala.
  • Názvy šablón sú v rámci spoločnosti jedinečné.
  • Šablóny pre camt.053 a bankové pripojenie obsahujú rovnaké možnosti, ktoré sa čítajú priamo z výpisu namiesto stĺpcov služby Stripe:
    • Vytvorenie chýbajúcich partnerov: nastavenie createPartner na riadku s názvom dlžníka (TxDtls/RltdPties/Dbtr/Nm, vo feede debtor.name) vytvorí zákazníka pre každého neznámeho platiteľa prichádzajúcich peňazí. Na riadku s názvom veržiteľa (TxDtls/RltdPties/Cdtr/Nm, vo feede creditor.name) vytvorí dodávateľa pre každého neznámeho príjemcu odchádzajúcich peňazí. Partneri sa rozpoznávajú podľa čísla IBAN (uloženého v partner_bank_accounts) a následne podľa presného názvu. Nový partner je spoločnosťou, ak jeho názov obsahuje právnu formu (UAB, MB, SIA, GmbH, Ltd, …), v opačnom prípade ide o fyzickú osobu. Počet sa vráti v položke customersCreated (pri importe súboru) alebo partnersCreated (pri synchronizácii feedu).
    • Prepojenie faktúr podľa referencie: nastavenie invoiceMetaField na riadku správy pre príjemcu alebo referencie (TxDtls/RmtInf/Ustrd, TxDtls/RmtInf/Strd/CdtrRefInf/Ref, TxDtls/Refs/EndToEndId; vo feede remittance_information, reference_number) spáruje každý nový bankový riadok, ktorého referencia, správa alebo popis obsahuje číslo otvorenej vydanej faktúry (príjem peňazí) alebo zaevidovanej priatej faktúry (výdaj peňazí), a zaúčtuje úhradu. Ak je IBAN platiteľa uložený u partnera alebo sa názov platiteľa zhoduje s názvom či kódom partnera, faktúra musí patriť tomuto partnerovi. Platba od neznámeho platiteľa sa prepojí iba vtedy, ak sa rovná zostávajúcemu zostatku faktúry a číslo faktúry obsahuje predponu série, takže samotné číslo, napríklad suma, sa nikdy nepovažuje za referenciu. Platba prevyšujúca zostávajúci zostatok sa neprepojí nikdy. Riadky, ktoré neprejdú týmito kontrolami, zostávajú v stave new na manuálne párovanie a sú uvedené v zozname varovaní. S nastavením advanceInvoices: true vytvorí nespárujúca sa prichádzajúca platba od známeho partnera vydanú zálohovú faktúru (typ advance) na danú sumu pri sadzbe invoiceVatRatePercent alebo sadzbe položky invoiceItemId a spáruje platbu s touto faktúrou. Partner musí byť známy, preto začiarknite aj riadok dlžníka.
    • Účtovné pravidlá podľa kódu transakcie: okrem polí Ntry/Amt / transaction_amount.amount obsahuje zoznam polí riadky pravidiel Ntry/BkTxCd=CHRG, =INTR, =TAXE, Ntry/CdtDbtInd=DBIT, =CRDT (vo feede: bank_transaction_code=…, credit_debit_indicator=…). Riadok sa zaúčtuje na účet prvého pravidla, ktorému vyhovuje: najskôr sa posudzuje rodina kódu bankovej transakcie, potom smer a nakoniec pole so samotnou sumou. Riadky pravidiel sa nekontrolujú voči súboru.
    • Partner pre bankové poplatky: nastavenie createPartner na riadku pravidla …=CHRG vytvorí dodávateľa, ktorého názov sa prevezme z banky (z výpisu Stmt/Acct/Svcr/FinInstnId/Nm, z banky pripojenia alebo z názvu bankového účtu v hlavnej knihe), a zaúčtuje každý poplatok s týmto partnerom.
    • Šablóny bankového pripojenia sa vyberajú pre každý účet feedu pomocou bank/feeds/accounts/configure (v aplikácii Banka → Pripojenia), kde sa nastavuje aj plán synchronizácie syncSchedule (manual, daily, weekly, monthly). Rozhranie API automaticky synchronizuje účty podľa plánu, keď uplynie príslušné obdobie. Šablóny sa aplikujú pri každej synchronizácii bank/feeds/sync. Odpoveď zo synchronizácie následne vracia aj položky posted, partnersCreated, invoicesLinked, invoicesCreated, paymentsMatched a warnings.

Namiesto parametra format odovzdajte rozhraniu bank/statements/import parameter templateId: typ šablóny určí parser a súbor musí obsahovať všetky polia uvedené v šablóne. Ak v súbore chýba hociktoré z nich, požiadavka sa zamietne s chybovým kódom HTTP 422 a v chybovej správe sa uvedú chýbajúce názvy stĺpcov alebo prvkov. Polia metadát sa nevyžadujú. Šablóny bankového pripojenia opisujú živý PSD2 feed a nemožno ich použiť na import zo súboru.

Šablóna pre formát ISO 20022 dokáže spracovať aj súbory MT940: súbor, ktorý začína reťazcom {1: alebo :20: (alebo je odoslaný s parametrom "format": "mt940"), sa parsuje ako MT940 a na jeho riadky sa aplikujú pravidlá šablóny pre párovanie referencií a účtovanie. Kontrola prvkov sa pre formát MT940 preskakuje a pravidlá Ntry/BkTxCd=… sa na riadky MT940 nikdy neaplikujú, pretože formát MT940 neobsahuje kód bankovej transakcie ISO 20022. Namiesto nich použite pravidlá Ntry/CdtDbtInd=….

Bankový účet obsahuje iba jednu menu. Výpis v inej mene sa zamietne s chybovým kódom HTTP 422 (v súbore camt.053 s výpismi v rôznych menách pre rovnaký IBAN sa importuje iba výpis v mene účtu), rovnako ako riadok odoslaný na bank/transactions/import s menou, ktorá sa líši od meny účtu.

Každý pohyb vytvorený z poľa, ktoré má vyplnený kód účtu accountCode, sa v čase importu zaúčtuje ako jedna účtovná operácia: príjem peňazí mávhuje na ťarchu účtu hlavnej knihy bankového účtu a v prospech priradeného účtu; výdaj peňazí mávhuje na ťarchu priradeného účtu a v prospech účtu hlavnej knihy bankového účtu. Sumy sa prepočítajú na základnú menu kurzom platným v dňoch pohybu. Banková transakcia sa potom spáruje (matched) s touto účtovnou operáciou (matchedDocumentType = journal_transaction) a už sa neponúka na párovanie s faktúrami. Odpoveď vráti počet v položke posted. Pohyby z nepriradených polí zostávajú v stave new a párujú sa s faktúrami tak ako predtým. Napríklad, ak priradíte pole Fee k účtu nákladov na poplatky PSP a pole Amount necháte nepriradené, platby sa budú naďalej párovať s vydanými faktúrami.

POST /v1/bank/statements/import
{
  "bankAccountId": "…",
  "templateId": "…",
  "content": "id,Created date (UTC),Amount,…"
}

ISO 20022 camt.053 (XML otvoreného bankovníctva)

Litovské banky (Swedbank, SEB, Luminor, Šiaulių bankas, …) umožňujú sťahovať výpisy z účtu vo formáte ISO 20022 camt.053 XML prostredníctvom internetbankingu (zvyčajne v časti exportu alebo sťahovania výpisov pod formátom „ISO XML“ alebo „camt.053“). Rovnaký formát vracajú aj rozhrania PSD2 API na získavanie informácií o účte.

POST /v1/bank/statements/import
{
  "bankAccountId": "…",
  "format": "camt053",
  "content": "<?xml version=\"1.0\"…>…"
}
  • Súbor môže obsahovať viacero výpisov; IBAN každého výpisu sa musí zhodovať s IBAN-om bankového účtu (výpisy bez IBAN-u alebo účty bez IBAN-u sa akceptujú v pôvodnom stave).
  • Referencie položiek (AcctSvcrRef/NtryRef, pričom ako náhrada slúži hash obsahu) sa stanú hodnotou externalId.
  • Odpoveď obsahuje metadáta pre každý výpis: ID výpisu, obdobie, počiatočný a konečný zostatok, počet transakcií.
  • Názov protistrany, IBAN a účel platby sa na účely párovania extrahujú pre každú položku osobitne.

Platby v opačnom smere sa exportujú ako súbory pain.001 prostredníctvom koncového bodu bank/payments/export.

Revolut Business CSV

Stiahnite si výpis transakcií z účtu Revolut Business vo formáte CSV a importujte ho pomocou vstavanej šablóny Revolut Business (templateId: "builtin-revolut"). Túto šablónu má každá spoločnosť k dispozícii bez nutnosti jej vytvorenia: príkaz bank/import-templates/list-builtin ju zoznamuje, bank/import-templates/get ju vrací a príkazy bank/import-templates/update a bank/import-templates/delete ju odmietnu s chybou HTTP 400. V aplikácii je uvedená ako prvá v časti Banka → Importné šablóny. Po jej otvorení sa zobrazia jej nastavenia a uložením sa vytvorí vlastná firemná šablóna, ktorú môžete upravovať.

POST /v1/bank/statements/import
{
  "bankAccountId": "…",
  "templateId": "builtin-revolut",
  "content": "Date started (UTC),Date completed (UTC),ID,Type,State,…"
}
  • Importujú sa iba riadky, kde je stĺpec State v stave COMPLETED. Ostatné riadky (napríklad v stave PENDING) sa vynechajú a započítajú do položky warnings; importujú sa neskôr pri importe súboru, v ktorom sú už dokončené.
  • Každý riadok sa stáva bankovou transakciou s dátumom z pola Date completed (UTC), sumou z pola Total amount, menou z pola Payment currency, identifikátorom ID ako externalId a popisom z pola Description.
  • Protistranou pri výdaji peňazí sú stĺpce Beneficiary name a Beneficiary IBAN; pri platbe kartou bez príjemcu sa použije obchodník uvedený v poli Description. Protistranou pri príjme peňazí sú stĺpce Sender name a Sender account.
  • Riadky sú zoskupené podľa účtu a meny. Stĺpec International account number sa musí zhodovať s IBAN-om bankového účtu a importujú sa iba riadky v mene bankového účtu.
  • Pre každý riadok importér kontroluje, či zostatok predchádzajúceho riadku zväčšený o sumu Total amount zodpovedá stĺpcu Balance, pričom všetky riadky, kde to neplatí, uvedie v poli warnings.
  • Súbor musí obsahovať stĺpce Date completed (UTC), ID, Type, State, Description, Payment currency, Total amount, Reference, Sender name a Beneficiary name.

Pri každom importe vstavaná šablóna:

  • vytvorí zákazníka pre každého neznámeho odoslania peňazí a dodávateľa pre každého neznámeho príjemcu alebo kartového obchodníka pri výdaji peňazí, ako je opísané vyššie v časti Vytvorenie chýbajúcich partnerov,

  • spáruje každý riadok, ktorého pole Reference alebo Description obsahuje číslo otvorenej vydanej alebo prijatej faktúry, a zaúčtuje platbu s dodržaním kontrol opísaných vyššie v časti Prepojenie faktúr podľa referencie,

  • zaúčtuje riadky, ktoré sa nezhodujú so žiadnou faktúrou, na základe ich typu Type na účet určený účtovným pravidlom:

    Type Účtovné pravidlo Predvolený účet Rumunská osnova Zaúčtovanie
    FEE bank.fees 6800 627 na ťarchu účtu pravidla, v prospech účtu hlavnej knihy bankového účtu; partner: dodávateľ pomenovaný podľa bankového účtu
    CARD_PAYMENT bank.cardPayments 6209 628 na ťarchu účtu pravidla, v prospech účtu hlavnej knihy bankového účtu, bez DPH
    TOPUP bank.topUps 3010 1012 na ťarchu účtu hlavnej knihy bankového účtu, v prospech účtu pravidla

    Riadky iných typov, ako napríklad TRANSFER, zostávajú v stave new a čakajú na párovanie.

Účty môžete zmeniť pomocou príkazu ledger/posting-rules/update. Vstavaná šablóna začne nové účty používať pri nasledujúcom importe. Účtovné pravidlo nie je možné úplne vypnúť: ak chcete importovať platby kartou alebo dobitia účtu bez ich zaúčtovania, vytvorte si vlastnú firemnú šablónu typu revolut bez riadkov Type=CARD_PAYMENT alebo Type=TOPUP a použite ju na import. Platba kartou zaúčtovaná týmto spôsobom sa neskôr nespáruje s faktúrou dodávateľa, keď bude táto faktúra zaevidovaná. Zaúčtujte buď jednu, alebo druhú možnosť, nie obe naraz.

Firemná šablóna typu revolut využíva rovnaké stĺpce a dokáže účtovať riadky podľa typu prostredníctvom pravidiel Type=FEE, Type=CARD_PAYMENT, Type=TRANSFER a Type=TOPUP. Import s parametrom "format": "revolut-csv" bez zadania šablóny importuje riadky bez vykonania ktoréhokoľvek z týchto krokov.

Stripe CSV

Export z ovládacieho panela Stripe (podporované sú oba typy zostáv):

  • Reports → Balance → Itemized balance change from activity (odporúčané): stĺpce balance_transaction_id, created_utc, currency, gross, fee, net, reporting_category, description.
  • Payments → Export: stĺpce id, Created (UTC), Amount, Fee, Currency, Description, Customer Description.
POST /v1/bank/statements/import
{
  "bankAccountId": "…",
  "format": "stripe-csv",
  "content": "balance_transaction_id,created_utc,currency,gross,fee,net,…"
}

Pre Stripe vytvorte samostatný bankový účet (napr. s názvom „Stripe“, účet hlavnej knihy 2710 alebo vlastný analytický účet). Zostatok v službe Stripe funguje ako bankový účet: prichádzajú naň platby, odpočítavajú sa poplatky a výplaty (payouts) prevádzajú zostatok na váš reálny bankový účet.

Správanie pri importe:

  • Každá transakcia zostatku sa stáva jednou bankovou transakciou na hrubú sumu (externalId = ID transakcie zostatku).
  • Nenulový poplatok sa stáva druhou transakciou s opačným znamienkom (externalId = <id>:fee, protistrana „Stripe“), vďaka čomu možno poplatky párovať a účtovať ako náklady oddelene od výnosov. Poplatky vrátené pri refundáciách prichádzajú ako kladné sumy.
  • Riadky výplat (payout) sa importujú ako samostatné záporné transakcie; spárujte ich so zodpovedajúcou prichádzajúcou transakciou na výpise z vášho reálneho bankového účtu.
  • Riadky s nulovou sumou sa preskakujú; dátum sa preberá z poľa created_utc (v UTC).
  • Riadky exportu platieb, pri ktorých nedošlo k pohybu peňazí, sa preskakujú: Captured = false (autorizácie alebo odložené zachytenia) a stav Failed/Canceled.
  • Nenulová vrátená suma (Amount Refunded) sa stáva treťou, zápornou transakciou (externalId = <id>:refund) s dátumom Refunded date (UTC), takže čiastočné a plné refundácie zahrnuté v riadkoch platby sa nestratia.

Párovanie vyúčtovaní od poskytovateľov platobných služieb (PSP payout reporty zo služby Stripe)

Na rozdelenie súhrnnej výplaty na jednotlivé objednávky, refundácie, poplatky a reklamácie použite koncové body vyúčtovaní namiesto bežného importu výpisov. Podporované sú dva typy exportov zo služby Stripe (detegujú sa automaticky):

  • Reports → Payouts → Payout reconciliation, itemized (typy zostáv payout_reconciliation.itemized.* alebo payout_reconciliation.by_id.itemized.*) - presný export, jeden riadok na jednu transakciu zostatku; odporúčaný pre živé účty.
  • Payments → Export (unified payments) - export na úrovni platieb; funguje v testovacom/vývojovom režime, kde vyúčtovanie výplat nie je k dispozícii. Zachytené platby sú zoskupené podľa ID výplaty v stĺpci Transfer; nezachytené alebo zlyhané riadky sa preskakujú (skippedNotSettled); nenulová hodnota Amount Refunded sa stáva syntetickým riadkom refundácie v dávke výplat danej platby (ide o aproximáciu, pretože refundácia sa mohla reálne vyúčtovať v neskoršej výplate). Párovacie referencie sa získavajú z ID platby, PaymentIntent ID, čísla faktúry Invoice Number, klientskeho referenčného ID Client Reference ID a zo všetkých stĺpcov … (metadata) (napríklad číslo objednávky v metadátach).

Jeden súbor CSV môže pokrývať viacero výplat. Stripe sťahuje položkovú zostavu po častiach (jeden súbor na sekciu) (…_charge_…, …_refund_…, …_fee_…). Importujte ich všetky - riadky pre už importovanú výplatu sa zlúčia do existujúcej dávky (zaznamená sa v počítadle updated), pokiaľ táto dávka ešte nebola zaúčtovaná, a celkové sumy dávky sa prepočítajú.

POST /v1/bank/settlements/import
{
  "bankAccountId": "…",
  "provider": "stripe",
  "content": "balance_transaction_id,created_utc,…,reporting_category,…,automatic_payout_id,…"
}

Správanie pri importe:

  • Riadky sú zoskupené podľa poľa automatic_payout_id do dávok vyúčtovania (jedna dávka na jednu výplatu) s celkovými hrubými, poplatkovými a čistými súčtami (súčet stĺpca net = suma, ktorá dorazí na váš bankový účet). Opätovný import výplaty sa preskočí (počítadlo skipped). Riadky, ktoré zatiaľ nie sú priradené k výplate, a samotné riadky výplat (payout) sa preskakujú a počítajú samostatne.
  • Každý riadok platby, refundácie alebo reklamácie (dispute) sa automaticky spáruje s predajnou faktúrou pomocou nasledujúcich údajov (v danom poradí): externalRef e-commerce objednávky (ľubovoľná hodnota z order_id, payment_intent_id, source_id, charge_id alebo ľubovoľného stĺpca *_metadata[...]), fullNumber faktúry vyskytujúci sa v týchto stĺpcoch a – v prípade refundácií a reklamácií – charge_id predtým spárovanej platby (z rovnakého súboru alebo skorších importov).
  • Skontrolujte výsledok pomocou bank/settlements/list / bank/settlements/get; nevyriešené položky upravte pomocou príkazu bank/settlements/match { lineId, invoiceId } (prípadne invoiceId: null na zrušenie spárovania).

Príkaz POST /v1/bank/settlements/post { id, date?, commissionPercent? } zaúčtuje celú dávku ako jednu vyrovnanú účtovnú operáciu a vyrovná spárované faktúry (spúšťa webhooky paidAmount/paymentStatus, sale_invoice.paid):

  • Na ťarchu účtu hlavnej knihy bankového účtu za čistú výplatu; na ťarchu účtu poplatkov PSP (settlements.fees, predvolene 6800) za zrazené poplatky a riadky poplatkov.
  • V prospech pohľadácií pre každú spárovanú platbu; refundácie a reklamácie túto operáciu otočia. Uplatnenie je obmedzené na zostávajúcu sumu každej faktúry – akýkoľvek prebytok skončí na účte prechodných položiek (suspenznom účte) s varovaním.
  • Nespáruvené platby: ak je nastavený parameter commissionPercent, rozdelia sa na výnosy z provízií (settlements.commissionRevenue, predvolene 5001) a záväzok voči predajcovi (settlements.sellerPayable, predvolene 4499) – ide o model marketplace, kde vybrané peniaze vo väčšine patria predajcom. Bez tohto parametra sa umiestnia na účet prechodných položiek settlements.suspense (predvolene 4440, prijaté preddavky).
  • Riadky platform_earning (poplatky za aplikáciu Stripe Connect) sa účtujú do výnosov z provízií; riadky transfer (výplaty prepojeným predajcom) znižujú záväzok voči predajcovi.
  • Všetky štyri účty možno pre každú spoločnosť upraviť pomocou účtovných pravidiel (ledger/posting-rules).
  • Riadok, ktorého platba, poplatok alebo refundácia bola predtým importovaná na iný bankový účet z exportu platieb Stripe (bank/statements/import), sa nezaúčtuje do poplatkov, pohľadávok ani prechodných položiek. Jeho čistá suma net sa namiesto toho pripíše v prospech účtu hlavnej knihy daného bankového účtu, takže bankový účet Stripe sa vyrovnáva výplata po výplate. Položka summary.clearedAmount predstavuje celkovú sumu presunutú týmto spôsobom; riadok, ktorého suma sa líši od sumy vedenej na danom účte, je uvedený v poli warnings. Ak nezostane nič na zaúčtovanie, dávka sa zaúčtuje s hodnotou journalTransactionId nastavenou na null.

Príkazy bank/settlements/list a /get vracia pre každú dávku položky clearedNet, clearingDifference (riadky výplat mínus sumy, ktoré pre ne eviduje druhý bankový účet; hodnota je nulová, ak sa zhodujú) a clearingOpenCount (riadky s rozdielom alebo nezaúčtovaným pohybom). Príkaz /get vracia tie isté údaje na úrovni jednotlivých riadkov ako clearingBankAccountId, clearingBooked, clearingDifference a clearingUnposted. Riadky refundácií jednej platby sa porovnávajú spoločne, pretože export platieb obsahuje iba celkovú vrátenú sumu. Export platieb zo služby Stripe importovaný po zaúčtovaní príslušnej výplaty preskočí pohyby tejto výplaty a uvedie ju v poli warnings.

DPH zo samotnej provízie sa fakturuje samostatne (vystavte predajcovi faktúru za províziu); rozdelenie prerozdeľuje iba inkasovanú hotovosť.

Výplaty v inej mene

Účtovný zápis sa vždy vytvára v základnej mene spoločnosti, avšak výplata v inej mene sa zaúčtuje automaticky bez potreby manuálneho zasiahu:

  • Dávka sa prepočíta kurzom platným pre dátum zaúčtovania (date, pričom ak nie je zadaný, použije sa dátum výplaty, prípadne dnešný dátum). Použije sa vlastný kurz spoločnosti pre danú menu (reference/exchange-rates/set), ak je aspoň taký aktuálny ako oficiálny kurz, v opačnom prípade sa použije najnovší oficiálny kurz platný v deň alebo pred dňom výplaty. Ak pre daný dátum alebo pred ním neexistuje žiadny kurz, volanie zlyhá s chybou 422 a odkáže na reference/exchange-rates/sync.
  • Každý účet sa prepočíta kurzom danej dávky s výnimkou pohľadácií, ktoré sa vyrovnajú kurzom fxRate, pri ktorom bola každá jednotlivá faktúra vystavená. Rozdiel medzi týmito dvoma kurzami sa zaúčtuje na účet kurzových ziskov bank.fxGain (predvolene 5803) alebo kurzových strát bank.fxLoss (predvolene 6803) ako realizovaný kurzový rozdiel, aby bola účtovná operácia vyrovnaná.
  • Odpoveď summary vráti použitý kurz fxRate a výsledný kurzový rozdiel exchangeDifference a dávka si zachová kurz, ktorým bola zaúčtovaná. Spáruaná faktúra, ktorejmena sa líši od meny dávky, sa nevyrovná: jej suma smeruje na prechodný účet s varovaním.
  • Zostáva jedno obmedzenie importu: jediná výplata, ktorej riadky kombinujú viacero mien, sa zamietne s chybovým kódom 422, rovnako ako opätovný import, ktorého mena sa líši od meny dávky už uloženej pre danú výplatu.

Manuálne / vlastné feedy

Akýkoľvek iný obsah možno odoslať vo forme bežného JSON formátu:

POST /v1/bank/transactions/import
{
  "bankAccountId": "…",
  "transactions": [
    { "date": "2026-07-01", "amount": "-25.00", "currency": "EUR",
      "counterpartyName": "…", "description": "…", "externalId": "unique-ref-1" }
  ]
}

Pre každú transakciu uveďte stabilný identifikátor externalId, aby bol opakovaný import idempotentný.