> Final MVP decision, revision 4: Stripe Connect is the agreed online payment model. Full-price coffees support both online checkout (automatic fee and stamps) and café-handled payment (staff-confirmed stamps, no platform commission). Prepaid packs are online-only in this MVP. PRODUCT_SPEC.md is authoritative.

> Revision 3 update, 18 October 2026: PRODUCT_SPEC.md is the current decision record. Mobile full-price coffee payments join prepaid packs in scope; ten full-price coffees earn a reward. Square documents OAuth application fees, subject to country/currency requirements. SumUp OAuth is documented, but automatic online platform commission remains unverified and may require a partner arrangement. Earlier recommendations below are historical where they conflict.

# MVP payment decision

Recommended first integration: Stripe Connect with each cafe as merchant, direct charges and hosted Checkout. Keep the existing till/terminal; record prepaid redemptions and reconcile sales separately. Reusing a till does not imply online payment credentials or POS synchronization.

Customer flow: choose pack, continue to hosted guest checkout, use Apple Pay/Google Pay where eligible or card fallback, receive a recoverable pass after server-confirmed payment. No platform sign-up required before purchase. Bank authentication can add a step. Receipt/recovery email is distinct from optional cafe-specific marketing consent; withdrawal must affect that cafe and purpose only.

Merchant flow: verify business and bank details in provider-hosted onboarding; check payment capabilities before publishing offers. Existing Stripe accounts may connect through OAuth, subject to account restrictions. Current Stripe guidance recommends Accounts v2 for new platforms; legacy Standard tutorials are not the default implementation blueprint. Confirm existing-account reuse and direct-charge fee configuration with Stripe.

## Alternatives and pricing

| Provider | Fit | Verified Spain cost / constraints |
|---|---|---|
| Stripe | Default MVP | Standard European cards 1.5% + EUR 0.25; EUR 20 pack costs EUR 0.55 before platform fee. Stripe-prices-merchants Connect model advertises no additional platform account/payout fees; other configurations differ. |
| Square | Good for an existing Square cafe cohort | EU/EEA online cards 1.4% + EUR 0.25; OAuth, wallets and application fees supported. Requires another provider integration. |
| SumUp | OAuth and hosted wallet checkout available | Spain public pricing extraction omitted online rate; obtain current quote. Confirm platform fee economics/partner terms. |
| Redsys | Later bank-led adapter | Needs each cafe's virtual-terminal bank agreement and wallet activation. Physical terminal alone is insufficient. Bank-specific price and credentials. |

Prices checked against official pages 18 October 2026; card category and negotiated terms change costs. Do not represent a pack as approved by any provider before provider review of the exact business model.

## Server boundary

Create sessions with server-controlled prices and connected cafe identity. Keep secrets off the browser. Verify signed Connect webhook events, paid status, merchant, amount and currency; deduplicate both provider event and payment IDs. Issue credits transactionally once. Treat the success redirect as display only. Keep payment/refund references and handle disputes. The reference model and SQL in `../core` demonstrate invariants only; no real payments, storage, authentication or webhook integration is wired or deployed.

## Official references

- https://docs.stripe.com/connect/accounts-v2/saas-platform-payments-billing
- https://docs.stripe.com/connect/oauth-standard-accounts
- https://docs.stripe.com/connect/standard-accounts
- https://stripe.com/es/connect/pricing
- https://docs.stripe.com/payments/checkout/guest-customers
- https://support.stripe.com/questions/what-should-i-know-about-using-direct-charges?locale=en-GB
- https://developer.squareup.com/es/es/online-payment-apis?country_redirection=true
- https://developer.squareup.com/reference/square/o-auth/authorize
- https://squareup.com/es/es/legal/general/fees
- https://developer.sumup.com/online-payments/checkouts/hosted-checkout
- https://developer.sumup.com/tools/authorization/oauth
- https://www.sumup.com/es-es/precios/
- https://pagosonline.redsys.es/desarrolladores-inicio/documentacion-otros-metodos-de-pago/otros-metodos-de-pago-apple-pay/
- https://pagosonline.redsys.es/desarrolladores-inicio/documentacion-otros-metodos-de-pago/otros-metodos-de-pago-google-pay/
