Search + K

Command Palette

Search for a command to run...

Sign In

PostApplicationFeesIdRefund

POST /v1/application_fees/{id}/refund
Copy endpoint
https://api.stripe.com/

Parameters

path Path Parameters

Name Type
id required
string

Request Body

application/x-www-form-urlencoded
{ amount?: number;directive?: string;expand?: string[]; }

Responses

200 application/json

Successful response.

interface ApplicationFee {
account: Account

This is an object representing a Stripe account. You can retrieve it to see properties on the account like its current requirements or if the account is enabled to make live charges or receive payouts.

For accounts where controller.requirement_collection is application, which includes Custom accounts, the properties below are always returned.

For accounts where controller.requirement_collection is stripe, which includes Standard and Express accounts, some properties are only returned until you create an Account Link or Account Session to start Connect Onboarding. Learn about the differences between accounts.

interface Account {
business_profile?: AccountBusinessProfile | null;
business_type?: "company" | "government_entity" | "individual" | "non_profit" | null;
capabilities?: AccountCapabilities;
charges_enabled?: boolean;
company?: LegalEntityCompany;
controller?: AccountUnificationAccountController;
country?: string;
created?: number;
default_currency?: string;
details_submitted?: boolean;
email?: string | null;
external_accounts?: {
data: (BankAccount | Card)[];
has_more: boolean;
object: "list";
url: string;
}
;
future_requirements?: AccountFutureRequirements;
groups?: AccountGroupMembership | null;
id: string;
individual?: Person;
metadata?: { };
object: "account";
payouts_enabled?: boolean;
requirements?: AccountRequirements;
settings?: AccountSettings | null;
tos_acceptance?: AccountTosAcceptance;
type?: "custom" | "express" | "none" | "standard";
}
| string
;
amount: number;
amount_refunded: number;
application: Application
interface Application {
id: string;
name?: string | null;
object: "application";
}
| string
;
balance_transaction?: BalanceTransaction

Balance transactions represent funds moving through your Stripe account. Stripe creates them for every type of transaction that enters or leaves your Stripe account balance.

Related guide: Balance transaction types

interface BalanceTransaction {
amount: number;
available_on: number;
balance_type?: "issuing" | "payments" | "refund_and_dispute_prefunding";
created: number;
currency: string;
description?: string | null;
exchange_rate?: number | null;
fee: number;
fee_details: Fee[];
id: string;
net: number;
object: "balance_transaction";
reporting_category: string;
source?: ApplicationFee | Charge | ConnectCollectionTransfer | CustomerCashBalanceTransaction | Dispute | FeeRefund | IssuingAuthorization | IssuingDispute | IssuingTransaction | Payout | Refund | ReserveTransaction | TaxDeductedAtSource | Topup | Transfer | TransferReversal | string | null;
status: string;
type: "adjustment" | "advance" | "advance_funding" | "anticipation_repayment" | "application_fee" | "application_fee_refund" | "charge" | "climate_order_purchase" | "climate_order_refund" | "connect_collection_transfer" | "contribution" | "issuing_authorization_hold" | "issuing_authorization_release" | "issuing_dispute" | "issuing_transaction" | "obligation_outbound" | "obligation_reversal_inbound" | "payment" | "payment_failure_refund" | "payment_network_reserve_hold" | "payment_network_reserve_release" | "payment_refund" | "payment_reversal" | "payment_unreconciled" | "payout" | "payout_cancel" | "payout_failure" | "payout_minimum_balance_hold" | "payout_minimum_balance_release" | "refund" | "refund_failure" | "reserve_transaction" | "reserved_funds" | "stripe_balance_payment_debit" | "stripe_balance_payment_debit_reversal" | "stripe_fee" | "stripe_fx_fee" | "tax_fee" | "topup" | "topup_reversal" | "transfer" | "transfer_cancel" | "transfer_failure" | "transfer_refund";
}
| string | null
;
charge: Charge

The Charge object represents a single attempt to move money into your Stripe account. PaymentIntent confirmation is the most common way to create Charges, but Account Debits may also create Charges. Some legacy payment flows create Charges directly, which is not recommended for new integrations.

interface Charge {
amount: number;
amount_captured: number;
amount_refunded: number;
application?: Application | string | null;
application_fee?: ApplicationFee | string | null;
application_fee_amount?: number | null;
balance_transaction?: BalanceTransaction | string | null;
billing_details: BillingDetails;
calculated_statement_descriptor?: string | null;
captured: boolean;
created: number;
currency: string;
customer?: Customer | DeletedCustomer | string | null;
description?: string | null;
disputed: boolean;
failure_balance_transaction?: BalanceTransaction | string | null;
failure_code?: string | null;
failure_message?: string | null;
fraud_details?: ChargeFraudDetails | null;
id: string;
livemode: boolean;
metadata: { };
object: "charge";
on_behalf_of?: Account | string | null;
outcome?: ChargeOutcome | null;
paid: boolean;
payment_intent?: PaymentIntent | string | null;
payment_method?: string | null;
payment_method_details?: PaymentMethodDetails | null;
presentment_details?: PaymentFlowsPaymentIntentPresentmentDetails;
radar_options?: RadarRadarOptions;
receipt_email?: string | null;
receipt_number?: string | null;
receipt_url?: string | null;
refunded: boolean;
refunds?: {
data: Refund[];
has_more: boolean;
object: "list";
url: string;
}
| null
;
review?: Review | string | null;
shipping?: Shipping | null;
source_transfer?: Transfer | string | null;
statement_descriptor?: string | null;
statement_descriptor_suffix?: string | null;
status: "failed" | "pending" | "succeeded";
transfer?: Transfer | string;
transfer_data?: ChargeTransferData | null;
transfer_group?: string | null;
}
| string
;
created: number;
currency: string;
fee_source?: PlatformEarningFeeSource
interface PlatformEarningFeeSource {
charge?: string;
payout?: string;
type: "charge" | "payout";
}
| null
;
id: string;
livemode: boolean;
object: "application_fee";
originating_transaction?: Charge

The Charge object represents a single attempt to move money into your Stripe account. PaymentIntent confirmation is the most common way to create Charges, but Account Debits may also create Charges. Some legacy payment flows create Charges directly, which is not recommended for new integrations.

interface Charge {
amount: number;
amount_captured: number;
amount_refunded: number;
application?: Application | string | null;
application_fee?: ApplicationFee | string | null;
application_fee_amount?: number | null;
balance_transaction?: BalanceTransaction | string | null;
billing_details: BillingDetails;
calculated_statement_descriptor?: string | null;
captured: boolean;
created: number;
currency: string;
customer?: Customer | DeletedCustomer | string | null;
description?: string | null;
disputed: boolean;
failure_balance_transaction?: BalanceTransaction | string | null;
failure_code?: string | null;
failure_message?: string | null;
fraud_details?: ChargeFraudDetails | null;
id: string;
livemode: boolean;
metadata: { };
object: "charge";
on_behalf_of?: Account | string | null;
outcome?: ChargeOutcome | null;
paid: boolean;
payment_intent?: PaymentIntent | string | null;
payment_method?: string | null;
payment_method_details?: PaymentMethodDetails | null;
presentment_details?: PaymentFlowsPaymentIntentPresentmentDetails;
radar_options?: RadarRadarOptions;
receipt_email?: string | null;
receipt_number?: string | null;
receipt_url?: string | null;
refunded: boolean;
refunds?: {
data: Refund[];
has_more: boolean;
object: "list";
url: string;
}
| null
;
review?: Review | string | null;
shipping?: Shipping | null;
source_transfer?: Transfer | string | null;
statement_descriptor?: string | null;
statement_descriptor_suffix?: string | null;
status: "failed" | "pending" | "succeeded";
transfer?: Transfer | string;
transfer_data?: ChargeTransferData | null;
transfer_group?: string | null;
}
| string | null
;
refunded: boolean;
refunds: {
data: FeeRefund

Application Fee Refund objects allow you to refund an application fee that has previously been created but not yet refunded. Funds will be refunded to the Stripe account from which the fee was originally collected.

Related guide: Refunding application fees

interface FeeRefund {
amount: number;
balance_transaction?: BalanceTransaction | string | null;
created: number;
currency: string;
fee: ApplicationFee | string;
id: string;
metadata?: { } | null;
object: "fee_refund";
}
[]
;
has_more: boolean;
object: "list";
url: string;
}
;
}
default application/json

Error response.

interface Error {
error: ApiErrors
interface ApiErrors {
advice_code?: string;
charge?: string;
code?: string;
decline_code?: string;
doc_url?: string;
message?: string;
network_advice_code?: string;
network_decline_code?: string;
param?: string;
payment_intent?: PaymentIntent;
payment_method?: PaymentMethod;
payment_method_type?: string;
request_log_url?: string;
setup_intent?: SetupIntent;
source?: BankAccount | Card | Source;
type: "api_error" | "card_error" | "idempotency_error" | "invalid_request_error";
}
;
}