Settlement
Settlement is the process of converting a merchant’s on-chain USDC balance to USD in their bank account. This happens automatically — integrators don’t need to manage it.How Settlement Works
Payment Received
Customer sends USDC to the merchant’s payment address. Fees are split on-chain instantly. The net amount is available in the merchant’s on-chain wallet.
Withdrawal Initiated
On the configured schedule (default: weekly Monday 8am EST), USDC is transferred from the merchant’s on-chain wallet to our banking partner for conversion.
USD Conversion
Our banking partner (Bridge, a Stripe company) converts USDC to USD at a 1:1 rate. No conversion fee — the stablecoin peg ensures exact dollar equivalence.
Settlement Schedules
| Schedule | Description | Availability |
|---|---|---|
| Weekly (Monday) | Automatic transfer every Monday at 8am EST | Default |
| Manual | Merchant triggers from dashboard anytime | Available to all merchants |
Non-Custodial Architecture
Stable Genius never holds merchant funds. Here’s the custody chain:- Customer → Merchant proxy: USDC is sent directly to a smart contract the merchant controls.
- Merchant proxy → Settlement: An authorized operator (Stable Genius) initiates the withdrawal, but only to the merchant’s pre-configured bank account.
- Emergency withdraw: Merchants can call
emergencyWithdraw()directly on their proxy contract to retrieve funds to their own wallet at any time, bypassing Stable Genius entirely.
Settlement Timing
| Event | Typical Time |
|---|---|
| Payment confirmation on-chain | 3-15 seconds |
| Fee split execution | Immediate (same transaction) |
| Weekly automatic withdrawal | Monday 8am EST |
| USDC → USD conversion | Same day |
| ACH deposit to bank | 1-3 business days |
| Total: payment to bank | 1-3 business days after withdrawal |
For Integrators
Settlement is fully managed by Stable Genius. As an integrator, you:- Don’t initiate withdrawals
- Don’t manage USDC-to-USD conversion
- Don’t handle bank transfers
- Do receive
settlement.completedandsettlement.failedwebhook events if you want to track settlement status - Do have read access to settlement history via
GET /v1/transactions