Add application_fee_amount (in the currency's smallest unit) to a PaymentIntent or charge creation request; this amount is deducted from the charge and held in the platform's balance as an application fee
Retrieve the ApplicationFee object via GET /v1/application_fees/{id} or list fees via GET /v1/application_fees to audit collected fees per connected account
To refund an application fee, POST /v1/application_fees/{id}/refunds with an optional amount; omitting amount refunds the full fee
Understand that application fee refunds do not automatically trigger a refund to the customer — they only return the fee to the connected account's balance; issue the charge refund separately if needed
When a charge is fully refunded, Stripe automatically reverses any application fee; for partial charge refunds, the fee is partially reversed proportionally unless you explicitly issue a fee refund
Monitor fee-related events (application_fee.created, application_fee.refunded) via webhooks to maintain an accurate platform revenue ledger
Known gotchas
application_fee_amount cannot exceed the charge amount; Stripe will reject the request if the fee is larger than the net receivable after Stripe's own fees — verify the arithmetic before submitting
For destination charges, the fee is taken from the transfer to the connected account; for separate charges and transfers, the platform retains any amount not explicitly transferred — the fee mechanics differ between charge types, so consult the docs for your specific pattern
Application fee refunds reduce platform revenue but do not affect the customer-facing refund; ensure your refund logic handles both the charge refund and any associated fee refund as separate API calls
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp