Bookingside med flere valutaer: hvor marginen siver

En underagent i Aarhus spørger, hvorfor sitet viste prisen i DKK, mens fakturaen står i EUR. Du tjekker efter. Begge tal er rigtige. Billetten blev prissat af leverandøren i én valuta, vist for den rejsende i en anden og afregnet i en tredje, da kortet blev trukket. Ingen har lavet en fejl, og du mangler stadig penge. Det er dér, en bookingside med flere valutaer stille taber penge, og det er næsten aldrig valutakursen, der gør skaden. Det er afrundingsreglen under den — og det ubesvarede spørgsmål om, hvem der bærer risikoen mellem tilbuddet og afregningen.
To valutaer, og kun den ene flytter penge
Enhver butik, der sælger over en grænse, kører to valutasystemer på én gang. At behandle dem som ét er roden til det meste af rodet.
Visningsvalutaen er den, den rejsende læser. Den er et præsentationslag. På denne platform vælger hvert white-label-site sin egen standardvaluta og den liste, det tilbyder, og priser omregnes på klientsiden fra en kurstabel pr. tenant. Den detalje betyder mere, end den lyder til: tallet på skærmen er afledt. Det er din kurs anvendt på leverandørens pris i det øjeblik, siden renderes — ikke en pris, nogen har sagt ja til at holde.
Afregningsvalutaen er den, pengene faktisk bevæger sig i: det leverandøren fakturerer dig, det gatewayen trækker, det der lander på bankkontoen, det refusionen går ud i. Der er som regel én pr. leverandør og én pr. gateway, og de er ikke altid den samme.
Når et bureau siger "vi sælger i DKK, EUR og USD", betyder det næsten altid, at det viser tre og afregner i én. Det er en helt brugbar måde at drive en butik på; de fleste butikker kører sådan. Det holder op med at være i orden i samme øjeblik, noget nedstrøms behandler en vist pris som et tilsagn — en refusion, et underagentudtræk, en tvist — for den viste pris var aldrig et tilsagn. Den var en rendering.
Hvem bærer valutarisikoen på en bookingside med flere valutaer
Mellem at den rejsende ser en pris, og at pengene afregnes, er nogen eksponeret mod en kurs, der kan bevæge sig. Spørgsmålet er aldrig, om eksponeringen findes. Det er, hvem der ejer den, og om vedkommende ved det.
Der er tre ærlige svar. Leverandøren bærer den, når du har kontraherede nettopriser i din egen valuta, og de absorberer omregningen. Den rejsende bærer den, når du opkræver i leverandørens valuta, og kortudstederen omregner — renest for dig, og det de rejsende klager over, fordi beløbet på kontoudtoget ikke er beløbet på bekræftelsen. Eller du bærer den, hvilket er præcis, hvad en kurstabel betyder: du har låst en kurs, og forskellen mellem din kurs og den rigtige på afregningsdagen er din, i begge retninger.
Alle tre kan forsvares. Den, man skal undgå, er det utilsigtede fjerde tilfælde, hvor ingen har besluttet noget, kurstabellen opdateres, når nogen kommer i tanke om det, og positionen opdages i afstemningen et kvartal senere. Kan du ikke nævne ejeren og opdateringskadencen i én sætning, er du i det fjerde tilfælde.
Afrunding er en prisbeslutning, ikke en formatering
De fleste motorer har 0,01 som standardtrin, fordi det er, hvad en decimalvaluta ser ud som. Det er den forkerte standard for rejser, af fire forskellige grunde.
Den første er, at ikke alle valutaer har en underenhed. Japanske yen og sydkoreanske won har ingen; en pris med to decimaler på de markeder læses som en softwareartefakt, og et afrundingstrin på 0,01 i en valuta uden øre er aritmetik på en enhed, der ikke findes.
Den anden er, at omregnede priser ser omregnede ud. 9.238,47 DKK annoncerer sig selv som resultatet af en multiplikation. En rejsende, der læser det, ved, at der er et andet tal bagved, og det næste naturlige træk er at gå ud og finde det tal et andet sted. En pris, der lander på et rundt trin, læses som din pris.
Den tredje er retning. Afrunding til nærmeste trin er symmetrisk: fejlene udligner hinanden over volumen, og marginen er uberørt. Op lægger altid en splint til, ned giver altid en væk. Begge dele er politik, og begge dele er fine, hvis de blev valgt. Fejlen er at vælge ved et uheld, i den forkerte retning, og så undre sig over, hvorfor bruttomarginen på ét marked ligger en anelse under de andre.
Den fjerde er rækkefølgen af operationer, og det er den, der faktisk bider. Omregn, læg avancen på, rund af — én gang, til sidst. En motor, der runder nettoprisen af ved omregningen og runder af igen efter avancen, har rundet af to gange, og den anden afrunding lægges på et tal, der allerede har mistet sin rest. Gang det op over billetpris, skatter og tillæg, der prissættes som separate komponenter, og totalen er ikke længere lig summen af delene. Det er et afstemningsproblem, før det er et prisproblem.
Rund af pr. komponent eller rund totalen af, men gør ikke begge dele — og sørg for, at det, en faktura viser, går op, når en underagent lægger det i et regneark. Det gør de.
Tre måder rent faktisk at køre det på
Modellerne nedenfor er ikke funktionsniveauer. De er tre forskellige svar på "hvad lover du den rejsende", og de bærer forskelligt arbejde.
| Spørgsmål | Omregnet visning | Prislister pr. marked | Afregning pr. marked |
|---|---|---|---|
| Hvad det er | Én afregningsvaluta; en kurstabel renderer resten | Priser sat i hånden pr. marked, ikke afledt | En gateway og en bankkonto pr. valuta |
| Hvem bærer valutarisikoen | Dig, mellem kursopdatering og afregning | Dig, indtil du prissætter om | Stort set ingen — du holder hver valuta |
| Refusioner | Kræver salgsdagens kurs gemt, ellers æder du forskellen | Rene: samme tal retur | Rene |
| Priskontrol | Svag. Psykologien bliver, hvad kursen producerer | Total. Du vælger hvert prispunkt | Total |
| Bogføring | Én hovedbog, nemt | Én hovedbog, nemt | Flere hovedbøger, rigtigt arbejde |
| Hvornår det er rigtigt | De fleste bureauer, det meste af tiden | Et marked, du faktisk konkurrerer på pris i | Du har folk, volumen og en bank i landet |
Næsten alle bør starte i venstre kolonne og flytte ét enkelt marked til midterkolonnen, når det fortjener opmærksomheden. Højre kolonne er en driftsbeslutning i teknologikostume; hvis ingen i huset afstemmer to hovedbøger i dag, bliver en tredje valuta ikke det, der får dem i gang.
Hvad det koster dig, hvis du gør det forkert
Refusionen er klassikeren. En booking sælges til én kurs, annulleres seks uger senere og refunderes til dagens kurs, fordi det var, hvad motoren havde ved hånden. Bevægede kursen sig til den rejsendes fordel, har du betalt forskellen; gik den den anden vej, tror den rejsende, at du har snydt dem, og de har ikke helt uret. Gem den kurs, der blev brugt ved salget, på bookingen, og refunder mod den.
Den stillere handler om kredit. Kreditgrænser for underagenter og afregningsfakturering findes her som førsteklasses objekter frem for et regneark — hvilket kun er en fordel, hvis grænsen er denomineret i den valuta, underagenten rent faktisk sælger i. En grænse i EUR mod en agent, der sælger i DKK, driver, hver gang kursen gør, og driften opdages på det værst tænkelige tidspunkt, nemlig når grænsen blokerer en udstedelse i lufthavnen.
Og så den langsomme. En forældet kurstabel kaster ingen fejl. Den sælger. I ugevis kan det ligne usædvanlig god volumen på ét marked, lige indtil måneden lukkes, og volumen viser sig at have været en rabat, du ikke vidste, du gav. Det er argumentet for at sætte en dato og en ejer på kurstabellen frem for et cron-job, ingen læser.
Før du tænder for et marked
Intet af dette kræver et projekt. Det kræver beslutninger skrevet ned, i denne rækkefølge, før valutaen dukker op i vælgeren:
- Nævn afregningsvalutaen for det marked og den leverandør og gateway, den gælder. Én sætning.
- Nævn, hvem der opdaterer kurstabellen og hvor ofte, og sæt sidst-opdateret-datoen et sted, et menneske ser det.
- Vælg et afrundingstrin pr. valuta, ikke ét globalt trin, og tjek valutaerne uden decimaler for sig.
- Bekræft, at rækkefølgen er omregn, læg avance på, rund af én gang — og at komponentpriserne stadig summer til totalen på fakturaen.
- Bekræft, at refusioner bruger den gemte salgsdagskurs, ikke dagens.
- Tjek, at underagenternes kreditgrænser og afregningsfakturaer er i samme valuta som de udtræk, de agenter læser.
Tænd så for det, sælg ind i det i fjorten dage, og afstem de fjorten dage i hånden én gang. Det første marked er det, der lærer dig, hvilket af de seks punkter du tog fejl af.
Valutaadfærd er den del af en butik, der er nemmest at demonstrere og sværest at revidere, så det er værd at se de faktiske indstillinger, før du designer omkring dem. Vil du se, hvad et site leveres med — valutalisten, kurstabellen, den admin avancen bor i — så start et fra guiden; det provisioneres på et platformssubdomæne og beder ikke om et kort. Er du stadig i tvivl om, hvorvidt du overhovedet skal køre en andens motor, er sammenligningen byg selv eller white label argumentet under dette, og hvad en white label faktisk giver dig dækker resten af fladen.
Valutakursen er offentlig information. Din afrundingsregel, din refusionskurs og din opdateringskadence er det ikke, og det er de tre steder, marginen på en grænseoverskridende booking i praksis afgøres.