Transfer tokens to/from Credit Account
Transfer tokens between the owner’s EOA and their Credit Account.
DEPOSIT (EOA → Credit Account):
- With
gas_sponsorship=true: returns Permit2 EIP-712 typed data to sign. The gas sponsor callspermitTransferFromto pull tokens (1 signature). - With
gas_sponsorship=false: returns an unsigned ERC-20 transfer transaction.
WITHDRAW (Credit Account → EOA):
- With
gas_sponsorship=true: returns SafeTx EIP-712 typed data to sign. The gas sponsor broadcasts theexecTransaction(1 signature). - With
gas_sponsorship=false: returns an unsignedexecTransaction.
Documentation Index
Fetch the complete documentation index at: https://docs.compasslabs.ai/llms.txt
Use this file to discover all available pages before exploring further.
Body
The owner's wallet address (EOA).
Blockchain network.
base, ethereum, arbitrum, hyperevm The token to transfer.
"USDC"
"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
The amount of tokens to transfer (in token units, not wei).
x > 0100
Whether you are depositing to or withdrawing from your credit account.
DEPOSIT, WITHDRAW Optionally request gas sponsorship. If set to true, EIP-712 signature data will be returned that must be signed by the owner and submitted to the /gas_sponsorship/prepare endpoint.
The address that will call Permit2's permitTransferFrom to execute the transfer. When action is 'DEPOSIT' and gas_sponsorship is true: - If provided, the signature will authorize this address (typically a gas sponsor) to pull tokens. - If not provided, defaults to the Credit Account (Safe) address, allowing the transfer to be included in a bundle transaction where the Safe pulls the tokens itself.
Response
Successful Response
{
"chainId": "0x2105",
"data": "0xa9059cbb000000000000000000000000...",
"from": "0xc98949522db2eE403d6c75E91DDEe875a824bB10",
"gas": "0x30d40",
"maxFeePerGas": "0x3b9aca00",
"maxPriorityFeePerGas": "0x5f5e100",
"nonce": "0x2c",
"to": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"value": "0x0"
}Response containing EIP-712 typed data for Safe transaction signing.
- BatchedSafeOperationsResponse
- Permit2TypedData
{
"domain": {
"chainId": 8453,
"verifyingContract": "0x6B90E8B4E3E971E74C1A47a3a20976377E2dB4b1"
},
"message": {
"baseGas": "0",
"data": "0x8d80ff0a0000000000000000000000000000000000000000000000000000000000000020",
"gasPrice": "0",
"gasToken": "0x0000000000000000000000000000000000000000",
"nonce": "7",
"operation": 1,
"refundReceiver": "0x0000000000000000000000000000000000000000",
"safeTxGas": "0",
"to": "0x93C23AAE4793C14D6DF35D2A2A2234204e1559dA",
"value": "0"
},
"primaryType": "SafeTx",
"types": {
"EIP712Domain": [
{ "name": "chainId", "type": "uint256" },
{
"name": "verifyingContract",
"type": "address"
}
],
"SafeTx": [
{ "name": "to", "type": "address" },
{ "name": "value", "type": "uint256" },
{ "name": "data", "type": "bytes" },
{ "name": "operation", "type": "uint8" },
{ "name": "safeTxGas", "type": "uint256" },
{ "name": "baseGas", "type": "uint256" },
{ "name": "gasPrice", "type": "uint256" },
{ "name": "gasToken", "type": "address" },
{
"name": "refundReceiver",
"type": "address"
},
{ "name": "nonce", "type": "uint256" }
]
}
}