Skip to main content
This walkthrough covers the full sandbox loop: sign in, create an API key, spin up a custodial wallet, fund it from the faucet, mint cAROUSD, send a private transfer, and redeem back to test stablecoin.
You need an AroPay account provisioned by your Aro Media contact; there is no self-serve sign-up, so request access before starting. This guide runs against the Sandbox environment (dev.aropay.aro.media, Sepolia): funds are test-denominated and the faucet is available. The same calls work on Production (aropay.aro.media, Ethereum Mainnet) with your production credentials, except the faucet, which is sandbox-only; production wallets are funded by real deposits.
1

Sign in and set your password

Open dev.aropay.aro.media and sign in with the email and one-time temporary password you received. The sandbox forces a password rotation on first login. Pick a password with at least 10 characters including an uppercase letter, a lowercase letter, and a digit.
While you’re in Settings, consider enabling two-factor authentication or adding a passkey.
2

Create an API key

Go to Settings → API keys and create a key. The plaintext value (prefixed aro_sk_) is shown exactly once, so store it in your secret manager now.Export it for the rest of this guide:
API keys can be created and revoked only from a browser session, never with another key. See API keys for limits and expiry.
3

Create a custodial wallet

Custodial wallets are generated server-side, and AroPay signs transactions for them, which is exactly what makes key-driven money movement possible.
Save the wallet ID:
4

Fund it from the faucet

The faucet sends test stablecoin and tops up ETH for gas in one call (sandbox-only; on production, fund wallets by depositing to their address):
The response is a transaction object in status QUEUED: the request has been accepted and a background worker submits it to the chain within a few seconds. Save its id and poll GET /transactions/{id} until the status is CONFIRMED (or FAILED) before moving on; the mint below needs the faucet’s stablecoin and gas to have landed. Faucet requests count against a rolling 24-hour cap per account.
5

Mint cAROUSD

Convert 100 units of public stablecoin into encrypted cAROUSD:
Amounts are always decimal strings in human units: "100", not an integer and not wei.
6

Send a private transfer

Send 25 cAROUSD to a counterparty. On-chain, the amount is FHE-encrypted; observers see that a transfer happened, but not how much:
Switch "type" to "public" for a standard ERC-20 stablecoin transfer.
7

Redeem back to stablecoin

Burn 10 cAROUSD and receive test stablecoin 1:1. Redemptions settle asynchronously:
The transaction moves QUEUED → PENDING → SETTLING → SETTLED; the payout hash lands in settlementTxHash. Every money-movement call in this guide returns 201 with a QUEUED transaction and is executed by a background worker; poll each one to a terminal status (CONFIRMED, SETTLED, or FAILED) the same way as the faucet step above.
8

Check balances and history

Balances come back per wallet as a triple: normal (public stable), confidential (cAROUSD, decrypted server-side for custodial wallets), and total, plus the wallet’s ETH gas balance.

Where to go next

How AroPay works

Understand the rails, the operator wallet, and backed vs. float minting.

Transactions & lifecycle

Statuses, background execution, and how to poll like a good citizen.

Authentication

Sessions vs. API keys, and which endpoints require a browser session.

API reference

Full schemas and an interactive playground for all 44 endpoints.