# Treasury API | Bulk Payment Plans & Safe Proposals

Plan up to 500 recipients and prepare batches of up to 50 Safe payments. Build unsigned treasury lending proposals for owner review through Bitpont.

Canonical: https://www.bitpont.com/developers/treasury/


## Plan a payment run of up to 500 recipients

planTreasuryPayments() validates a run and splits it into batches of at most 50 recipients. It returns exact totals and preparation inputs. The planning endpoint does not allocate future nonces, approve owners or submit a transfer.

Supported Safe deployments are Ethereum, Base and Arbitrum. Assets include ETH, USDC, USDCx and standard ERC-20 tokens identified by contract. Custom token decimals and balances must be inspected; transfer-tax and nonstandard behavior are not universally supported.

Server-side JavaScriptCopy code
```
const plan = await bitpont.planTreasuryPayments({
  chainId: 1, safe: SAFE_ADDRESS, owner: OWNER_ADDRESS,
  asset: 'USDC', payments: RECIPIENT_CSV
});

// Prepare only the next unexecuted batch.
const next = plan.data.batches[0];
const review = await bitpont.prepareTreasuryPayments(next.prepare.body);
console.log(review.data.proposal, review.data.reviewUrl);
// Wait for verified execution and delivery before preparing another batch.
```

## Prepare each batch with fresh state

- Validate the entire recipient list and check duplicates before preparing.
- Prepare one batch using the current Safe owner, balance and nonce.
- Show the exact proposal and open its opt-in Bitpont review link.
- Collect required owner approvals and verify execution and token delivery.
- Only then prepare the next batch using fresh state.A 500-recipient run is not one atomic transaction. A confirmed Safe approval is not proof that payments executed.

## Prepare supported Safe lending actions

Aave USDC supply, withdrawal, variable-debt repayment and repayment using supplied USDC are available as unsigned preparations on Ethereum and Base. Amounts are human-readable USDC strings with at most six decimal places.

Preparations expose simulation coverage. Some checks require the owner threshold and full execution simulation later. Unquoted fees must remain unquoted.

## Solana and other treasury tools

Bitpont’s [Solana payment page](/treasury/solana-bulk-payments/) supports direct-wallet SOL and standard SPL runs. It is not exposed as an authenticated API v1 orchestration endpoint. Streams, distribution pools and native wrapping also have their own supported interfaces; their presence in Treasury does not imply partner API execution coverage.


