Fakturering för prenumerationer i flera valutor: praktiska avrundnings- och minimal-tabellmetoder för att hålla totalsummor konsekventa över webb, mobil och bokföringsexporter.

Därför att varje system ofta gör lite olika val om när man avrundar, vad som avrundas (netto vs brutto) och vilken precision som används för skatt och valutakurser. De små skillnaderna visar sig som 0,01–0,02 gap, särskilt vid proration, krediter och om samma beräkning upprepas över tid.
Spara belopp som heltal i minorenheter (t.ex. ören) plus valutakod, och formatera bara för visning. Flyttal kan inte exakt representera många decimaler, så små fel uppstår när du adderar skatt, rabatter eller flera rader.
Välj en källa till sanningen och härled resten konsekvent. Ett vanligt upplägg är att spara netto och skatt i minorenheter och räkna brutto = netto + skatt, eftersom det underlättar återbetalningar och revisioner.
Fakturans valuta är den legala valuta som fakturan uttrycks i och som du ska stämma av mot. Visningsvaluta är vad kunden ser när den bläddrar bland priser, och settlement-valuta är vad betalningsleverantören sätter in på bankkontot; de kan skilja sig åt utan att fakturan är fel, så länge fakturans beräkningar är konsekventa.
Hämta inte omkurser vid export eller PDF-regenerering. Spara den exakta valutakursen som användes på fakturan (värde, precision, leverantör och giltighetstid) och återanvänd den så att gamla fakturor återges med samma siffror månader senare.
Bestäm en regel och håll dig till den: antingen “kurs vid fakturautställning” eller “kurs vid betalningsgodkännande”. Att blanda tidsstämplar mellan system är en vanlig orsak till skillnader, särskilt runt midnatt eller vid tidszonsgränser.
Standardrekommendationen är att avrunda per rad för prenumerationsfakturor och sedan summera sparade radminorer till totalsummor. Det är oftast lättast att förklara, minskar supportärenden om rader inte stämmer med totalen och är stabilt över förnyelser om alla kanaler använder samma regel.
Välj uttryckligen mellan avrundning per rad och avrundning på fakturanivå, och gör processen deterministisk. Om du behöver matcha ett faktura-nivåmål, fördela avrundningsresten på ett fast sätt och spara de resulterande per-rad skattebeloppen så alla system kan visa samma utfall.
Proration skapar upprepade decimaler (t.ex. dagspriser), så operationernas ordning blir avgörande. Bestäm en metod (t.ex. proration på netto först, sedan beräkna skatt från sparat netto), avrunda i bestämd stegordning och spara de slutgiltiga radminorerna så uppgraderingar, nedsättningar, krediter och återbetalningar speglar ursprunglig matematik.
Låt backend producera ett färdigt fakturasnapshot (rader, skatter, totalsummor, valuta/minorenhetsregler, FX-snapshot, avrundningsläge) och behandla det som oföränderligt efter finalisering. Webb, mobil, PDF:er och exporter ska sedan rendera dessa sparade heltal istället för att räkna om; mönstret fungerar också bra när man bygger betalflöden på Koder.ai.