Багатовалютний сайт бронювання: куди витікає маржа

Sub-agent із Ер-Ріяда питає, чому на сторінці пошуку сайт показав ціну в SAR, а в рахунку стоїть AED. Ви перевіряєте. Обидва числа правильні. Тариф supplier оцінив в одній валюті, мандрівникові показали в другій, а settle відбувся в третій, коли пройшла картка. Ніхто не помилився, а вам усе одно бракує. Саме в цій щілині багатовалютний сайт бронювання тихо втрачає гроші, і майже ніколи шкоди завдає не курс. Її завдає правило округлення під ним і непоставлене питання: хто несе ризик між котируванням і розрахунком?
Дві валюти, а гроші рухаються лише в одній
Будь-яка крамниця, що продає за кордон, водночас веде дві валютні системи. Сприймати їх як одну — корінь майже всього безладу.
Валюта відображення — та, яку читає мандрівник. Це шар подання. На цій платформі кожен white-label сайт обирає власну валюту за замовчуванням і власний перелік, а ціни конвертуються на клієнті з таблиці курсів окремого тенанта. Ця деталь важить більше, ніж звучить: число на екрані — похідне. Це ваш курс, накладений на ціну suppliera в мить рендеру сторінки, а не ціна, яку хтось зобов'язався тримати.
Валюта settlement — та, у якій гроші справді рухаються: у ній supplier виставляє рахунок, її захоплює gateway, вона лягає на виписку, у ній виходить повернення. Зазвичай одна на постачальника й одна на gateway, і вони не завжди збігаються.
Коли агенція каже «ми продаємо в UAH, EUR і USD», це майже завжди означає: показує три, а settle робить в одній. Це цілком нормальний спосіб вести крамницю; більшість так і працює. Він перестає бути нормальним тієї миті, коли щось далі по ланцюжку сприйме показану ціну як зобов'язання — повернення, виписка sub-agentа, спір — бо показана ціна ніколи зобов'язанням не була. Це був рендер.
Хто несе FX-ризик на багатовалютному сайті бронювання
Між тим, як мандрівник бачить ціну, і тим, як гроші settle, хтось відкритий курсові, що може зрушити. Питання ніколи не в тому, чи існує ця відкритість. Питання — чия вона і чи знає про це власник.
Чесних відповідей три. Несе supplier, коли ви законтрактували net rates у власній валюті й конверсію поглинає він. Несе мандрівник, коли ви списуєте у валюті suppliera, а конвертує емітент картки — найчистіше для вас і саме те, на що мандрівники скаржаться, бо сума у виписці не дорівнює сумі в підтвердженні. Або несете ви, і саме це означає таблиця курсів: ви зафіксували курс, а різниця з реальним курсом у день розрахунку ваша — в обидва боки.
Усі три можна захистити. Уникати слід четвертої, випадкової: ніхто не вирішив, таблиця курсів оновлюється, коли хтось згадає, а позиція виявляється на звірці кварталом пізніше. Якщо ви не можете одним реченням назвати власника й періодичність оновлення — ви в четвертому випадку.
Округлення — рішення про ціну, а не про форматування
Більшість рушіїв за замовчуванням ставить крок 0,01, бо так виглядає десяткова валюта. У туризмі це хибне замовчування, з чотирьох окремих причин.
Перша: не кожна валюта має дрібну одиницю. Японська єна і корейська вона не мають; ціна з двома десятковими на тих ринках читається як артефакт програми, а крок 0,01 на валюті без копійки — арифметика над одиницею, якої не існує.
Друга: конвертовані ціни виглядають конвертованими. UAH 12 236,47 саме себе оголошує результатом множення. Мандрівник, який це читає, знає, що позаду стоїть інше число, і природний наступний крок — шукати те число деінде. Ціна, що лягає на круглий крок, читається як ваша ціна.
Третя — напрям. Округлення до найближчого кроку симетричне: на обсязі помилки гасять одна одну, маржа цього не відчуває. Округлення вгору завжди додає скалку, вниз — завжди одну віддає. І те, й інше — політика, і обидва варіанти нормальні, якщо їх обрали. Провал — обрати випадково, в неправильний бік, а потім дивуватися, чому валова маржа на одному ринку сидить трішки нижче за решту.
Четверта — порядок дій, і саме він справді кусає. Спершу конвертуй, потім наклади markup, потім округли — один раз, наприкінці. Рушій, що округлює net-тариф на конверсії й округлює вдруге після markup, округлив двічі, а вдруге — на числі, яке залишок уже втратило. Помножте це на тариф, податки й ancillaries, які оцінюються окремими компонентами, і сума перестає дорівнювати сумі частин. А це проблема звірки ще до того, як стане проблемою ціноутворення.
Округлюйте або покомпонентно, або на підсумку, але не обидва разом, і подбайте, щоб те, що показує рахунок, сходилося, коли sub-agent вкине його в таблицю. Вкине.
Три способи справді це вести
Моделі нижче — не рівні продукту. Це три різні відповіді на питання «що ви обіцяєте мандрівникові», і кожна несе іншу роботу.
| Конверсія на відображенні | Прайси за ринками | Settlement за ринками | |
|---|---|---|---|
| Що це | Одна валюта settlement; решту рендерить таблиця курсів | Ціни виставлені руками за ринком, не похідні | Gateway і рахунок на кожну валюту |
| Хто несе FX | Ви — між оновленням курсу і розрахунком | Ви — поки не перепризначите ціни | Майже ніхто: валюту тримаєте самі |
| Повернення | Потрібен збережений курс дня продажу, інакше різниця з вас | Чисто: повертається те саме число | Чисто |
| Контроль ціни | Слабкий. Психологія така, яку дасть курс | Повний. Кожну цінову точку обираєте ви | Повний |
| Облік | Одна книга, легко | Одна книга, легко | Кілька книг, справжня робота |
| Коли це доречно | Більшість агенцій, більшість часу | Ринок, де ви справді конкуруєте ціною | Там є персонал, обсяг і банк |
Майже всім варто починати з лівої колонки й переносити один ринок у середню, коли він заслужить на увагу. Права колонка — операційне рішення в технологічному костюмі: якщо сьогодні в компанії ніхто не звіряє дві книги, третя валюта не стане тим, що це почне.
Скільки коштує помилка
Повернення — класика. Бронювання продано за одним курсом, скасовано через шість тижнів і повернуто за сьогоднішнім, бо саме він був у рушія під рукою. Якщо курс зрушив на користь мандрівника, різницю заплатили ви; якщо в інший бік — мандрівник вважає, що ви недодали, і не зовсім помиляється. Зберігайте на бронюванні курс, застосований під час продажу, і повертайте проти нього.
Тихіша — кредит. Кредитні ліміти sub-agentів і settlement-рахунки тут є об'єктами першого класу, а не таблицею — але це перевага лише тоді, коли ліміт деномінований у валюті, у якій той агент справді продає. Ліміт у USD для агента, що продає в SAR, дрейфує з кожним рухом курсу, і дрейф виявляється в найгірший момент — коли ліміт блокує виписку квитка в аеропорту.
Далі повільна. Застаріла таблиця курсів не кидає помилки. Вона продає. Тижнями це може виглядати як надзвичайно добрий обсяг на одному ринку — рівно до закриття місяця, коли з'ясовується, що той обсяг був знижкою, про яку ви не знали. Це аргумент на користь дати й власника на таблиці курсів замість cron job, якого ніхто не читає.
Перш ніж вмикати ринок
Нічого з цього не потребує проєкту. Потрібні записані рішення, саме в такому порядку, перш ніж валюта з'явиться в перемикачі:
- Назвіть валюту settlement для того ринку, а також supplier і gateway, до яких вона стосується. Одне речення.
- Назвіть, хто оновлює таблицю курсів і як часто, і покладіть дату останнього оновлення туди, де її бачить людина.
- Оберіть крок округлення на кожну валюту, а не один глобальний, і окремо перевірте валюти без десяткових.
- Підтвердьте, що порядок такий: конвертувати, накласти markup, округлити один раз — і що компоненти в рахунку все ще дають підсумок.
- Підтвердьте, що повернення йдуть за збереженим курсом дня продажу, а не за сьогоднішнім.
- Перевірте, що кредитні ліміти sub-agentів і settlement-рахунки в тій самій валюті, що й виписки, які ці агенти читають.
Потім вмикайте, продавайте два тижні й звірте ці два тижні один раз руками. Перший ринок — той, що навчить, який із шести пунктів вище ви зробили неправильно.
Поведінка валют — та частина вітрини, яку найлегше показати на демо й найважче проаудитувати, тож варто побачити справжні налаштування, перш ніж навколо них проєктувати. Якщо хочете подивитися, з чим сайт приходить — перелік валют, таблиця курсів, адмінка, де живуть markup, — запустіть один із майстра: він розгортається на субдомені платформи й не просить картку. Якщо ви ще вирішуєте, чи взагалі вести чужий рушій, вайт лейбл чи власна система — аргумент, що лежить під цим текстом, а що насправді дає вайт лейбл сайт покриває решту поверхні.
Курс — публічна інформація. Ваше правило округлення, курс ваших повернень і періодичність оновлення — ні, і саме в цих трьох місцях насправді вирішується маржа транскордонного бронювання.