FlowwsPayment routing for independent ecommerce

Every payment takes the best route.

Total control of your payments, in one API. Connect the processors you already have, route by card country, BIN, brand or amount, and let a backup save the decline.

Runs on Stripe and Airwallex. Card vault by Basis Theory.

Northgate Cycles/Payments/pay_8Qf2kLx9
test mode
Approved today94.2%
3-D Secure frictionless88.6%
Median time to answer1.3 s
Payment£74.94 GBPVisa ending 4242
VaultCard tokenisedtok_c41e…
3-D SecureAuthenticatedFrictionless
Routing policyUK cards in GBP
  • Stripe UK 70%
  • Airwallex 30%
  • Circuit breaker closed
ProcessorStripe UKApproved in 1.1 s
ProcessorAirwallexNot needed
Add a processorNew routes need no code change
Works withStripeAirwallexVisaMastercardAmerican ExpressApple PayGoogle PayBasis Theory
1integration in front of every processor you connect
0card numbers on your server, or on ours
286automated tests on the path your money takes
2.5%one rate, with the processor's fee inside it

Every switch earns its place

Each one adds approvals, saves a declined payment or stops fraud. Turn them on per shop and change them without a deploy.

Payment flow for Northgate Cycles6 of 6 on

  1. Apple Pay and Google Pay
    on your own domainyour shop's name on the sheet
  2. Card
    vaulted onceusable on 2 processors
  3. 3-D Secure
    challenge only if the bank asksresult carried to any processor
  4. If the card is British and the currency is GBP
    Stripe UK 70%Airwallex 30%
  5. If the first processor declines softly
    try the other one2 attempts at most
  6. If a processor errors 3 times in a row
    skip it for 10 minutes
Route by BINRoute by card countryRoute by amountRoute by currencyRoute by card brandWeighted splitOrdered failoverProcessor auto-pauseDecline rules per shopAttempt limitsDry runsRoute by BINRoute by card countryRoute by amountRoute by currencyRoute by card brandWeighted splitOrdered failoverProcessor auto-pauseDecline rules per shopAttempt limitsDry runs
3-D Secure challenge modeSaved cardsRefundsIdempotency keysSigned webhooksTest and live modesCard-testing limitsBot checkApple Pay domainsPer-key rate limitsRequest ids3-D Secure challenge modeSaved cardsRefundsIdempotency keysSigned webhooksTest and live modesCard-testing limitsBot checkApple Pay domainsPer-key rate limitsRequest ids

Every attempt on the record

Each attempt is stored with its processor, its outcome and the bank's reason, and the API hands it back to you. The figures below are sample data from a test shop.

Approval by processor Last 14 days

Final approval94.2%+3.1 with backups
First attempt91.1%
Saved by a backup£4,318
96%92%88%84%
Stripe UKAirwallex

Why payments were declined 312 attempts

  • Not enough funds38%
  • Bank refused, no reason24%
  • 3-D Secure failed17%
  • Card expired12%
  • Suspected fraud9%

Sample data from a test shop.

What it refuses to do

A router that moves money has to be boring about it. These rules are enforced in the payment path and pinned by tests, so they hold on the worst day as well as the best.

It never charges a buyer twice.

One writer holds each payment. Every call to a processor carries the same idempotency key, so a retry is the same request, not a second charge.

It never guesses when a processor goes quiet.

An unknown outcome is not retried somewhere else. The same attempt is replayed until the processor answers, then the payment moves on.

It never accepts the wrong amount.

A success for a different amount or currency than you asked for is refused and raised as an alert.

It never tells you half the story.

The payment status, the ledger entry and the message to your server are committed together, or not at all.

Everything a checkout needs, behind one key

Your pay button stays on your page, in your design. No processor script loads in the buyer's browser.

Cards, vaulted once

Visa, Mastercard and Amex, typed into fields you style. The number becomes a token before it reaches your server.

Apple Pay and Google Pay

On your own domain, with your shop's name on the sheet, and routed like any other card.

3-D Secure

Run once at the vault and carried to whichever processor takes the payment.

Subscriptions

Renewals, retries and card updates, on any processor you connect.

Signed webhooks

Retried until your server answers, and never sent twice at once.

Your checkout, our payments

  • You design the page.We run tokenisation, 3-D Secure and the payment behind it.
  • One request takes a payment.The same request with the same key is always the same payment.
  • Rehearse before you charge.A dry run returns the exact request a processor would receive, without sending it.
  • Test and live are separate.Separate keys, separate vaults, the same API.
Take a paymentRefundWebhook
curl https://api.flowws.ai/v1/payments \
  -H "Authorization: Bearer fpk_test_…" \
  -H "Idempotency-Key: cart_20418" \
  -d '{
    "amount_minor": 7494,
    "currency": "gbp",
    "vault_token": "tok_c41e…",
    "merchant_reference": "cart_20418",
    "return_url": "https://shop.example/paid"
  }'

# 201 Created
{
  "id": "pay_8Qf2kLx9",
  "status": "succeeded",
  "amount_minor": 7494,
  "currency": "gbp"
}

One rate

2.5%

Of each successful payment, with the processor's own fee already inside it.

  • Declined and cancelled payments cost nothing
  • The fee on a refund is returned in proportion
  • The split is on the ledger the moment the sale is made

Card numbers never reach you, or us

The buyer's card goes from their browser straight into a PCI Level 1 vault run by Basis Theory. Your server and ours only ever handle a token.

PCI DSS Level 1 vault3-D Secure 2Strong Customer Authentication
  • Your PCI scope stays at the lightest level
  • Separate vaults for test and live
  • Keys are per shop, per mode, and rate limited

Questions before you switch

Do I have to leave my current processor?

No. You connect the accounts you already have and add more when you want a backup. Your money still settles from your processor to your bank.

What happens to my saved cards and subscriptions?

They live in the vault, not at a processor, so every card works on every processor you connect. You can move volume without asking a single customer to re-enter a card.

How long does it take to go live?

One API request takes a payment, and a dry run shows you exactly what a processor would receive before you charge anyone. Most of the work is your checkout page, which stays yours.

Does this put me in PCI scope?

Card numbers go from the buyer's browser straight into a PCI Level 1 vault. Your server only ever sees a token, which keeps you at the lightest level of PCI.

What does it cost?

2.5% of each successful payment, with the processor's own fee already inside it. Declined and cancelled payments cost nothing.

Put a second processor behind your checkout.

Or write to hello@flowws.ai and tell us which processors you use.