Payouts

A payout moves funds from an account's available balance to an external bank account. This guide covers retrieving a single payout and listing payouts.

To move funds between two accounts that both hold a balance with Rootline, without touching an external bank, use Balance transfers instead.

Operations

Payouts live under the accounting service.

Endpoints

EnvironmentBase URL
Staginghttps://accounting-api.staging.rootline.com/v1/payouts
Productionhttps://accounting-api.rootline.com/v1/payouts

Retrieve a payout

curl https://accounting-api.staging.rootline.com/v1/payouts/{id} \ -H "x-api-key: <your-api-key>" \ -H "rootline-version: <api-version>"

Returns a single payout:

{ "id": "pyt_hiZXuGEv4OkO7byjFqqiIS", "object": "payout", "status": "confirmed", "account_id": "acc_1VND7qZjM3oICUlfKsCxn8", "amount": { "currency": "EUR", "quantity": "98.22" }, "payout_rails": { "payout_method": "bank_transfer", "bank_transfer": { "sender": { "account_holder_name": "Rootline Foundation", "iban": "DK8189000000703195", "bic": "SXPYDKKK", "bank_country": "DK" }, "recipient": { "id": "tba_NwUP3kK29F7mvG0lafb1d6", "account_holder_name": "Acme B.V.", "iban": "NL91ABNA0417164300", "bank_country": "NL" } } }, "reference": "2026-07-29", "description": "Payout for Acme B.V.", "created_at": "2026-07-29T04:01:20.813192Z" }

List payouts

curl https://accounting-api.staging.rootline.com/v1/payouts \ -H "x-api-key: <your-api-key>" \ -H "rootline-version: <api-version>"

Newest first, paginated:

{ "data": [ { "id": "pyt_U5tCb8t5UIBNNw6rQRdoLS", "object": "payout", "status": "confirmed", "account_id": "acc_1VND7qZjM3oICUlfKsCxn8", "amount": { "currency": "EUR", "quantity": "98.22" }, "payout_rails": { "payout_method": "bank_transfer", "bank_transfer": { "sender": { "account_holder_name": "Rootline Foundation", "iban": "DK8189000000703195", "bic": "SXPYDKKK", "bank_country": "DK" }, "recipient": { "id": "tba_NwUP3kK29F7mvG0lafb1d6", "account_holder_name": "Acme B.V.", "iban": "NL91ABNA0417164300", "bank_country": "NL" } } }, "reference": "2026-07-29", "description": "Payout for Acme B.V.", "created_at": "2026-07-29T04:01:20.813192Z" }, { "id": "pyt_yUYbDbgFhMeArRMIsM8V8v", "object": "payout", "status": "confirmed", "account_id": "acc_9gXwP92olV6kn2IwEZN0yI", "amount": { "currency": "EUR", "quantity": "194.22" }, "payout_rails": { "payout_method": "bank_transfer", "bank_transfer": { "sender": { "account_holder_name": "Rootline Foundation", "iban": "DK8189000000703195", "bic": "SXPYDKKK", "bank_country": "DK" }, "recipient": { "id": "tba_W78c36VUQ1ZhM7avrLNN0f", "account_holder_name": "Studio Vesper B.V.", "iban": "NL91ABNA0417164300", "bank_country": "NL" } } }, "reference": "2026-07-28", "description": "Payout for Studio Vesper B.V.", "created_at": "2026-07-28T04:01:19.896189Z" } ], "page_size": 25, "has_more": true, "next_page_token": "ChAI9WC1Ohgf8rPpvLcHCsB0EMeaz83dMw==" }

Walk forward by passing the previous response's next_page_token back as ?page_token=<token>. Treat the token as opaque: pass it back unchanged, do not parse it.

The payout object

A payout records a single transfer of funds out of an account's available balance to an external bank account. The bank details sit under payout_rails, which names the rail used and both ends of the transfer.

Payout

PropertyTypeDescription
idstringUnique identifier, prefixed pyt_.
objectstringAlways payout.
statusstringThe payout's current state. See Statuses.
account_idstringThe account the payout is made from. Its available balance is the source of funds.
amountmoneyThe payout amount.
payout_railsobjectHow the payout is sent, and the sender and recipient details. See Payout rails.
referencestringYour reference for the payout.
descriptionstringFree text description.
created_atstringCreation timestamp (ISO 8601, UTC).

Payout rails

PropertyTypeDescription
payout_methodstringThe rail the payout is sent over. Currently bank_transfer.
bank_transferobjectPresent when payout_method is bank_transfer. Holds the sender and recipient.

The bank_transfer.sender is the account funds are paid from:

PropertyTypeDescription
account_holder_namestringName on the sending account.
ibanstringIBAN of the sending account.
bicstringBIC of the sending account.
bank_countrystringISO 3166 country code of the sending bank.

The bank_transfer.recipient is the account funds are paid to:

PropertyTypeDescription
idstringIdentifier of the stored bank account, prefixed tba_.
account_holder_namestringName on the receiving account.
ibanstringIBAN of the receiving account.
bank_countrystringISO 3166 country code of the receiving bank.

Statuses

A payout moves through the states below as it is prepared, sent to the bank, and settled.

StatusDescription
scheduledThe payout has been scheduled for processing, and the amount has been reserved from the account's available balance.
submittedThe payout has been included in the transfer instruction to the bank.
confirmedThe bank has confirmed execution of the transfer.
rejectedThe bank rejected the transfer, and the reserved amount is returned to the account's available balance.
returnedThe funds were returned after the transfer was initially accepted, for example because the destination account was closed.

Webhook events

Subscribe to these events to follow a payout without polling. Each event is named for the status it moves the payout to, so a subscriber and a caller polling GET /v1/payouts/{id} use the same word for the same state.

EventSent when
payout.scheduledThe payout was scheduled and the amount reserved from the account's available balance.
payout.submittedThe payout was included in the transfer instruction to the bank.
payout.confirmedThe bank confirmed execution of the transfer.

Every event carries the full payout object in its payout field, in the same shape as Retrieve a payout. Delivery is at-least-once, so deduplicate on the event type together with the payout id.

Not every status has an event. The rejected and returned statuses are visible on the payout object only, so read status with Retrieve a payout rather than waiting for an event.

See Webhook events for the envelope these arrive in, and Configure webhooks to subscribe.