/api/v1. Both
surfaces drive the same backend, and every on-chain action executes for real
on the environment’s ledger: Ethereum Mainnet (chain ID 1) in
production, Sepolia (chain ID 11155111) on the
sandbox.
The full AroPay journey: from provisioning to programmatic money movement.
The building blocks
Two rails, one API
Money in AroPay lives on two rails that stay 1:1 with each other:Public rail
The stablecoin, a standard ERC-20 (a test stable on the sandbox). Balances
and transfer amounts are visible to anyone on a block explorer.
Confidential rail
cAROUSD, an ERC-7984 confidential token. Amounts are encrypted with fully
homomorphic encryption (FHE), so the chain records that value moved, never
how much.
The dashboard is an API client
Every dashboard feature (funding, minting, transfers, receipts, settings) calls the same/api/v1 endpoints you integrate against. That has two
practical consequences:
- Parity is guaranteed. If the UI can do it, your integration can do it with the same request shapes.
- You can mix surfaces freely. Kick off a mint from a script, watch it confirm in the dashboard, download the receipt from either.
The operator
The operator is a platform-owned wallet that does the work your integration shouldn’t have to:- pays out faucet requests on the sandbox (test stablecoin + a gas top-up),
- mints cAROUSD in float mode,
- settles redemptions by paying stablecoin back to your wallet.
FAILED with
errorCode: "faucet_failed"; if it runs low on gas or payout liquidity,
redemptions wait in SETTLING until it is topped up rather than failing. See
Troubleshooting.
Mint modes: backed vs. float
Deployments run in one of two mint modes. The API is identical in both; only the on-chain mechanics differ.Which mode your deployment uses is an operational setting. In
backed mode a
mint requires the custodial wallet to actually hold stablecoin; in float mode
the operator mints directly. Either way you call POST /mint.Server-side FHE
Confidential operations (encrypting mint amounts, decrypting custodial balances, publicly decrypting redeem burns) run server-side through the Zama Protocol relayer against the Zama deployment for the environment’s chain (Mainnet in production, Sepolia on the sandbox). Two things follow:- You never handle FHE keys or ciphertexts. The API takes and returns plain decimal strings.
- The first confidential call after a deployment restart can be slower while FHE keys are fetched. Subsequent calls are faster.
Host isolation
AroPay runs on its own hosts:aropay.aro.media in production and
dev.aropay.aro.media for the sandbox. AroPay routes only resolve there, and
admin routes 404 on AroPay hosts; the two surfaces are isolated at the proxy
layer.