Skip to content

Stripe one-time earned fees

Each distinct successful positive one-time payment earns one immutable Proxy fee fact:

earned fee = floor(percentage basis × 3 / 100) + 30 minor units

The fee is earned when the positive payment succeeds. Refunds and disputes never reverse it. A zero/no-cost payment earns no fee. Proxy records earned fees but does not currently invoice or collect them.

openPaymentIntent defaults to the Stripe provider-gross amount; the merchant supplies no additional fee input. After success, Proxy uses verified amount_received evidence as the percentage basis.

A merchant backend may optionally pass one immutable server-only merchandiseSubtotalMinor when tax, shipping, or another non-merchandise amount should be excluded from the percentage portion. Never accept or forward this value from a browser. It is fixed at acquisition reservation and cannot change on a retry.

An override of zero, below 25% of provider gross, or above 400% of provider gross does not block a verified payment, but Proxy flags the value for review.

Examples:

Provider gross Percentage basis Earned fee
10_000 default 10_000 330
10_000 override 8_000 270
0 no-cost no fee

For OT-CO-H, OT-CO-E, and OT-CO-C, Proxy derives the percentage basis from provider-authored Checkout amount_subtotal and complete paginated line evidence. Merchant cart input, presentation/client secret, and the confirmation hash envelope are not fee authority. Provider-finalized pricing stores the normalized final line snapshot plus final amount and currency before a completion can provision.

Stripe redelivery, event reprocessing, and repeated API recovery converge on the same payment/fee identity. A bypassed second positive success is a separate immutable payment and fee fact even though it cannot become the session’s second provisioning winner. Refund/dispute observation can raise merchant events only when selected, but it never edits the original fee.