Stablecoin Deposits

This page outlines how to deposit stablecoins (USDC/USDT) into your Caliza account.

Step 1: Get Wallet Details

Retrieve the beneficiary's wallet address using the following endpoint:

curl 'https://api.sandbox.caliza.com/core-api/v1/beneficiaries/{{beneficiaryId}}/wallets?chain=ETH' \
--header 'Authorization: Bearer YOUR_TOKEN'

The response returns the wallet address for the specified chain:

{
  "walletAddress": "0x71C7656EC7ab88b098defB751B7401B5f6d8976F"
}

The available chain is ETH.

Step 2: Send Stablecoins

From your crypto provider, send the stablecoins (USDC/USDT) to the wallet address returned in the previous step. Make sure the amount and network match your intended deposit.

Step 3: Wait for Confirmation

Once the funds are received and confirmed, Caliza will notify you via the PAYMENT_IN_COMPLETED webhook event. You can also check the transaction status via the transactions endpoint.

⚠️

Deprecated

The following flow is deprecated. Please use the new flow above.

Step 1: Simulate the Deposit

Before moving funds, you must simulate the deposit. This step validates the currency pair and the funding method. Use the Simulate transaction or payment endpoint to do so:

curl --location 'https://api.sandbox.caliza.com/core-api/v1/simulations' \
--header 'Authorization: Bearer YOUR_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
  "beneficiaryId": "{{beneficiaryId}}",
  "from": {
    "value": 10,
    "currencyCode": "USDC"
  },
  "to": {
    "currencyCode": "USDC"
  },
  "fundingMethod": "ETH"
}'

The API returns a simulation object. Copy the id field (Simulation ID) to proceed.

Step 2: Get the Funding Wallet

Create the transaction record using the simulation ID. This step is required to retrieve the specific wallet address where the funds must be sent.

curl --location 'https://api.sandbox.caliza.com/core-api/v1/transactions' \
--header 'Authorization: Bearer YOUR_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
   "simulationId": "{{simulationId}}",
   "beneficiaryIp": "127.0.0.1"
}'

Look for the blockchainInfo object. The fundingWallet field contains the destination address.

Step 3: Transfer Funds (On-Chain)

Perform the actual crypto transfer using your external wallet (for example, MetaMask, Ledger, or an Exchange).

  • Destination: The address found in blockchainInfo.fundingWallet.
  • Amount: Must match the from.value specified in the simulation.
  • Network: Make sure you use the network corresponding to the fundingMethod (for example, Ethereum for ETH).

Once the transfer is broadcast to the network, copy the Transaction Hash (TXID).

Step 4: Attach Transaction Hash

Send a PUT request to the /v1/transactions/{id}/depositTransactionHash to link the blockchain transaction hash to the Caliza transaction ID.

curl --location --request PUT 'https://api.sandbox.caliza.com/core-api/v1/transactions/{{transaction_id}}/depositTransactionHash' \
--header 'Authorization: Bearer YOUR_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
   "transactionHash": "0x_YOUR_BLOCKCHAIN_TX_HASH"
}'

After attaching the hash, Caliza monitors the blockchain for confirmations. Once confirmed, the transaction status updates to SUCCEEDED.

Related Articles