POST /transfer moves money out of a custodial wallet on either rail. One
field (type) decides whether the amount is public or encrypted.
type: "public"
A standard ERC-20 transfer of the test stablecoin. Amount visible on-chain,
cheapest and fastest.
type: "private"
A cAROUSD
confidentialTransfer. The amount is FHE-encrypted; observers
see the transfer, never the value.Make the call
201 confirms the transfer is validated and queued. A background worker
signs and broadcasts it (PENDING, txHash set) and tracks the receipt;
poll to completion until CONFIRMED or
FAILED.
Request fields
The sending wallet needs a sufficient balance on the matching rail:
public stablecoin for
public, cAROUSD for private (mint first if needed),
plus ETH for gas.
Privacy characteristics
Forprivate transfers, the amount is encrypted client-side of the chain;
that is, AroPay’s background worker produces the encrypted input and proof
server-side and submits it after your request has returned. On-chain observers
see sender, recipient, and the fact of a transfer; the value stays ciphertext. The recipient (or AroPay, for
custodial recipients) decrypts their updated balance through the relayer.
Private transfers cost more gas and take a bit longer than public ones;
encrypted inputs are bigger and verification is heavier. Budget for that in
UX, not in correctness.
Failure modes
Request problems fail thePOST; execution problems fail the transaction row
later (status: "FAILED" with error and errorCode). A failed transfer
never moved funds.