Skip to main content
POST
/
2
/
pm
/
deposit
/
build
Build USDC deposit transaction
curl --request POST \
  --url https://demo-api.mobula.io/api/2/pm/deposit/build \
  --header 'Content-Type: application/json' \
  --data '
{
  "address": "<string>",
  "amount": 123
}
'
{
  "data": {
    "to": "<string>",
    "calldata": "<string>",
    "chainId": 123,
    "safeAddress": "<string>"
  },
  "hostname": "<string>",
  "took": 123
}

Request Body

address
string
required
The wallet address (EOA) that will send the deposit.
amount
number
required
Amount of USDC to deposit. Must be positive.

Response

data
object
Transaction calldata for the deposit.
hostname
string
Server node identifier.
took
number
Request processing time in milliseconds.

Usage Example

curl -X POST "https://api.mobula.io/api/2/pm/deposit/build" \
  -H "Content-Type: application/json" \
  -d '{ "address": "0xYourWalletAddress", "amount": 100 }'

Integration Example

// Build deposit transaction
const res = await fetch('https://api.mobula.io/api/2/pm/deposit/build', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ address: walletAddress, amount: 100 })
});
const { data: depositTx } = await res.json();

// Send the deposit on-chain (Polygon)
await walletClient.sendTransaction({
  to: depositTx.to,
  data: depositTx.calldata,
  chain: polygon
});
This builds a simple USDC transfer() from the EOA to the Safe. The user must have sufficient USDC balance in their wallet. The Safe address is deterministically derived from the EOA address.

Body

application/json
address
string
required
amount
number
required

USDC amount to deposit

Response

200 - application/json

Deposit transaction

data
object
hostname
string
took
number