Skip to main content
Pull money from a linked bank account (eac_*) into a wallet (wal_*) as a transfer (trf_*), or push it back out. For the transfer lifecycle, read the Transfers overview. Natural handles the payment rails, so you can use whichever fits. Any connected agent can move money with an API call, and every transfer is observable and fully auditable.
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 with POST /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).
The response carries the transfer (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 with POST /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.
The response carries the transfer (trf_*) in PROCESSING:

Confirm the balance

Deposits and withdrawals settle asynchronously, so the balance change is not immediate. Read the transfer with GET /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.