Own payment rails
PayShare orchestrates splits; your Stripe or Adyen account captures each share.
In Mode 2, PayShare does not create PaymentIntents or Checkout Sessions on PayShare’s Stripe. You charge each participant on your PSP and tell PayShare via record-payment when each share is authorized or captured.
Trust boundaries
- STRIPE_SECRET_KEY (or Adyen keys) — your server only, never PayShare, never the browser.
- PAYSHARE_API_KEY — your server only, for outbound PayShare API calls.
- Create-payment signing secret — verify inbound POST from PayShare before creating Checkout.
- Webhook signing secret — verify PAYSHARE_SESSION_COMPLETED before fulfilment.
When is the booking paid?
| Event | Mark booking paid? |
|---|---|
| First guest pays on Stripe | No — call record-payment only |
| Stripe success_url loads | No — bridge + record-payment only |
| PAYSHARE_SESSION_COMPLETED webhook | Yes — once, idempotent on eventId |
Host vs guest after Stripe
- Host: payshareReturnId is always null; 302 to payshareHostResumeUrl (host hub), not /join.
- Guest: 302 to payshareParticipantReturnUrl or /return?payshareReturnId=….