eac_*) into a wallet (wal_*) as a transfer (trf_*), or push it back out. For the transfer lifecycle, read the Transfers overview.
Link a bank account in the dashboard first. Natural returns an
eac_* id you pass on every
deposit and withdrawal. The account must be verified and its connection active; otherwise the call
returns 409 external_account_not_verified or external_account_connection_login_required.Deposit into a wallet
Pull money from the bank into a wallet withPOST /transfers/deposit. Funds land in your default wallet unless you name another. The minimum deposit is 100 ($1.00), and deposits are capped per day by your tier (deposit_tier_daily_pull_limit_exceeded).
trf_*) in PROCESSING:
A transfer moves CREATED to PROCESSING to COMPLETED. It can pause at IN_REVIEW during an approval hold. It ends at FAILED, RETURNED, CANCELED, or APPROVAL_DENIED.
Withdraw to a bank account
Push money from a wallet to the bank withPOST /transfers/withdraw. Natural pulls from your default wallet unless you name another, and the wallet needs enough available balance to cover it (otherwise 409 insufficient_funds). Withdrawals go out over ACH by default; pass method: "instant" for a realtime withdrawal where your account has access, otherwise the call returns 403 instant_withdrawals_not_enabled.
trf_*) in PROCESSING:
Confirm the balance
Deposits and withdrawals settle asynchronously, so the balance change is not immediate. Read the transfer withGET /transfers/{transferId}: status moves PROCESSING to COMPLETED, and expectedAvailableAt tells you when the funds are usable. Then read the wallet to confirm a deposit landed before you spend against it, or that a withdrawal left. See Create and manage wallets for how balance.available differs from balance.total.