Why payment providers vary by branch
Online payment providers are usually tied to a specific merchant account, bank, or even a country. A studio chain with branches in different cities — or with different legal entities behind each branch — often needs to route checkout to different providers.
Each Online Payment Option record carries its own location_id, so the same provider can be enabled at one branch and absent at another. Turning on the settings_payment_options_location_enabled flag tells the admin to expose this per-branch view rather than treating every option as global.
Adding a provider for one location
Go to Admin → Custom Features → Online Payment. With the per-location flag on, use the location selector in the admin header to choose the branch you're configuring, then click Add and pick a provider — for example Stripe, LINE Pay, ECPay, NewebPay, PAYUNi, or SunPay — and enter the credentials issued for that branch.
The new record is saved with the selected branch's location_id. Repeat for each branch that needs its own setup. A provider can exist multiple times — once per location — each with its own keys.
PAYUNi needs Merchant ID, HashKey and HashIV. SunPay needs Merchant ID, SHA2 key and RSA public key; configure its notification and completion URLs for the matching merchant account as well.
See Online Payment for the full provider list and setup details.
What customers see at checkout
At checkout the storefront looks up the cart's branch — usually the location the customer chose when picking a class or appointment — and loads only the Online Payment Options whose location_id matches.
So a customer booking at the Taipei branch might see Line Pay and ECPay, while a customer at the Tokyo branch sees only Stripe. If a branch has no payment option records at all, checkout falls back to whatever shared providers were configured before per-location mode was turned on.
PAYUNi and SunPay require TWD and support one-off card purchases. Choosing a branch does not override the business currency or merchant-country restrictions.
