Skip to main content
The Ripio Bridge moves wFiat stablecoins between chains with a burn-and-mint model: tokens are burned on the source chain and minted on the destination chain by the bridge operator. Integrating takes a single contract call, with no SDK required.
The bridge is a smart contract and Ripio does not intermediate in bridge transactions. To bridge from a browser instead of code, use bridge.ripio.com.

How it works

1

Deposit on the source chain

You call depositForBridge() on the source chain. The token amount, minus the route’s fixed fee, is burned and a BridgeDepositInitiated event is emitted.
2

Finality

The bridge operator observes the event and waits for source-chain finality.
3

Mint on the destination chain

The operator mints the bridged amount to your recipient on the destination chain and emits BridgeMintFulfilled. Minting is idempotent: exactly one mint per deposit.
The BridgeDeposit contract is deployed at the same address on every supported chain and is verified on every explorer. Source code: BridgeDeposit.sol on GitHub.

Addresses

BridgeDeposit

on every chain:

Stablecoins

Each token uses the same address on every chain that supports it, and all of them have 18 decimals.
HyperEVM only supports wARS and wBRL on the bridge so far. Check routeConfigs before assuming a token and chain pair is live.

Quickstart

The examples below use viem, but any EVM tooling works.

0. Constants and ABI

1. Check the route and its fee

Every route (token and destination chain) must be enabled, and carries a fixed fee that is deducted from the deposited amount. Check it before depositing:
check-route.ts
You can also see the enabled routes and their current fees, read live on-chain, at bridge.ripio.com/developers.

2. Approve and deposit

The caller must first approve the BridgeDeposit contract for at least amount: the contract burns through burnFrom and pulls the fee through transferFrom.
deposit.ts

3. Watch for fulfillment on the destination chain

watch.ts

4. Check mint capacity before large transfers

Minting is subject to a daily cap per token, per chain. Check the capacity on the destination chain before large transfers: deposits above the remaining capacity are queued until the cap resets.
capacity.ts

Function reference

depositForBridge

Requirements
  • The ERC-20 allowance for the BridgeDeposit contract must be greater than or equal to amount.
  • The (token, destChainId) route must be enabled. Check it with routeConfigs.
  • Minting on the destination chain is subject to a daily cap. Check remainingMintCapacity(token) on the destination chain: deposits above the remaining capacity are queued until the cap resets.

routeConfigs

Returns whether the route from the current chain to destChainId is enabled for token, and its fixed fee in token units (18 decimals).

remainingMintCapacity

Returns the remaining mint capacity for token on the current chain, the daily maximum and the amount minted today. Capacity resets daily.

Events

BridgeDepositInitiated

Emitted on the source chain.

BridgeMintFulfilled

Emitted on the destination chain. Fulfillment is idempotent: exactly one mint per (sourceChainId, sourceDepositId) pair.

Tracking and status API

For off-chain correlation, generate a unique clientDepositId per transfer, for example keccak256(abi.encodePacked(sender, timestamp, yourInternalId)), and match it against the BridgeDepositInitiated event. You can also poll the public status API with the deposit transaction hash:
GET /api/operations/{txHash} — 200
Amounts are returned as raw integer strings with 18 decimals. The status field follows this lifecycle:

Questions?

Write to [email protected] and the team will walk you through a test integration.