Routing and PSP eligibility: the fields that decide the provider

Omno picks a provider for every transaction with routing rules, limited by PSP eligibility. Eligibility removes providers that do not match the customer's groups and KYC levels (customer verification levels); routing then chooses among the rest. You influence it with customer.customerGroups, customer.kyc.kycLevels, kycVerified and previousTransactionCount, or pin it with routerId or directRouteId.

Updated

On this page5 sections

How does Omno choose a provider?

In two layers that work together. Eligibility filters the providers a customer may use, based on the rules attached to each provider. Routing then selects one provider from those that remain, using your router configuration. Routing rules can use card BIN, country, currency, amount, browser information or customer segment, split traffic between providers by share, cap each provider and keep returning customers on the provider that worked. If a provider is unavailable or rejects the request, the payment moves to the next provider in the rule until one accepts. The customer only sees, and is only routed to, providers whose rules match them.

Which fields drive eligibility?

FieldSent onEffect
customer.customerGroupsHosted checkout session, pay-in, payoutMatched against each provider’s group rules
customer.kyc.kycLevelsHosted checkout session, pay-in, payoutThe customer verification level, matched against each provider’s KYC rules
kycVerifiedHosted checkout session, pay-in, payoutNarrows the set to providers that accept or require verified customers
previousTransactionCountHosted checkout session, pay-in, payoutFeeds first-purchase and similar routing rules
{
  "customer": {
    "externalUserId": "customer-48213",
    "customerGroups": ["vip", "tr-retail"],
    "kyc": { "kycLevels": ["level-2"] }
  },
  "kycVerified": true,
  "previousTransactionCount": 0
}

How do I pin a transaction to a route?

With one of two parameters, never both:

ParameterUsed byEffect
routerIdHosted checkout, pay-in, payoutProcesses with a specific router
directRouteIdDirect Link pay-in and payoutProcesses with a specific Direct Link route, with no Omno UI

If neither is set, default routing applies.

How should I treat new and returning customers?

Keep new customers on conservative routes and open more providers as trust grows. Send previousTransactionCount: 0 for a first purchase so first-purchase rules apply, keep unverified customers in a KYC level whose providers accept them, and move them up a level when verification completes. Payouts follow the same rules, which keeps them on providers that can carry them.

Where do I see why a provider was chosen?

In the routing-decision log on the dashboard, which records the provider chosen for each transaction. Use it with your webhooks to reconcile by route.

Frequently asked questions

Can I send both routerId and directRouteId?

No. Provide at most one. routerId pins a hosted checkout session, pay-in or payout to a specific router; directRouteId pins a Direct Link pay-in or payout to a specific route. With neither, default routing applies.

Why does a customer see fewer payment methods than I configured?

Because eligibility filters providers by the customer's groups and KYC levels. A provider restricted to verified or higher-level customers is not offered until the customer qualifies.

What is previousTransactionCount used for?

First-purchase rules and similar logic. It lets you route a customer's first payments differently from those of a returning customer.

Which requests accept these fields?

The hosted checkout session, pay-in and payout create requests all accept kycVerified and previousTransactionCount, along with the customer's groups and KYC levels.

esc
↑↓ to move ↵ to open All results