Payment routing between wallets in QryptoPay
QryptoPay can send a new payment to a specific wallet instead of a random one from the pool — following an ordered list of rules you set up in the Payment flows tab of the merchant page. This comes in handy when you run several active wallets on the same network and want the money to split between them by rule rather than by chance — for example, payments from one region go to one wallet and payments from another region go to a different one, or large orders are kept separate from small ones.
Rules only start deciding anything once a network has at least two active wallets — Manage wallets in QryptoPay covers adding one and switching between networks. Only one Monero wallet can be active at a time, so routing between several XMR wallets doesn't apply.
The Payment flows tab
Routing settings no longer live on a wallet — they're on the merchant page, in the Payment flows tab (right after Payment page). A network switch sits at the top: rules and the fallback route are configured per network, and switching networks doesn't carry either over.
How a rule is built
A rule expands into an if … then block:
- an optional Rule name field — up to 60 characters, a label for the merchant only. It has no effect on which wallet gets picked; leave it empty and the collapsed rule shows Unnamed instead.
- one or more condition groups, joined by or — the rule fires as soon as any one group matches in full. A new group is added with the Add "or" group button.
- rows inside a group are joined by and — a group only counts once every one of its rows is true. The interface says as much right next to the if label: "all rows are true" while there's one group, "any group is true" once there's more than one.
- the destination wallet sits under the condition, next to the caption the payment goes to wallet — that's the then half of the rule.
A row inside a group is one of two kinds, added through the Add row menu:
- Store parameter — a "key = value" pair. The key is the same one you pass in
metadatawhen generating a payment link (see Store integration with QryptoPay) — for example,location. The value is matched case-insensitively:usaandUSAare the same thing. You can add as many of these rows to a group as you like. - Order amount — From and To fields, a range in dollars, net of the crypto payment fee. A group can only carry one of these: while it has one, adding a second isn't offered.
The upper amount bound is exclusive
The To field's label no longer spells this out, so here it is in words: the upper bound of the range is excluded from the condition — an order for exactly that amount doesn't match this row and is checked further, by the next group or the next rule. A range from $0 to $500, for example, catches a $499.99 order but not one for exactly $500. Leave To empty for no upper bound.
Rule order is the priority
The list reads top to bottom, and the payment goes to the first rule whose condition matches — there's no separate priority number in the interface anymore. Reorder rules with the ↑ and ↓ buttons on each row.
If the wallet a rule points to gets disabled, that rule is skipped when matching and the next rule in the list gets a chance. Delete the wallet outright, and the rule is removed along with it.
When no rule matches
This isn't a block set apart from the rules — it's the footer of the same list: the If no rule matches toggle. Two modes:
- Random wallet from the pool — the default: the payment goes to a random active wallet on the network, the same as it would without routing at all.
- Selected wallet — every unmatched payment goes to the same wallet, which you pick next to it.
⚠️ An unavailable wallet means a declined payment
If the selected wallet becomes unavailable, the customer's payment will fail.
In other words, Selected wallet mode doesn't fall back to the pool as a safety net: disable or delete the assigned wallet, and a customer whose payment didn't match any rule simply can't pay, instead of landing on a random pool wallet. Keep this mode on only while the assigned wallet is definitely active.
Checking where a payment went
On the payment card, right under the QryptoPay wallet block, the panel shows why the payment ended up there:
- if a rule matched — a line like "Routing rules: location = dubai · amount from $500 to $5000";
- if the payment went to the default wallet — "Wallet selected by default";
- if the payment came from the general pool, or was accepted before this feature existed — there's no line at all.
This is a snapshot of the decision at the moment of payment, not the rules' current setup: change a rule later, and the explanation on already-accepted payments stays the same.
What's next
- Manage wallets in QryptoPay — balances, fee reserves, disabling a wallet.
- Store integration with QryptoPay — how to pass the
metadatathat store-parameter conditions rely on. - Currency fees in QryptoPay — the fee is calculated from the same order amount the amount condition checks against.