# Što ćete izraditi#
Ovaj vodič pokazuje kako implementirati n8n Stripe usklađivanje iz Stripe isplata u Xero ili QuickBooks, uz kontrolirani proces za iznimke.
Izradit ćete workflow koji dohvaća podatke o Stripe isplatama, računa računovodstveno spremne iznose za prodaju, naknade, povrate i prilagodbe, knjiži dnevnik ili depozit u Xero ili QuickBooks te sve što ne odgovara očekivanim pravilima usmjerava u red iznimki.
Također ćete implementirati rasporede, idempotenciju, logiranje i kontrole, koristeći obrasce koji se skaliraju i kad imate više od nekoliko isplata mjesečno.
# Zašto je usklađivanje isplata važno u Stripeu#
Stripe nije vaša bankovna glavna knjiga. Banka vidi isplate (payouts), dok Stripeov operativni pogled uključuje naplate (charges), povrate (refunds), sporove (disputes) i naknade (fees) koji se mogu dogoditi različitim danima.
Ako usklađujete samo po naplatama, stalno ćete se boriti s vremenskim razlikama. Ako usklađujete po isplatama, poravnavate se s onim što stvarno sjedne na bankovni izvod, što zatvaranje mjeseca čini bržim i pouzdanijim.
Uobičajeni načini na koje stvarni timovi griješe:
- Knjiže bruto prodaju u računovodstveni sustav, ali ne knjiže Stripe naknade, pa ostaje neobjašnjiva razlika.
- Pogrešno obrađuju povrate, osobito kada se poravnaju u kasnijoj isplati.
- Viševalutne isplate u kojima se propuste FX naknade i konverzije.
- Ručni CSV exporti i VLOOKUP procesi koji se ne skaliraju preko 100 transakcija.
# Koncepti usklađivanja koje morate imati točne#
Isplate naspram naplata#
Naplata (charge) je aktivnost prihoda na razini kupca. Isplata (payout) je neto iznos koji Stripe šalje u vašu banku, tipično dnevno ili tjedno.
Jedna isplata obično uključuje mnogo naplata, plus:
- Stripe naknade za obradu
- Povrate i chargebackove
- Naknade za sporove
- Ručne prilagodbe
- Application fees ako imate platformu
U Stripeu je isplata sidro usklađivanja jer odgovara bankovnom pologu ili transferu.
Naknade, povrati i vremenske razlike#
Stripe naknade se oduzimaju prije nego sredstva dođu do vaše banke. Povrati se mogu oduzimati iz kasnijih isplata. To stvara vremenske razlike gdje:
- Prodaja se dogodi u isplati A
- Povrat se dogodi u isplati B
Ako knjižite stavke na razini naplate bez mapiranja na isplate, stvarate neuparene pologe i neuredne clearing konta.
Ispravan model za računovodstvene sustave#
Većina timova koristi jedan od ovih modela:
- 1Dnevnik na razini isplate knjižen na clearing konto, a zatim uparen s bankovnim pologom.
- 2Objekt bankovnog pologa (deposit) sa stavkama, ako ga vaš računovodstveni sustav čisto podržava.
U oba slučaja obično koristite Stripe Clearing konto:
- Dugovanja i potraživanja prolaze kroz clearing konto.
- Isplata knjiži neto kretanje na clearing konto.
- Bankovni polog se uparuje s iznosom isplate iz Stripea u bankovnom feedu.
🎯 Ključna poruka: Usklađujte na razini isplate kako biste uparili bankovne pologe, a detalje na razini naplate čuvajte za reviziju umjesto da svaku naplatu gurate u Xero ili QuickBooks.
# Nacrt podatkovnog modela#
Trebaju vam dva sloja: ono što daje Stripe i ono što očekuje vaš računovodstveni sustav.
Stripe objekti koje ćete koristiti#
Za usklađivanje isplata dva najvažnija Stripe objekta su:
payoutbalance_transaction
Svaka isplata sastoji se od mnogo balance transakcija, a svaka balance transakcija ima tip kao što su charge, refund, adjustment, stripe_fee, i potencijalno tipove vezane uz sporove ovisno o vašem računu.
Izlazni model za računovodstvo#
Većina workflowova za usklađivanje isplata može se svesti na ova polja:
- ID isplate, datum isplate, valuta, iznos isplate
- Zbrojevi po kategorijama za isplatu:
- Bruto prodaja
- Povrati
- Naknade
- Sporovi i naknade za sporove
- Ostale prilagodbe
- Rezultat knjiženja i identifikatori u Xero ili QuickBooks
- Status iznimke i razlog ako nije knjiženo
Preporučene tablice za kontrolu i reviziju#
Ako želite pouzdane operacije, spremite stanje. Čak je i mali Postgres dovoljan.
| Tablica | Ključni stupci | Svrha |
|---|---|---|
stripe_payout_runs | payout_id, run_id, status, started_at, finished_at | Jedan run po isplati po pokušaju, radi sljedivosti |
stripe_payout_lines | payout_id, type, amount, currency, source_id | Opcionalne detaljne stavke za reviziju |
recon_exceptions | entity_id, entity_type, reason_code, payload, status | Strukturirani red za ljudski pregled |
idempotency_keys | key, created_at | Sprječavanje duplikata u Xero ili QuickBooks |
Ako već imate pouzdane workflowove, implementirajte outbox i queue obrazac opisan ovdje: n8n Postgres queue and outbox pattern for reliable integrations.
# Pregled arhitekture workflowa#
Izradit ćete tri n8n workflowa:
- 1Dohvat isplata i izračun: na rasporedu, učitava isplate i računa zbrojeve.
- 2Knjiženje u računovodstvo: knjiži dnevnike ili depozite u Xero ili QuickBooks uz idempotenciju.
- 3Iznimke i backfill: usmjerava anomalije, podržava ponovna pokretanja i obrađuje transakcije koje stižu sa zakašnjenjem.
Ova podjela je namjerna. Sprječava API timeoute, čini retry sigurnijim i izolira vjerodajnice i pravila knjiženja.
ℹ️ Napomena: Ako očekujete više od nekoliko tisuća balance transakcija dnevno, morate graditi s podrškom za paginaciju, deduplikaciju i inkrementalni sync. Ovo je pokriveno u n8n data sync patterns: CDC, pagination, deduplication.
# Korak-po-korak nacrt n8n workflowa#
Korak 1: Definirajte mapiranje konta za Xero i QuickBooks#
Napravite konfiguracijski zapis u bazi ili kao n8n environment varijable. Držite mapiranja eksplicitnima i verzioniranima.
Minimalno mapiranje koje vam treba:
- Stripe clearing konto
- Konto prihoda od prodaje
- Konto troška Stripe naknada
- Konto povrata (contra-revenue)
- Konta za sporove i naknade za sporove, ako je primjenjivo
| Kategorija | Tipičan konto u Xero | Tipičan konto u QuickBooks | Napomene |
|---|---|---|---|
| Stripe clearing | Current asset | Other current asset | Koristi se za uparivanje pologa |
| Prodaja | Revenue | Income | Po želji razdvojiti po proizvodu |
| Povrati | Contra revenue | Contra income | Drži neto prodaju čistom |
| Stripe naknade | Expense | Expense | Odvojeno radi marže |
| Gubici od sporova | Expense | Expense | Opcionalno, ali preporučeno |
| Naknade za sporove | Expense | Expense | Često zasebna stavka |
⚠️ Upozorenje: Ne knjižite isplate direktno na bankovni konto u Xero ili QuickBooks osim ako ste sigurni da je uparivanje bankovnog feeda ispravno podešeno. Većina timova dobije bolju kontrolu tako da knjiži na Stripe clearing pa zasebno upari bankovni polog.
Korak 2: Postavite raspored workflowa#
Upotrijebite Cron node da se pokreće:
- dnevno u 06:00 u vašoj računovodstvenoj vremenskoj zoni za jučerašnje isplate.
- opcionalno svaki sat kako biste uhvatili odgođene isplate ako radite 24/7.
Praktičan raspored:
- Dnevno: uskladite isplate s
arrival_datejednakim jučer. - Tjedno: backfill zadnjih 14 dana kako biste uhvatili kasne povrate i prilagodbe.
Korak 3: Dohvatite isplate iz Stripea#
Koristite HTTP Request node sa Stripe API-jem. Filtriranje po datumu dolaska je korisno, ali trebate podržati i logiku temeljenu na statusu.
# Stripe API endpoint used by the workflow
GET https://api.stripe.com/v1/payouts?limit=100&status=paidDohvatite polja:
idamountcurrencyarrival_datestatusdestinationako imate više bankovnih računa
Ako imate više Stripe računa, razdvojite workflowe po računu ili proslijedite identifikator računa i spremite ga u tablice.
Korak 4: Za svaku isplatu dohvatite balance transakcije#
Detalji isplate su u balance_transactions filtriranima po payout.
GET https://api.stripe.com/v1/balance_transactions?limit=100&payout=po_123Paginirajte pomoću starting_after dok se ne dohvate sve stranice. Balance transakcije uključuju:
amountifeenettypesourcekoji povezuje na charge ili refund objektecreatedtimestamp
Možete spremati detaljne linije radi revizije, ali za knjiženje u Xero ili QuickBooks trebaju vam samo zbrojevi po kategorijama.
Korak 5: Izračunajte zbrojeve po kategorijama#
U n8n Code nodeu zbrojite iznose u “kantiće”. Koristite integer minor units kako biste izbjegli float rounding greške, a zatim pretvorite u decimale pri knjiženju.
// Input: items are Stripe balance transactions
const totals = {
grossSales: 0,
refunds: 0,
stripeFees: 0,
disputes: 0,
adjustments: 0,
currency: $input.first().json.currency,
};
for (const item of $input.all()) {
const t = item.json.type;
const amount = item.json.amount; // minor units
const fee = item.json.fee || 0;
if (t === 'charge') totals.grossSales += amount;
else if (t === 'refund') totals.refunds += amount; // negative in Stripe often
else if (t === 'stripe_fee') totals.stripeFees += amount;
else if (t.includes('dispute')) totals.disputes += amount;
else totals.adjustments += amount;
// Optional: fee is sometimes separate, depending on type
// If you rely on fee, you can add fee handling here.
}
return [{ json: totals }];Točno mapiranje ovisi o postavkama vašeg Stripe računa i o tome kako se pojavljuju tipovi balance transakcija. U produkciji biste trebali logirati distribuciju nepoznatih type vrijednosti i nepoznate tretirati kao iznimke.
💡 Savjet: Dodajte pravilo koje označava svaku isplatu gdje je
adjustmentsrazličit od nule i iznad praga, npr. više od5000minor units. Upravo su prilagodbe mjesto gdje se krije većina iznenađenja u usklađivanju.
Korak 6: Validirajte jednadžbu isplate#
Vaši izračunati zbrojevi moraju se uskladiti s neto kretanjem isplate.
Pojednostavljena provjera je:
expectedNet = grossSales + refunds + disputes + adjustments + stripeFeesexpectedNetmora biti jednakpayoutAmountu minor units
Imajte na umu da Stripeovi predznaci znaju biti kontraintuitivni. Mnogi timovi normaliziraju tako da priljeve tretiraju kao pozitivne, a odljeve kao negativne, pa onda nameću:
net = inflows + outflows
Učinite provjeru eksplicitnom i “fail fast” kada se ne poklapa.
| Kontrola | Što uspoređujete | Zašto je važno |
|---|---|---|
| Neto jednak isplati | sum(net) naspram payout.amount | Sprječava knjiženje pogrešnih zbrojeva |
| Konzistentnost valute | valuta svih linija jednaka valuti isplate | Izbjegava pogrešna knjiženja u više valuta |
| Nedostajući tipovi | neočekivani balance_transaction.type | Hvata nova Stripe ponašanja |
| Zaštita od duplikata | payout ID je već knjižen | Sprječava dvostruke unose |
Korak 7: Spremite stanje runa i idempotency ključeve#
Prije knjiženja upišite zapis o runu:
status = computed- spremite payload s izračunatim zbrojevima
- spremite idempotency ključ, npr.
stripe_payout_po_123_v1
Ako se kasniji run ponovno pokrene, može detektirati da je isplata već knjižena i preskočiti ili usporediti.
To je isti operativni princip koji se koristi u lead-to-cash automatizaciji, gdje stanje čini retry sigurnim. Vidi: Lead-to-cash automation with n8n workflow.
Korak 8: Knjiženje u Xero ili QuickBooks#
Odaberite jednu strategiju knjiženja i držite je se. Za većinu financijskih timova najlakše je za reviziju imati jedan dnevnik po isplati.
Obrazac knjiženja A: Dnevnik na Stripe Clearing
Stavke dnevnika, konceptualno:
- Dugovanje Stripe Clearing za neto iznos isplate
- Potraživanje prihoda od prodaje za bruto prodaju
- Dugovanje contra konta povrata za povrate
- Dugovanje troška Stripe naknada za naknade
- Dugovanje troška sporova za sporove
- Dugovanje ili potraživanje prilagodbi ovisno o predznaku
Dnevnik se mora izbalansirati.
Ako koristite QuickBooks, možete kreirati JournalEntry. Ako koristite Xero, možete kreirati ManualJournal. Točna API polja se razlikuju, ali računovodstvena ideja je ista.
Obrazac knjiženja B: Depozit sa stavkama naknada
Ovo može dobro funkcionirati u QuickBooks ako je uparivanje bankovnog feeda čisto, ali ovisi o konfiguraciji. Mnogi timovi i dalje preferiraju clearing konto plus ručno uparivanje.
Korak 9: Obrada iznimki kroz “first-class” red#
Iznimke ne bi smjele biti nejasna Slack poruka. Modelirajte ih kao strukturirane događaje s:
- kodom razloga
- snapshotom payloada
- preporučenom akcijom
- dodijeljenim vlasnikom i statusom
Preporučeni kodovi razloga iznimki:
NET_MISMATCHUNKNOWN_TXN_TYPECURRENCY_MISMATCHMISSING_ACCOUNT_MAPPINGACCOUNTING_API_ERRORDUPLICATE_PAYOUT
Ponašanje workflowa:
- 1Ne knjižiti u računovodstvo ako validacija padne.
- 2Upisati iznimku u
recon_exceptions. - 3Obavijestiti finance ops s linkom na zapis i preporučenim popravkom.
- 4Omogućiti ponovni run nakon rješenja.
Praktičan SLA:
- Iznimke visoke važnosti, npr. net mismatch, treba pregledati unutar 24 sata.
- Iznimke niske važnosti, npr. nepoznat tip s iznosom nula, može se pregledati tjedno.
⚠️ Upozorenje: Nemojte automatski retryati knjiženje na svakoj grešci. Ako je greška u validaciji ili mapiranju, retry samo spam-a vaš računovodstveni sustav i povećava šansu za duplikate.
Korak 10: Logiranje, nadzor i kontrole#
Minimalno implementirajte:
- strukturirane logove za svaki payout run s
run_id - sažetnu metriku: obrađene isplate, knjižene, neuspjele
- dnevni izvještaj o usklađivanju poslan financijama
Preporučena polja kontrolnog izvještaja:
- Datum i ID isplate
- Neto iznos isplate i valuta
- Ukupna prodaja, povrati, naknade, prilagodbe
- Referenca knjiženja u Xero ili QuickBooks
- Broj iznimki i linkovi
Reporting možete implementirati upisom u tablicu, a zatim n8n workflowom koji šalje email ili kreira ticket.
# Obrasci obrade iznimki koji rade u produkciji#
Nepoznati tipovi balance transakcija#
Stripe može uvesti nove tipove ili vaš poslovni model može aktivirati nove tokove. Kad se pojavi novi tip:
- zabilježite ga
- spremite ga
- zaustavite knjiženje isplate ako je iznos materijalan
- dodajte sigurno “default” mapiranje tek nakon pregleda
Pravilo “od oka”:
- ako je apsolutni iznos nepoznatog tipa veći od
1000minor units, srušite run. - inače ga klasificirajte kao prilagodbu i otvorite iznimku niske važnosti.
Vremenske razlike povrata kroz isplate#
Povrati se često pojave danima nakon originalne prodaje, u drugoj isplati.
Kako biste zadržali konzistentnost računovodstva:
- nastavite usklađivati isplate kako dolaze.
- koristite contra konto povrata da predstavlja period kada povrat “udari”.
- ne pokušavajte prepisivati originalno knjiženje prodaje osim ako vaša računovodstvena politika zahtijeva restatement prihoda.
Ako financijama treba revizija na razini kupca, spremite charge ID-jeve i refund ID-jeve u stripe_payout_lines.
Djelomični povrati i zaokruživanje#
Djelomični povrati stvaraju frakcijske razlike zaokruživanja pri konverziji u izvještajnu valutu. Kad je odstupanje malo, tretirajte ga kao stavku prilagodbe.
Praktična politika:
- ako je apsolutna razlika zaokruživanja manja od
10minor units, knjižite je na konto prilagodbi. - ako je veća ili jednaka
10minor units, otvorite iznimku.
Sporovi i chargebackovi#
Sporovi mogu imati više događaja: spor kreiran, sredstva povučena, spor dobiven, naplaćena naknada. Ovo često traje kroz više isplata.
Tretirajte kretanja vezana uz sporove kao zasebnu kategoriju. Držite ih odvojeno od povrata radi boljeg izvještavanja, jer stopa sporova je produktni i risk KPI, a ne KPI korisničkog uspjeha.
# Napomene za end-to-end n8n implementaciju#
Paginacija i deduplikacija#
Balance transakcije su paginirane. Morate:
- paginirati dok
has_morene postane false - spremati
starting_afterkursor - deduplicirati po
balance_transaction.id
Robustan pristup je inkrementalni sync u Postgres, pa računanje zbrojeva isplate iz lokalnog spremišta. To se bolje skalira i čini backfill jednostavnijim. Ako vam treba ta arhitektura, krenite od: n8n data sync patterns: CDC, pagination, deduplication.
Pouzdanost i “exactly-once” knjiženje#
Računovodstveni API-ji mogu timeoutati nakon što su već kreirali zapis. Ako retryate bez idempotencije, možete napraviti duplikate.
Implementirajte jedno od ovoga:
- Idempotency ključ spremljen u bazi i provjeren prije knjiženja
- External ID polje u računovodstvenom objektu postavljeno na Stripe payout ID, pa query-before-create
- Queue i outbox obrazac tako da je knjiženje zaseban transakcijski korak
Za najpouzdaniji obrazac s n8n koristite Postgres kao “source of truth” i implementirajte worker workflow temeljen na outboxu. Referenca: n8n Postgres queue and outbox pattern for reliable integrations.
Sigurnost i kontrole pristupa#
Zaključajte finance workflowe:
- odvojene n8n vjerodajnice po okruženju
- najmanje potrebne ovlasti (least privilege) za Xero ili QuickBooks aplikacije
- audit log pristupa workflowima i vjerodajnicama
Također logirajte tko je odobrio override iznimke, ako podržavate ručne popravke.
# Primjer oblika payload-a za knjiženje#
Čak i ako koristite različite API-je, držite interni payload stabilnim. To olakšava testiranje i ponovna pokretanja.
| Polje | Primjer | Napomene |
|---|---|---|
payoutId | po_123 | Primarni ključ za idempotenciju |
arrivalDate | 2026-09-23 | Koristite računovodstvenu vremensku zonu |
currency | usd | Nametnite jednu valutu po isplati |
grossSalesMinor | 250000 | Minor units |
refundsMinor | -12000 | Zadržite Stripe konvenciju predznaka ili konzistentno normalizirajte |
feesMinor | -7750 | Često negativno |
adjustmentsMinor | 0 | Nenula pokreće pregled |
netMinor | 230250 | Mora biti jednako iznosu isplate |
postingTarget | xero | Ili quickbooks |
idempotencyKey | stripe_payout_po_123_v1 | Spremljeno i ponovno korišteno |
# Checklist za testiranje prije produkcije#
Validirajte na barem 20 povijesnih isplata, uključujući rubne slučajeve:
- 1Normalna isplata s naplatama i naknadama.
- 2Isplata koja sadrži povrate.
- 3Isplata koja sadrži sporove.
- 4Isplata s ručnim prilagodbama.
- 5Viševalutni scenarij ako je primjenjivo.
Operativni testovi:
- 1Ponovno pokrenite istu isplatu i potvrdite da nema duplikata knjiženja.
- 2Simulirajte timeout računovodstvenog API-ja i osigurajte siguran retry.
- 3Namjerno izazovite net mismatch i potvrdite da je iznimka kreirana i knjiženje blokirano.
- 4Napravite backfill zadnjih 14 dana i potvrdite konzistentne rezultate.
# Ključne poruke#
- Usklađujte Stripe na razini isplate kako biste uparili bankovne pologe, a detalje na razini naplate čuvajte u bazi radi revizije.
- Nametnite kontrole koje validiraju da je
expectedNetjednak iznosu isplate prije knjiženja u Xero ili QuickBooks. - Modelirajte iznimke kao strukturirane zapise s kodovima razloga, a ne ad-hoc notifikacije, i blokirajte knjiženje kod materijalnih anomalija.
- Koristite idempotency ključeve i trajni run log kako biste spriječili duplikate računovodstvenih unosa tijekom retrya.
- Ugradite paginaciju i deduplikaciju u sync Stripe balance transakcija, posebno kako volumen raste.
# Zaključak#
Automatizacija n8n Stripe usklađivanja manje je pitanje povezivanja API-ja, a više izgradnje sustava “finance-grade”: istina na razini isplate, konzistentne konvencije predznaka, validacijske kontrole i stvarni red iznimki.
Ako želite da Samioda implementira ovo end-to-end za vaš Stripe i Xero ili QuickBooks setup, uključujući Postgres stanje, pouzdanost temeljenu na outboxu i izvještavanje prilagođeno financijama, javite nam se putem Samioda usluga automatizacije i definirat ćemo opseg prema vašem volumenu isplata i procesu zatvaranja.
FAQ
Osnivač i senior developer u Samiodi. 8+ godina iskustva u izradi React, Next.js, Flutter i n8n rješenja za klijente diljem Europe.
Više iz kategorije Poslovna automatizacija
Sve →n8n automatizacija korisničke podrške: trijaža ticketa, SLA upozorenja i eskalacije (Zendesk ili Intercom uz Slack)
Praktičan vodič za 2026. o n8n automatizaciji korisničke podrške: automatsko označavanje, usmjeravanje, bodovanje prioriteta, upozorenja na kršenje SLA-a, eskalacije i odobrenja uz human-in-the-loop, s mogućnošću revizije i sigurnim ponovnim pokušajima.
Operativni priručnik za n8n: nadzor, alarmiranje, SLO-ovi i on-call playbookovi za pouzdane automatizacije
Vodite n8n kao produkcijsku uslugu: definirajte SLO-ove, izgradite nadzorne ploče, postavite alarmiranje koje vodi do konkretnih akcija, klasificirajte incidente i koristite gotove runbookove i post-incident predloške prilagođene automatizacijskim workflowovima.
Osiguravanje n8n-a u produkciji: rotacija pristupnih podataka, načelo najmanjih privilegija i obrasci servisnih računa
Praktičan sigurnosni priručnik za najbolje prakse rotacije pristupnih podataka u n8n-u: upravljanje tajnama kroz okruženja, sigurna rotacija bez zastoja, dizajn servisnih računa s najmanjim privilegijama te audit-ready pristup uz primjere za Vault i cloud KMS.
Trebate pomoć s projektom?
Gradimo prilagođena rješenja koristeći tehnologije iz ovog članka. Senior tim, fiksne cijene.
Povezani članci
Automatizirano izvještavanje s n8n: izradite tjedne KPI sažetke iz GA4, Stripea i Postgresa
Praktičan vodič za automatizirano izvještavanje s n8n: povucite tjedne KPI-je iz GA4, Stripea i Postgresa, provjerite kvalitetu podataka, generirajte sažet narativni pregled i pošaljite ga u Slack i e-mail uz ponovne pokušaje i održivu strukturu.
Kako automatizirati proces izdavanja računa: vodič kroz n8n korak po korak (2026.)
Praktičan vodič, korak po korak, za automatizaciju procesa izdavanja računa uz n8n: generiranje računa, slanje e-mailom, podsjetnici za plaćanje i usklađivanje uplata uz zapisnik spreman za računovodstvo.
n8n automatizacija korisničke podrške: trijaža ticketa, SLA upozorenja i eskalacije (Zendesk ili Intercom uz Slack)
Praktičan vodič za 2026. o n8n automatizaciji korisničke podrške: automatsko označavanje, usmjeravanje, bodovanje prioriteta, upozorenja na kršenje SLA-a, eskalacije i odobrenja uz human-in-the-loop, s mogućnošću revizije i sigurnim ponovnim pokušajima.