Skip to main content
Minting converts public stablecoin into cAROUSD at 1:1; after a mint, value that used to be visible on-chain becomes an encrypted balance. Minting requires a custodial wallet: AroPay signs the on-chain calls with the wallet’s key.

Prerequisites

  • A custodial wallet with ETH for gas (faucet covers this).
  • In backed mode, the wallet must also hold enough public stablecoin to deposit. In float mode the operator mints directly, so a stablecoin balance in your wallet is not required. See mint modes.

Make the call

amount is a required decimal string in human units. The call returns 201 as soon as the request is validated and queued; a background worker encrypts, signs, and submits the mint (PENDING, txHash set) and confirmation usually lands within a minute. Poll GET /transactions/{id} until the status is CONFIRMED or FAILED.

What happens on-chain

  1. Your wallet approves the commitment contract to spend the stablecoin.
  2. The wallet calls commitDeposit: stablecoin is locked in the commitment, and the equivalent cAROUSD is minted to the wallet as an encrypted amount.
Every cAROUSD in circulation is collateralized by stablecoin held in the contract.
Either way, the encryption of the minted amount happens server-side, in the background worker: you send "100", AroPay produces the FHE ciphertext and proof after the request has already returned.

Verify

In backed mode you’ll see normal decrease and confidential increase by the minted amount; in float mode only confidential moves.

Common failures

Problems with the request itself fail the POST; problems executing on-chain fail the transaction row later (status: "FAILED", with error and errorCode). Either way, a failed mint moved no funds.
The first confidential operation after a deployment restart fetches FHE keys and can be noticeably slower. Don’t tune timeouts to that first call.
Next: send a private transfer or redeem back to stablecoin.