One integration
Your checkout speaks to AGB. AGB speaks to the providers you already hold.
Payment orchestration and infrastructure
AGB is the technical layer between your checkout and the providers you already hold. Your contracts and your rates stay exactly where they are.
The checkout sends one transaction to the AGB routing engine, which holds three outbound routes: Provider A, Provider B and Provider C. Whichever provider takes the attempt passes it to the issuer. Selecting any node explains it in the panel below.
Your checkout makes one call and reads one result, whichever provider ended up taking it.
Holds your rule set and the state of every route. It moves instructions and data, never money.
First in the order for this transaction, under the contract you signed with it directly.
Second in the order, reached without any new action from the customer.
Last in the order you configured, and the point at which the result is reported back either way.
The issuer approves or declines, not AGB. Money moves between your customer, your provider and your account.
Your checkout speaks to AGB. AGB speaks to the providers you already hold.
Rules are yours, versioned, and reversible in one action.
A soft decline is retried inside the same payment attempt.
The same transaction shape and the same status vocabulary, whichever provider answered.
Every state change reaches your endpoint as a signed webhook, with replay.
How it works
Routing picks the provider before the attempt. Cascading retries the ones that fail, within a single payment attempt, before the customer sees anything.
Your contracts, your rates and your funds flow stay with your providers. AGB is the layer that connects them. Routing decisions are made on performance alone, because we have no book of our own to feed.
| Attempt | Provider | Result |
|---|---|---|
| Attempt 1 | Provider A | soft decline |
| Attempt 2 | Provider B | no response |
| Attempt 3 | Provider C | approved |
A simulated sequence, not live traffic.
AGB connects to the providers you already work with. Tell us which ones you hold and we will tell you what is already supported and what connecting the rest involves.
One integration
Every provider returns the same transaction shape, the same status vocabulary and the same error taxonomy.
Add a provider once and it is available to every rule, flow and report.
When a provider changes its API, that is our work, not yours.
A server-to-server API.
AGB passes a reference to a payment instrument issued by your provider, and takes no part in capturing card details.
Transaction records and statuses are normalised across providers into one dataset.
A mismatch between what a provider reports and what your system recorded is surfaced, not silently absorbed.
One dataset across every provider, queryable and exportable.
The same records the routing engine acts on are the records in the report.
The interface
Your team writes against one contract. Which provider answered is a field in the response, not a branch in your code.
# illustrative. the contract is not published yet.
POST /v1/payments
Authorization: Bearer <key>
Idempotency-Key: "3f1c-…-a9"
{
"amount": { "value": "…", "currency": "…" },
"method": "card",
"routing": { "rule_set": "default" },
"passthrough": { /* provider-specific fields, untouched */ }
}
# the same shape, whichever provider answered
{
"id": "pay_…",
"status": "authorised",
"attempts": [
{ "provider": "A", "result": "soft_decline" },
{ "provider": "C", "result": "approved" }
],
"provider_raw": { /* kept alongside, never flattened */ }
}
# every state change, signed, replayable
payment.created
payment.attempt.started provider=A
payment.attempt.declined soft
payment.attempt.started provider=C
payment.authorised ok
payment.captured ok
Transaction lifecycle · the same vocabulary for every provider
In code
One request authorises a payment through whichever provider the rules pick. Provider-specific fields are passed through, not flattened away.
Two views of the same set of connections. In the first, your systems hold a separate integration to each of six providers: six connections to build, six to watch and six to keep current, and they cross one another because each one is its own piece of work. In the second, your systems hold one integration to AGB, and AGB holds the connection to each of the same six providers. The six providers, labelled Provider A to Provider F, are identical in both views; what changes is how many connections you own. The second view is the one shown first. The button below switches between them.
The alternative
| What changes | Direct to each provider | Through AGB |
|---|---|---|
| Adding a provider | A new integration, a new data shape, a new set of edge cases | A routing rule |
| A soft decline | Your code decides what to try next, per provider | Retried inside the same attempt |
| Reporting | One export per provider, reconciled by hand | One dataset across every provider |
| Provider events | One webhook handler per provider | One signed event stream |
| Your contracts | Yours | Still yours. AGB does not sign acquiring contracts |
| Your funds | Settled by your providers | Settled by your providers. AGB never holds money |
Engineering
Everything below is something your team can check before anything is signed. Where a capability is not ready yet, it says so.
The full contract as a machine-readable document. Import it into your client of choice, generate a typed client, or diff it between releases.
Test values that always produce the same result — a soft decline, a timeout, a recovery on the third attempt. Your error handling gets written before you see live traffic, not after.
Every endpoint documented and every change dated, so you can see what moved between releases without asking us.
Provider decline reasons mapped to a single taxonomy, with the raw provider response kept alongside it. Your team writes one handler instead of one per provider.
Every change to a rule is a version with an author and a timestamp. Any previous state can be restored in one action.
A copy of live traffic is evaluated by AGB without touching the transaction your customer is making. You compare outcomes on your own numbers before anything moves.
Incident history and availability. You find out from us, not from your customers.
A working dashboard populated with synthetic data. See the product before a contract, without sending us anything of your own.
Marketing services
A standalone service line. Tell us what you are trying to grow and we will scope it.
What you stand for, and how that gets said.
The work that carries it.
Putting it in front of the right people.
What worked, in numbers you can check.
Getting started
We would rather tell you in week one that your stack does not need us than discover it in month three.
You tell us the providers you hold, the methods you need and the markets you are in. We tell you what is already connected, what is not, and what connecting the rest involves.
Sandbox credentials are issued after basic onboarding checks, so your team can integrate against the real API while commercials are still open.
Start with a percentage split on a single flow, compare against your existing path on your own numbers, and increase it when you are satisfied. Rules are versioned, so any change is reversible.
You have a named contact on your account from day one.
Questions
No. AGB never stores, processes or transmits card data. The card stays between your checkout and your provider.
No. Settlement runs from your providers to you, on your contracts. AGB moves instructions and data.
No. Your commercial terms are between you and your providers. AGB takes no share of a processing rate.
They keep working. Traffic moves gradually, on a percentage split you control, and every rule change is reversible.
Tell us which ones you hold and we will tell you what is already connected and what connecting the rest involves.
Contact
Tell us what your stack looks like and we will tell you what we would connect, in what order, and what it would take.