Documentation Index
Fetch the complete documentation index at: https://docs.corsa.finance/llms.txt
Use this file to discover all available pages before exploring further.
The Utila integration connects your Utila non-custody vaults to the Corsa compliance platform, enabling automated synchronization of wallets, transactions, and corporate client records.
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 |
The original Utila state is preserved as a sub-status for full auditability.
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 will generate a key pair for the integration. Create a new service account in Utila’s settings with the specified public key and configure the webhook URL with the specified event types.
You can always view these configurations by clicking the three-dot menu on the integration card and selecting Third-Party Configuration.
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.