Bokningssajt med flera valutor: var marginalen läcker

En underagent i Göteborg undrar varför sajten visade priset i SEK medan fakturan står i EUR. Du kontrollerar. Båda siffrorna stämmer. Biljetten prissattes av leverantören i en valuta, visades för resenären i en annan och reglerades i en tredje när kortet drogs. Ingen har gjort fel, och du ligger ändå back. Det är där en bokningssajt med flera valutor tyst tappar pengar, och det är nästan aldrig växelkursen som gör skadan. Det är avrundningsregeln under den, och den obesvarade frågan om vem som bär risken mellan offerten och avräkningen.
Två valutor, och bara den ena flyttar pengar
Varje butik som säljer över en gräns kör två valutasystem samtidigt. Att behandla dem som ett enda är roten till det mesta av röran.
Visningsvalutan är den resenären läser. Den är ett presentationslager. På den här plattformen väljer varje white-label-sajt sin egen standardvaluta och den lista den erbjuder, och priser räknas om på klientsidan från en kurstabell per tenant. Den detaljen betyder mer än den låter: siffran på skärmen är härledd. Den är din kurs applicerad på leverantörens pris i det ögonblick sidan renderas, inte ett pris som någon har gått med på att hålla.
Avräkningsvalutan är den som pengarna faktiskt rör sig i — det leverantören fakturerar dig, det betalväxeln drar, det som landar på bankkontot, det återbetalningen går ut i. Det finns oftast en per leverantör och en per betalväxel, och de är inte alltid samma.
När en byrå säger "vi säljer i SEK, EUR och USD" betyder det nästan alltid att den visar tre och reglerar i en. Det är ett fullt fungerande sätt att driva en butik; de flesta butiker drivs så. Det slutar vara okej i samma stund som något nedströms behandlar ett visat pris som ett åtagande — en återbetalning, ett underagentsutdrag, en tvist — eftersom det visade priset aldrig var ett åtagande. Det var en rendering.
Vem bär valutarisken på en bokningssajt med flera valutor
Mellan att resenären ser ett pris och att pengarna regleras är någon exponerad mot en kurs som kan röra sig. Frågan är aldrig om exponeringen finns. Frågan är vem som äger den, och om den som äger den vet om det.
Det finns tre hederliga svar. Leverantören bär den när du har kontrakterade nettopriser i din egen valuta och de absorberar omräkningen. Resenären bär den när du debiterar i leverantörens valuta och kortutgivaren räknar om — renast för dig, och det resenärer klagar på, eftersom beloppet på kontoutdraget inte är beloppet på bekräftelsen. Eller så bär du den, vilket är precis vad en kurstabell innebär: du har låst en kurs, och skillnaden mellan din kurs och den verkliga på avräkningsdagen är din, åt båda håll.
Alla tre går att försvara. Den som ska undvikas är det oavsiktliga fjärde fallet, där ingen har bestämt, kurstabellen uppdateras när någon råkar komma ihåg, och positionen upptäcks i avstämningen ett kvartal senare. Kan du inte namnge ägaren och uppdateringstakten i en enda mening är du i det fjärde fallet.
Avrundning är ett prisbeslut, inte ett formateringsbeslut
De flesta motorer har 0,01 som standardsteg, eftersom det är vad en decimalvaluta ser ut som. Det är fel standard för resor, av fyra skilda skäl.
Det första är att inte alla valutor har en underenhet. Japanska yen och sydkoreanska won har ingen; ett pris med två decimaler i de marknaderna läses som en mjukvaruartefakt, och ett avrundningssteg på 0,01 i en valuta utan öre är aritmetik på en enhet som inte finns.
Det andra är att omräknade priser ser omräknade ut. 12 364,73 SEK annonserar sig som utfallet av en multiplikation. En resenär som läser det vet att det finns en annan siffra bakom, och nästa naturliga steg är att gå och leta rätt på den siffran någon annanstans. Ett pris som landar på ett jämnt steg läses som ditt pris.
Det tredje är riktningen. Avrundning till närmaste steg är symmetrisk: felen tar ut varandra över volym och marginalen påverkas inte. Uppåt lägger alltid till en flisa, nedåt ger alltid bort en. Båda är policy, och båda duger om de valdes medvetet. Felet är att välja av misstag, åt fel håll, och sedan undra varför bruttomarginalen på en marknad ligger ett snäpp under de andra.
Det fjärde är ordningen på operationerna, och det är den som faktiskt biter. Räkna om, lägg på pålägget, avrunda — en gång, sist. En motor som avrundar nettopriset vid omräkningen och avrundar igen efter pålägget har avrundat två gånger, och den andra avrundningen appliceras på ett tal som redan tappat sin rest. Multiplicera det över biljettpris, skatter och tillägg som prissätts som separata komponenter, och totalen är inte längre lika med summan av delarna. Det är ett avstämningsproblem innan det är ett prisproblem.
Avrunda per komponent eller avrunda totalen, men gör inte båda, och se till att det fakturan visar går ihop när en underagent lägger in det i ett kalkylark. Det kommer de att göra.
Tre sätt att faktiskt köra det
Modellerna nedan är inte funktionsnivåer. De är tre olika svar på frågan "vad lovar du resenären", och de bär olika mycket arbete.
| Fråga | Omräknad visning | Prislistor per marknad | Avräkning per marknad |
|---|---|---|---|
| Vad det är | En avräkningsvaluta; en kurstabell renderar resten | Priser satta för hand per marknad, inte härledda | En betalväxel och ett bankkonto per valuta |
| Vem bär valutarisken | Du, mellan kursuppdatering och avräkning | Du, tills du prissätter om | I stort sett ingen — du håller varje valuta |
| Återbetalningar | Kräver att försäljningsdagens kurs sparas, annars äter du skillnaden | Rena: samma siffra tillbaka | Rena |
| Priskontroll | Svag. Psykologin blir vad kursen råkar producera | Total. Du väljer varje prispunkt | Total |
| Redovisning | En huvudbok, enkelt | En huvudbok, enkelt | Flera huvudböcker, riktigt arbete |
| När det är rätt | De flesta byråer, för det mesta | En marknad du faktiskt konkurrerar med pris på | Du har personal, volym och en bank i landet |
Nästan alla bör börja i vänstra kolumnen och flytta en enda marknad till mittkolumnen när den förtjänar uppmärksamheten. Högerkolumnen är ett driftsbeslut i teknikkostym; om ingen i huset stämmer av två huvudböcker idag blir en tredje valuta inte det som får dem att börja.
Vad det kostar dig om du gör fel
Återbetalningen är klassikern. En bokning säljs till en kurs, avbokas sex veckor senare och återbetalas till dagens kurs, för det var den motorn hade till hands. Rörde sig kursen till resenärens fördel har du betalat mellanskillnaden; rörde den sig åt andra hållet tror resenären att du snuvat dem, och de har inte helt fel. Spara kursen som användes vid försäljningen på bokningen, och återbetala mot den.
Den tystare gäller kredit. Kreditgränser för underagenter och avräkningsfakturering finns här som förstklassiga objekt snarare än som ett kalkylark — vilket bara är en fördel om gränsen är denominerad i den valuta som underagenten faktiskt säljer i. En gräns i EUR mot en agent som säljer i SEK driver varje gång kursen gör det, och driften upptäcks i sämsta tänkbara ögonblick, nämligen när gränsen blockerar en utfärdning på flygplatsen.
Och så den långsamma. En inaktuell kurstabell kastar inget fel. Den säljer. I veckor kan det se ut som ovanligt god volym på en marknad, ända tills månaden stängs och volymen visar sig ha varit en rabatt du inte visste att du gav. Det är argumentet för att sätta ett datum och en ägare på kurstabellen i stället för ett cron-jobb som ingen läser.
Innan du slår på en marknad
Inget av det här kräver ett projekt. Det kräver beslut som skrivs ned, i den här ordningen, innan valutan dyker upp i väljaren:
- Namnge avräkningsvalutan för den marknaden, och den leverantör och betalväxel den gäller. En mening.
- Namnge vem som uppdaterar kurstabellen och hur ofta, och sätt senast-uppdaterat-datumet någonstans där en människa ser det.
- Välj ett avrundningssteg per valuta, inte ett globalt steg, och kontrollera valutorna utan decimaler separat.
- Bekräfta att ordningen är räkna om, lägg på pålägg, avrunda en gång — och att komponentpriserna fortfarande summerar till totalen på fakturan.
- Bekräfta att återbetalningar använder den sparade försäljningsdagskursen, inte dagens.
- Kontrollera att underagenternas kreditgränser och avräkningsfakturor är i samma valuta som de utdrag de agenterna läser.
Slå sedan på den, sälj in i den i två veckor och stäm av de två veckorna för hand en gång. Den första marknaden är den som lär dig vilken av de sex punkterna du fick fel.
Valutabeteende är den del av en butik som är lättast att demonstrera och svårast att granska, så det är värt att se de faktiska inställningarna innan du designar runt dem. Vill du titta på vad en sajt levereras med — valutalistan, kurstabellen, adminen som pålägget bor i — starta en från guiden; den provisioneras på en plattformssubdomän och frågar inte efter något kort. Är du fortfarande osäker på om du alls ska köra någon annans motor är jämförelsen bygga själv eller white label argumentet under det här, och vad en white label faktiskt ger dig täcker resten av ytan.
Växelkursen är offentlig information. Din avrundningsregel, din återbetalningskurs och din uppdateringstakt är det inte, och det är på de tre ställena marginalen på en gränsöverskridande bokning faktiskt avgörs.