# IXO Pay Facilitator

> How the IXO Pay Facilitator takes payment for oracle decisions in PAY, USDC on Base or card, how IXO's pros cash out, and what a company's own payouts facilitator does instead.

The IXO Pay Facilitator is the service that takes payment for decisions made by oracles on IXO. A
customer agrees to pay when it sends a claim. The facilitator holds that payment while the oracle
works, and moves money only after the decision engine has delivered a signed decision. It also pays
people out: IXO's pros cash out their credit through it.

Read this page to choose a way to pay, to see where the money goes and what IXO takes, and to decide
whether you need IXO's facilitator or your own payouts facilitator.

## Nothing is charged before a decision

Every payment follows the same three steps:

1. **Offer and verify.** The oracle asks the facilitator for an offer, the customer signs a payment,
   and the facilitator checks it. It reserves the price, holds the card or stores the signed transfer.
   No money moves yet.
2. **Decide.** The oracle produces its facts and the decision engine decides. The engine signs a
   receipt for each claim.
3. **Settle.** The oracle hands the receipts to the facilitator, and only then does money move.

A claim that never gets a receipt is released and nothing is paid. A reservation lapses 24 hours
after verify. An oracle can extend it while a claim waits for human review (up to 30 days), or
release it early when it knows no decision will come. A decision the engine marks `unusable` is
still a delivered decision, and it is paid.

## Three ways to pay

| Way to pay | For | Where the money goes | IXO's share | When money moves |
| --- | --- | --- | --- | --- |
| PAY on the IXO chain | Oracles IXO manages only | From the payer's account straight to the oracle's payee | IXO's take, sent to IXO's revenue account in the same transaction | Once a minute, after the receipt |
| USDC on Base | Third-party oracles | From the payer's wallet straight to the oracle owner's wallet | A fee pulled from the owner's wallet, capped per decision | At settle, after the decision |
| Card | Third-party oracles | Into the oracle owner's own Stripe account | An application fee on the charge | Captured after the decision |

Which ways an oracle offers is set by IXO's plan for that oracle, kept by the decision engine. On
mainnet all three are live: PAY on `cosmos:ixo-5`, card in Stripe live mode and USDC on Base
(`eip155:8453`). Testnet and devnet use Stripe test mode and Base Sepolia (`eip155:84532`).

### PAY: IXO-managed oracles only

PAY is IXO's credit: 1 PAY = 1 USD, on chain as `upay` (1 PAY = 1,000,000 `upay`). The facilitator
offers PAY only when IXO's plan marks the oracle as IXO-managed. A third-party oracle is never paid
in PAY.

The payer's credit sits in the admin account of their subscription. The payer signs a payment
delegation once: a UCAN that names the facilitator, a spending cap and the oracles it may pay. Each
minute the facilitator sends one IXO chain transaction under the payer's send permission. It pays
the oracle's share to the oracle's payee address and IXO's take to IXO's revenue account. IXO never
holds the oracle's share.

```mermaid
flowchart LR
  P["Payer's subscription account"] -->|"oracle's share"| O["Oracle's payee address"]
  P -->|"IXO's take"| I["IXO revenue account"]
```

### USDC on Base: payer to owner

USDC on Base uses x402's standard `exact` scheme, so any standard x402 client for EVM chains can pay.
The payer signs a USDC transfer authorization (EIP-3009) to the oracle owner's Base address, the one
IXO's plan for the oracle names. Verify
checks it and moves nothing. After the decision, IXO's relayer submits the transfer and pays the gas.
The USDC goes straight from the payer to the owner: IXO never holds it. The payment counts as paid
once Base marks its block `safe`.

IXO's fee is collected separately. The oracle owner approves IXO's fee address once, for a bounded
amount (a few months of fees, topped up, never unlimited). Each minute the facilitator pulls the
fees due from the address the customers paid. No fee is ever more than the payment it belongs to.
If a pull keeps failing (allowance or balance too low), those fees are invoiced and USDC is switched
off for that oracle until the owner fixes it. The smallest USDC charge is $0.01.

```mermaid
flowchart LR
  P["Payer's wallet"] -->|"price, after the decision"| O["Owner's Base address"]
  O -->|"IXO's fee, pulled under the owner's allowance"| F["IXO fee address"]
```

### Card: the owner's own Stripe

The oracle owner sets up a Stripe account connected to IXO's Stripe platform, in the Decision
Console. The payer saves a card once. When a claim is accepted, the facilitator places a hold on the
payer's card as a charge on the owner's Stripe account. It captures the hold once every claim in the
offer has its decision, and IXO's fee is taken as a Stripe application fee. A hold with no decision
is cancelled. Card needs at least 50¢ per decision (Stripe's minimum capture).

```mermaid
flowchart LR
  C["Payer's card"] -->|"hold at accept, capture after the decision"| O["Owner's Stripe account"]
  O -->|"application fee"| I["IXO's Stripe platform"]
```

## Cash-out for IXO's pros

Pros who earn PAY credit on asks.world can turn it into money through IXO's facilitator:

1. **Quote.** The pro picks an amount, a method and a country. Methods on mainnet: USDC on Base to
   their own wallet, or their bank account through a Stripe account in their name.
2. **ID check.** Every cash-out needs a verified identity credential. There is no way around it.
3. **One signature.** The pro signs one transaction. It converts the PAY into the same amount of
   USDC on the IXO chain, in their own account, and lets the facilitator take exactly that amount, once.
4. **Pay out.** The facilitator takes the converted amount and pays the pro from IXO's own funds: its
   Base USDC wallet or its Stripe balance. It then returns the converted amount to the converter's
   treasury.

On mainnet a cash-out is $10 to $1,000, one at a time, and there is no fee. If a payout fails, the
pro can retry it or ask for the taken amount back.

```mermaid
flowchart LR
  A["Pro's PAY credit"] -->|"converted 1:1 in the pro's account"| B["Facilitator takes it"]
  B -->|"pays from IXO's funds"| C["Pro's wallet or bank"]
  B -->|"returns the converted amount"| D["Converter treasury"]
```

## Who does what

A company that pays its own people (suppliers, couriers, field workers) for approved claims runs its
own payouts facilitator. It is the same software in payouts-only mode, installed with one command
on Node 24 LTS or newer.

| | IXO's facilitator | A company's own payouts facilitator |
| --- | --- | --- |
| Runs on | IXO's Cloudflare account | The company's own Cloudflare account |
| Keys | IXO's | The company's own, in its secrets file and its Worker |
| Charges for decisions | Yes: PAY, USDC on Base, card | No. Its charging routes answer 404 |
| PAY | Yes, for IXO-managed oracles | No |
| Pays people | Cash-out for IXO's pros | The company's payees, from its own Stripe balance or Base USDC wallet |
| Company payouts | Off on mainnet | On: this is what it is for |
| Who sets limits and approvals | IXO | The company's entity controllers and its payout team |
| License fee | None | None |

IXO's facilitator runs at these hosts. `GET /supported` on each lists the ways to pay it takes.

| Network | Host |
| --- | --- |
| Mainnet | `facilitator.ixo.earth` |
| Testnet | `facilitator.testnet.ixo.earth` |
| Devnet | `facilitator.devnet.ixo.earth` |

## Next steps

<CardGroup cols={3}>
  <Card title="Charge for decisions" icon="hand-holding-dollar" href="/payments/charge-for-decisions">
    The x402 flow for oracle builders and API clients.
  </Card>
  <Card title="Host your own payouts facilitator" icon="server" href="/payments/self-host-payouts">
    Pay your company's people from your own Stripe or Base wallet.
  </Card>
  <Card title="Decision oracle" icon="scale-balanced" href="/build-an-oracle/decision-oracle">
    Build the oracle that the facilitator charges for.
  </Card>
</CardGroup>
