Payment routing across our own network and partner routes

Payment routing at ATLAS decides which route serves each of your orders. Our own trader network takes the traffic first, partner routes take over where it runs short, and the weights and failover order are set for your account in each market.

Two kinds of route behind one API

ATLAS builds and runs its own trader network. Vetted traders, each with a USDT deposit, take payments on local accounts in the ATLAS network, and our ledger records every one of them. This is the first kind of route, and the one we control end to end.

Confirmation on this route runs on our own tools as well. ATLAS confirms the incoming payment from the receiving bank's notification. Before a pay-in closes, it checks the amount, the bank reference and the time.

The second kind is a partner route: another provider's processing, connected to ATLAS as a cascade. Where our own network runs short in a market, traffic cascades to partner routes, with automatic failover between routes.

You don't integrate twice. Your server sends the same pay-in request, POST /api/merchant/pay-in, whichever route ends up serving the order, and gets the same statuses and webhooks back.

How an order finds a trader in our network

Inside our network, each pay-in goes to a trader with the right weight and a free receiving account. The weight sets each trader's share of your traffic. A receiving account is free when that exact amount isn't already waiting on it, because each one holds only one open order per exact amount.

Round amounts are common, so the same figure can be open on every receiving account at once. If amount adjustment is switched on for your account, a UPI order in that position is served at the nearest free amount within your configured range; with it off, which is the default, the order gets the exact amount or NO_CARD_AVAILABLE.

Other limits narrow the choice further. Each receiving account has per-order and turnover limits, and an account can be taken off traffic at any time. The method you request matters too, because the rail decides which receiving account can serve the order: in India upi and upi_intent share one rail and the same receiving accounts, while imps has its own.

Pay-outs go to a shared pool, and each one is executed from it. If verification sends one back, it returns to that pool.

Weights and failover order, per merchant and per market

Routing is set for each merchant, and within each merchant for each market. For your account, ATLAS sets how much traffic goes to the internal trader pool and how much to partner routes, and in what order routes take over when one can't. India can run on one set of weights while Venezuela runs on another.

Weights spread the traffic between routes that are all working. The failover order says what happens when one stops: the next route in line takes the order. Both settings live with your account, so they change without any change to your code.

In practice, a market can run on our trader pool with a partner route behind it. Orders spread across the traders by weight while the pool has room. When it runs short, the next orders cascade to the partner route.

When conversion dips on a route

A route that accepts orders can still convert poorly. ATLAS watches conversion on every route in its own console, and when it dips, our team moves the traffic. Technical and operations support runs around the clock.

What you control and what ATLAS runs

Your side is the order itself. You choose the market and the method for each pay-in, from the methods contracted for your merchant account; GET /api/merchant/payment-methods?geo={geo} lists them. Your account has a minimum and a maximum amount, and orders outside them are refused with AMOUNT_BELOW_MINIMUM or AMOUNT_ABOVE_MAXIMUM. You also decide whether to ask for the hosted page and how long each order lives.

Our side is everything between your request and the money. ATLAS runs the trader pool and its receiving accounts, sets the weights and the failover order, connects and watches the partner routes, and moves traffic when a route weakens. To change how your traffic is routed in a market, tell us what you need there and we set it up.

You set:

  • market and method per order ·
  • amount limits for your account ·
  • hosted page or your own screen ·
  • order lifetime

ATLAS runs:

  • trader pool and receiving accounts ·
  • weights and failover order ·
  • partner routes ·
  • monitoring and rerouting

What routing changes in your integration

The create response carries only the keys that apply to the order, so read them by name. A few keys exist only on orders served by our trader pool: the UPI deep link upiIntentLink and the PhonePe and Paytm links in upiAppLinks are left out on orders routed to a partner. In Venezuela it works the other way round: cbu appears only when a partner route issues a destination account number next to the Pago Móvil details.

The hosted payment page works on the trader pool only. If an order would be served by a partner route, a request with checkout returns 400 CHECKOUT_NOT_SUPPORTED, no pay-in is created, and you retry without checkout.

When no route has capacity at that moment, the create call returns 400 NO_CARD_AVAILABLE; retry after a short delay. If a retry reaches ATLAS twice, idempotency on merchantOrderId makes it safe: repeating it for an order that hasn't failed returns the original pay-in.

Example: no capacity right now
400 Bad Request
{  "error": "NO_CARD_AVAILABLE",  "message": "No payment card is available to process this request at the moment"}

FAQ

What is payment routing?

It is the choice of which route serves each payment. At ATLAS that means our own trader network or a partner route, chosen by the weights and failover order set for your account in each market.

How does payment failover work at ATLAS?

Where our network runs short, traffic cascades to partner routes with automatic failover between routes, in the order set for your account. When conversion dips on a route, our team also moves traffic by hand.

Can routing differ by market?

Yes. Weights and failover order are set per merchant and per market.

Do I need a separate integration for partner routes?

No. You send the same pay-in request and receive the same statuses and webhooks. Some optional keys, such as upiIntentLink, appear only on orders served by our trader pool.

Is ATLAS a payment orchestration platform?

ATLAS routes your traffic between its own network and partner routes and operates both, and you connect to all of it through one API.

Why is the hosted page unavailable for some orders?

It runs on our trader pool in India and South Korea. An order that would go to a partner route gets CHECKOUT_NOT_SUPPORTED, and you retry without checkout.

What does NO_CARD_AVAILABLE mean?

No route has capacity for that order at that moment. Retry after a short delay.