Payouts
Create payouts. Payouts disburse funds from your merchant balance to an external bank account or card. Also manage the funding side: recurring schedules and manual top-ups that keep your instant-payout balance funded.
export FRAME_API_KEY='sk_sandbox_...'
List funding schedules
List your recurring top-up schedules, newest first. Only schedules created in the requesting API key's mode (live or sandbox) are returned.
Query parameters
The page offset at which you'd like to resume fetching data.
A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.
Returns
Paginated list of funding schedules
curl --request GET \
--url https://api.framepayments.com/v1/payout_funding/schedules \
--header 'Authorization: Bearer API_KEY'
{
"meta": {
"page": 1,
"url": "/v1/payout_funding/schedules",
"has_more": false,
"prev": null,
"next": null
},
"data": [
{
"id": "00000000-0000-4000-8000-000000000001",
"object": "payout_funding_schedule",
"amount": 50000,
"currency": "USD",
"next_run": 1745110800,
"last_run": null,
"created": 1745107200,
"updated": 1745107200,
"livemode": false,
"cadence": "weekly",
"enabled": true
}
]
}
Create funding schedule
Create a recurring top-up schedule that automatically funds your instant-payout balance on a fixed cadence. Each run credits the configured amount to the balance the instant payout rail draws against, so instant payouts keep working without manual effort. The first run occurs at next_run (defaults to now) and subsequent runs follow the cadence.
Body parameters
Amount in cents to credit each run. Must be greater than 0.
How often the top-up runs. One of daily, weekly, or monthly.
Whether the schedule starts active. Defaults to true.
Unix timestamp for the first run. Defaults to now, so the schedule executes on the next sweep.
Returns
The newly created funding schedule
curl --request POST \
--url https://api.framepayments.com/v1/payout_funding/schedules \
--header 'Authorization: Bearer API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"amount": 50000,
"cadence": "weekly"
}'
{
"id": "00000000-0000-4000-8000-000000000001",
"object": "payout_funding_schedule",
"amount": 50000,
"currency": "USD",
"next_run": 1745107200,
"last_run": null,
"created": 1745107200,
"updated": 1745107200,
"livemode": false,
"cadence": "weekly",
"enabled": true
}
Update funding schedule
Update a recurring top-up schedule's amount, cadence, enabled state, or next run time. Disable a schedule by setting enabled to false; the recurring sweep skips disabled schedules until they are re-enabled.
Path parameters
ID of the funding schedule
Body parameters
Amount in cents to credit each run. Must be greater than 0.
How often the top-up runs. One of daily, weekly, or monthly.
Whether the schedule is active.
Unix timestamp for the next run.
Returns
The updated funding schedule
curl --request PATCH \
--url https://api.framepayments.com/v1/payout_funding/schedules/a70cd72f-e74a-40f2-96a2-3f60714aac4a \
--header 'Authorization: Bearer API_KEY'
{
"id": "00000000-0000-4000-8000-000000000001",
"object": "payout_funding_schedule",
"amount": 25000,
"currency": "USD",
"next_run": 1745110800,
"last_run": null,
"created": 1745107200,
"updated": 1745107200,
"livemode": false,
"cadence": "daily",
"enabled": true
}
Create manual top-up
Push funds into your instant-payout balance on demand — for example ahead of a known payout spike. The credited amount is immediately reflected in the available balance the instant payout rail draws against. Pass an idempotency_key to make retries safe; a repeated key returns the original entry without charging again.
Body parameters
Amount in cents to credit. Must be greater than 0.
Optional key that makes retries safe. A repeated key returns the original entry instead of charging again.
Returns
Funding entry recording the credited top-up
curl --request POST \
--url https://api.framepayments.com/v1/payout_funding/top_ups \
--header 'Authorization: Bearer API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"amount": 75000
}'
{
"id": "00000000-0000-4000-8000-000000000001",
"schedule": null,
"object": "payout_funding_entry",
"amount": 75000,
"currency": "USD",
"created": 1745107200,
"livemode": false,
"source": "manual_push"
}
Create payout
Deprecated. This operation is deprecated and will be removed in a future API version. Use POST/v1/transfers instead.
Initiate a payout to a payment method owned by an account. frameOS supports payouts to debit cards via the card_receive capability and to bank accounts via the bank_account_receive capability — each must be active on the account before funds can be disbursed. Both payout types require a verified KYC record on the account; identity verification is the foundation of payout eligibility.
Body parameters
ID of the payment method to pay out to. Must belong to an account with the relevant payout capability active.
Amount in cents. Must be greater than 0.
Three-letter ISO currency code. Must be USD.
Payout speed. Required for ACH bank account payouts; must be one of asap, same_day, or standard. Not accepted for card (push_to_card) payouts.
Returns
Payout object for the newly initiated disbursement
curl --request POST \
--url https://api.framepayments.com/v1/payouts \
--header 'Authorization: Bearer API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"payment_method": null,
"amount": 1000,
"currency": "USD"
}'
{
"id": "00000000-0000-4000-8000-000000000001",
"status": "pending",
"speed": "asap",
"amount": 1000,
"currency": "USD",
"payment_method": "00000000-0000-4000-8000-000000000002",
"object": "payout",
"livemode": false,
"processor_fee": null,
"merchant_fee": null,
"customer_fee": null,
"created": 1745107200,
"updated": 1745107200,
"succeeded": null,
"failed": null
}