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?

EventMark booking paid?
First guest pays on StripeNo — call record-payment only
Stripe success_url loadsNo — bridge + record-payment only
PAYSHARE_SESSION_COMPLETED webhookYes — 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=….