B2B Partner API

Deposit Guide

Learn how to deposit USDC into your Sprout B2B wallet and start earning yield.

Prerequisites

Before making a deposit, ensure you have:

  • Your Sprout wallet address (provided during onboarding)
  • USDC on Base chain
  • Enough ETH on Base for gas fees

Deposit Process

Step 1: Get Your Wallet Address

You can retrieve your deposit address via the API:

curl -X GET "https://api.sproutfi.xyz/api/1/b2b/wallet" \
  -H "Authorization: Bearer YOUR_API_KEY"

Or use the wallet address provided during onboarding.

Step 2: Transfer USDC

Transfer USDC to your wallet address on Base chain:

NetworkBase (Chain ID: 8453)
TokenUSDC
Contract0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
To AddressYour Sprout wallet address

Step 3: Wait for Confirmation

Your deposit will be automatically detected and recorded once the transaction is confirmed on Base (typically 1-2 minutes).

Step 4: Verify Your Deposit

Check your balance to confirm the deposit:

curl -X GET "https://api.sproutfi.xyz/api/1/b2b/balance" \
  -H "Authorization: Bearer YOUR_API_KEY"

Important Notes

Network Warning

Always use Base chain (Chain ID: 8453). Do NOT send funds on Ethereum mainnet, Arbitrum, Optimism, or any other network. Funds sent to the wrong network may be lost.

Token Warning

Only send USDC. Do not send USDT, DAI, ETH or any other token. Only USDC deposits are tracked.

Minimum Deposit

There is no minimum deposit amount, but consider gas costs when making small deposits.

Processing Time

  • Detection: ~1-2 minutes after chain confirmation
  • Investment: Funds are invested into vaults during the next rebalancing cycle

Programmatic Deposits

If you're integrating deposits programmatically, here's an example using ethers.js:

const { ethers } = require('ethers');

// Base RPC
const provider = new ethers.JsonRpcProvider('https://mainnet.base.org');

// Your wallet with USDC
const wallet = new ethers.Wallet(PRIVATE_KEY, provider);

// USDC contract on Base
const USDC_ADDRESS = '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913';
const USDC_ABI = [
  'function transfer(address to, uint256 amount) returns (bool)',
  'function decimals() view returns (uint8)'
];

const usdc = new ethers.Contract(USDC_ADDRESS, USDC_ABI, wallet);

// Your Sprout wallet address
const SPROUT_WALLET = '0x...your_sprout_wallet_address';

// Transfer 1000 USDC (USDC has 6 decimals)
const amount = ethers.parseUnits('1000', 6);
const tx = await usdc.transfer(SPROUT_WALLET, amount);
await tx.wait();

console.log('Deposit successful:', tx.hash);

Troubleshooting

Deposit not showing up?

  1. Verify the transaction is confirmed on Base
  2. Check you sent to the correct wallet address
  3. Ensure you sent USDC (not another token)
  4. Wait a few minutes for processing
  5. Contact support if still not showing after 10 minutes