Skip to content

Stripe: Create a payout

Stripe payouts.postPayouts: arguments, response, policy and SDK examples.

← Payouts operations · Get started

Operation stripe.postpayouts

Provider route: POST /v1/payouts. Alter supplies the connection’s credentials and routing.

Install @alter-ai/sdk @alter-ai/stripe with npm, or alter-sdk-stripe with pip. Supply your connected customer’s grant ID and the arguments described below.

import { App } from "@alter-ai/sdk";
import { StripeIntegration } from "@alter-ai/stripe";
async function execute(input: Parameters<StripeIntegration["payouts"]["postPayouts"]>[0]) {
const app = new App({ apiKey: process.env.ALTER_API_KEY! });
try {
const provider = new StripeIntegration(app, { grantId: process.env.PROVIDER_GRANT_ID! });
const call = await provider.payouts.postPayouts(input);
const result = await call.wait();
return result.bodyJson();
} finally {
await app.close();
}
}
import os
from alter_sdk import App
from alter_sdk_stripe import StripeIntegration
async def execute(arguments):
async with App(api_key=os.environ["ALTER_API_KEY"]) as app:
provider = StripeIntegration(app, {"grant_id": os.environ["PROVIDER_GRANT_ID"]})
call = await provider.payouts.post_payouts(arguments)
result = await call.wait()
return result.body_json()
FieldTypePresenceDescription and constraints
$objectRootAdditional keys: not allowed
headersobjectOptionalAdditional keys: not allowed
headers.Idempotency-KeystringOptionalMinimum length: 1
Maximum length: 255
bodyobjectRequired within parentAdditional keys: not allowed
body.amountintegerRequired within parentA positive integer in cents representing how much to pay out.
body.currencystringRequired within parentThree-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies).
Format: currency
body.descriptionstringOptionalAn arbitrary string attached to the object. Often useful for displaying to users.
Maximum length: 5000
body.destinationstringOptionalThe ID of a bank account or a card to send the payout to. If you don’t provide a destination, we use the default external account for the specified currency.
body.expandarrayOptionalSpecifies which fields in the response should be expanded.
body.expand[]stringEach itemMaximum length: 5000
body.metadataobjectOptionalSet of [key-value pairs](https://docs.stripe.com/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to `metadata`.
Additional keys: see wildcard field
body.metadata.*stringAdditional keys
body.methodstringOptionalThe method used to send this payout, which is `standard` or `instant`. We support `instant` for payouts to debit cards and bank accounts in certain countries. Learn more about [bank support for Instant Payouts](https://stripe.com/docs/payouts/instant-payouts-banks).
One of: instant, standard
Maximum length: 5000
body.payout_methodstringOptionalThe ID of a v2 FinancialAccount to send funds to.
body.source_typestringOptionalThe balance type of your Stripe balance to draw this payout from. Balances for different payment sources are kept separately. You can find the amounts with the Balances API. One of `bank_account`, `card`, or `fpx`.
One of: bank_account, card, fpx
Maximum length: 5000
body.statement_descriptorstringOptionalA string that displays on the recipient’s bank or card statement (up to 22 characters). A `statement_descriptor` that’s longer than 22 characters return an error. Most banks truncate this information and display it inconsistently. Some banks might not display it at all. For US ACH payouts, this maps to the ACH Company Entry Description field, which the NACHA standard limits to 10 characters. Stripe truncates descriptors longer than 10 characters for US ACH payouts.
Maximum length: 22

Response media type: application/json. The table describes the pinned successful response. Referenced models link to their complete fields.

FieldTypePresenceDescription and constraints
$ModelRootExpand Cancel a payout — response body

Referenced models: Cancel a payout — response body

702 more schemas are linked from the tables above, on the schema pages.

Post Application Fees Id Refund — response body
FieldTypePresenceDescription and constraints
$objectRoot
accountJSONRequired within parentID of the Stripe account this fee was taken from.
account (anyOf 1)stringAlternativeMaximum length: 5000
account (anyOf 2)ModelAlternativeExpand Create an account — response body
amountJSONRequired within parent
amount (anyOf 1)integerAlternativeAmount earned, in cents (or local equivalent).
amount (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
amount_refundedJSONRequired within parent
amount_refunded (anyOf 1)integerAlternativeAmount in cents (or local equivalent) refunded (can be less than the amount attribute on the fee if a partial refund was issued)
amount_refunded (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
applicationJSONRequired within parentID of the Connect application that earned the fee.
application (anyOf 1)stringAlternativeMaximum length: 5000
application (anyOf 2)ModelAlternativeExpand PostApplicationFeesIdRefund — response body — application / object: application
balance_transactionJSONOptional
balance_transaction (anyOf 1)JSONAlternativeBalance transaction that describes the impact of this collected application fee on your account balance (not including refunds).
balance_transaction (anyOf 1) (anyOf 1)stringAlternativeMaximum length: 5000
balance_transaction (anyOf 1) (anyOf 2)ModelAlternativeExpand Retrieve a balance transaction — balance get Balance History Id — response body
balance_transaction (anyOf 2)nullAlternative
chargeJSONRequired within parentID of the charge that the application fee was taken from.
charge (anyOf 1)stringAlternativeMaximum length: 5000
charge (anyOf 2)ModelAlternativeExpand Create a charge — response body
createdJSONRequired within parent
created (anyOf 1)integerAlternativeTime at which the object was created. Measured in seconds since the Unix epoch.
Format: unix-time
created (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
currencystringRequired within parentThree-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies).
Format: currency
fee_sourceJSONOptional
fee_source (anyOf 1)JSONAlternativePolymorphic source of the application fee. Includes the ID of the object the application fee was created from.
fee_source (anyOf 1) (anyOf 1)ModelAlternativeExpand PostApplicationFeesIdRefund — response body — fee_source / value / type: charge, payout
fee_source (anyOf 2)nullAlternative
idstringRequired within parentUnique identifier for the object.
Maximum length: 5000
livemodebooleanRequired within parentIf the object exists in live mode, the value is `true`. If the object exists in test mode, the value is `false`.
objectstringRequired within parentString representing the object's type. Objects of the same type share the same value.
Known values: application_fee
originating_transactionJSONOptional
originating_transaction (anyOf 1)JSONAlternativeID of the corresponding charge on the platform account, if this fee was the result of a charge using the `destination` parameter.
originating_transaction (anyOf 1) (anyOf 1)stringAlternativeMaximum length: 5000
originating_transaction (anyOf 1) (anyOf 2)ModelAlternativeExpand Create a charge — response body
originating_transaction (anyOf 2)nullAlternative
refundedbooleanRequired within parentWhether the fee has been fully refunded. If the fee is only partially refunded, this attribute will still be false.
refundsobjectRequired within parentA list of refunds that have been applied to the fee.
refunds.dataarrayRequired within parentDetails about each object.
refunds.data[]ModelEach itemExpand Create an application fee refund — response body
refunds.has_morebooleanRequired within parentTrue if this list has another page of items after this one that can be fetched.
refunds.objectstringRequired within parentString representing the object's type. Objects of the same type share the same value. Always has the value `list`.
Known values: list
refunds.urlstringRequired within parentThe URL where this list can be accessed.
Maximum length: 5000

Referenced models: Create an account — response body, PostApplicationFeesIdRefund — response body — application / object: application, Retrieve a balance transaction — balance get Balance History Id — response body, Create a charge — response body, Create an application fee refund — response body, PostApplicationFeesIdRefund — response body — fee_source / value / type: charge, payout

Delete an external account — accounts.deleteAccountsAccountBankAccountsId — response body — deleted: True, object: bank account
FieldTypePresenceDescription and constraints
$objectRoot
currencyJSONOptional
currency (anyOf 1)stringAlternativeThree-letter [ISO code for the currency](https://stripe.com/docs/payouts) paid out to the bank account.
Maximum length: 5000
currency (anyOf 2)nullAlternative
deletedbooleanRequired within parentAlways true for a deleted object
Known values: True
idstringRequired within parentUnique identifier for the object.
Maximum length: 5000
objectstringRequired within parentString representing the object's type. Objects of the same type share the same value.
Known values: bank_account
Delete an external account — accounts.deleteAccountsAccountBankAccountsId — response body — deleted: True, object: card
FieldTypePresenceDescription and constraints
$objectRoot
currencyJSONOptional
currency (anyOf 1)stringAlternativeThree-letter [ISO code for the currency](https://stripe.com/docs/payouts) paid out to the bank account.
Maximum length: 5000
currency (anyOf 2)nullAlternative
deletedbooleanRequired within parentAlways true for a deleted object
Known values: True
idstringRequired within parentUnique identifier for the object.
Maximum length: 5000
objectstringRequired within parentString representing the object's type. Objects of the same type share the same value.
Known values: card
Cancel a payout — response body — trace id value status, value
FieldTypePresenceDescription and constraints
$objectRoot
statusstringRequired within parentPossible values are `pending`, `supported`, and `unsupported`. When `payout.status` is `pending` or `in_transit`, this will be `pending`. When the payout transitions to `paid`, `failed`, or `canceled`, this status will become `supported` or `unsupported` shortly after in most cases. In some cases, this may appear as `pending` for up to 10 days after `arrival_date` until transitioning to `supported` or `unsupported`.
Maximum length: 5000
valueJSONOptional
value (anyOf 1)stringAlternativeThe trace ID value if `trace_id.status` is `supported`, otherwise `nil`.
Maximum length: 5000
value (anyOf 2)nullAlternative
PostApplicationFeesIdRefund — response body — application / object: application
FieldTypePresenceDescription and constraints
$objectRoot
idstringRequired within parentUnique identifier for the object.
Maximum length: 5000
nameJSONOptional
name (anyOf 1)stringAlternativeThe name of the application.
Maximum length: 5000
name (anyOf 2)nullAlternative
objectstringRequired within parentString representing the object's type. Objects of the same type share the same value.
Known values: application
PostApplicationFeesIdRefund — response body — fee_source / value / type: charge, payout
FieldTypePresenceDescription and constraints
$objectRoot
chargestringOptionalCharge ID that created this application fee.
Maximum length: 5000
payoutstringOptionalPayout ID that created this application fee.
Maximum length: 5000
typestringRequired within parentType of object that created the application fee.
Known values: charge, payout
Delete a customer — response body
FieldTypePresenceDescription and constraints
$objectRoot
deletedbooleanRequired within parentAlways true for a deleted object
Known values: True
idstringRequired within parentUnique identifier for the object.
Maximum length: 5000
objectstringRequired within parentString representing the object's type. Objects of the same type share the same value.
Known values: customer

SDK function policy ID: stripe.postpayouts. Catalog operation: PostPayouts. Rules can name either ID; function rules distinguish managed calls and conservatively cover raw calls sharing the route. Existing grant permissions and policy rules apply. wait() returns an immediate result or waits for a required approval; it never approves the request itself. Persist the approval ID to resume after a restart.

Provider errors retain their response; JSON decoding raises ProviderAPIError for provider failures. ManagedOperationError identifies contract/input/retention errors. See error handling and provider-specific behavior. Sensitive input may be refused before approval storage. A decoding error never resubmits a write.

Pinned headers: {"Stripe-Version": "2026-09-30.endive"}

Official provider source

Report an issue with this page

Necessary

Required for sign-in, security, authorization, and remembering your choices.

Always active

Analytics

Helps us understand which product and documentation features are useful.

Performance diagnostics

Uses performance tracing and privacy-masked session replay to diagnose problems.

You can change these choices at any time from Cookie settings.