Overview
The integration automatically imports:- Blockchain wallets and their addresses across all supported networks
- Deposits and withdrawals with full transaction details (hash, block number, fees, asset info)
- Real-time updates via webhooks for transaction state changes, new wallets, and AML screening results
How It Works
- Scheduled Sync - Corsa periodically fetches all wallets and transactions from your Utila vault.
- Real-Time Webhooks - Utila sends webhook events to Corsa in real time as activity occurs.
- Automatic Classification - Transactions are classified as deposits or withdrawals based on address ownership.
Supported Blockchains
| Network | Mainnet | Testnet |
|---|---|---|
| Ethereum | Yes | Yes (Sepolia) |
| Bitcoin | Yes | Yes |
| Polygon | Yes | - |
| Solana | Yes | Yes (Devnet) |
| Tron | Yes | - |
| Avalanche (C-Chain) | Yes | - |
| Arbitrum | Yes | - |
| Optimism | Yes | - |
| Base | Yes | - |
| BNB Smart Chain | Yes | - |
Data Synchronization
Wallets
- Wallets are uniquely identified by a reference ID derived from the Utila wallet address name.
- Multi-network wallets generate a wallet record per network.
- Wallets are automatically associated with the corporate client record representing your vault.
- Utila-specific metadata (wallet ID, additional details) is preserved.
Transactions
Each record includes: transaction hash, block number, amount, mining fees, asset symbol, source/destination addresses, blockchain network, and full status history.- Deposits: Transactions where the destination address belongs to your vault.
- Withdrawals: Transactions where the source address belongs to your vault.
Sync Modes
| Mode | Description |
|---|---|
| Full Sync | Fetches and imports all wallets and transactions. Use for initial onboarding or reconciliation. |
| Partial Sync | Imports only transactions created after the last sync timestamp. Used for regular scheduled syncs. |
Real-Time Webhooks
| Event | Description |
|---|---|
| Transaction Created | Creates a deposit or withdrawal record in Corsa. |
| Transaction State Updated | Updates the corresponding record status. |
| AML Screening Result Ready | Syncs the transaction with screening results. |
| Wallet Created | Creates corresponding blockchain wallet records. |
| Wallet Address Created | Creates a new blockchain wallet record for that address. |
Transaction Status Mapping
| Utila State | Corsa Status |
|---|---|
CONFIRMED, MINED | Success |
FAILED, DROPPED | Failed |
CANCELLED, EXPIRED, DECLINED, DECLINED_BY_AML_POLICY, REPLACED | Cancelled |
| All other states | Pending |
Setup
Prerequisites
- A Utila account with permission to generate API credentials and configure webhooks.
- Owner access to the Corsa application.
Credentials Required
| Credential | Description |
|---|---|
| Utila RSA Private Key | RSA private key for JWT token generation. |
| Utila Service Account Email | The email address of the Utila service account. |
| Utila Vault ID | The ID of the vault to synchronize. |
Steps
- Log in to Corsa.
- Go to Developers Hub → Integrations.
- Click Configure on the Utila card.
- Insert your Vault ID from Utila.
- Configure the Polling Interval.
Corsa offers native integrations with leading compliance, blockchain analytics, and custody providers. See all integrations or schedule a demo to see how Corsa fits into your stack.