Guides
Stripe web checkout
If you sell subscriptions on the web with Stripe, the creator’s click ID can travel in the URL to your checkout and be written into Stripe metadata. That makes the purchase a deterministic match (DDeterministic D1). Web revenue carries no app-store fee.
1. Put the Proofline keys in the right metadata
Set the same proofline_* keys the SDKs write to RevenueCat (proofline_end_user_id,
proofline_creator_id, proofline_program_id, and the click or code you have):
- Subscriptions: in subscription metadata, via
subscription_data.metadataon the Checkout Session. Stripe copies it to every invoice of the subscription, so renewals carry it too. - One-off payments: in the Checkout Session metadata, plus
proofline_product_idif you want it on the receipt.
const session = await stripe.checkout.sessions.create({
mode: 'subscription',
line_items: [{ price: 'price_…', quantity: 1 }],
client_reference_id: endUserId, // a UUID here is read as the Proofline end-user id
subscription_data: {
metadata: {
proofline_end_user_id: endUserId,
proofline_creator_id: creatorId,
proofline_program_id: programId,
},
},
success_url: 'https://example.com/welcome',
});
2. Send these events to Proofline
invoice.paid, checkout.session.completed, checkout.session.async_payment_succeeded,
charge.refunded, customer.subscription.updated and customer.subscription.deleted.
3. Processor fee
Commission is paid on net revenue. Stripe’s fee is taken as 2.9% of the tax-inclusive total by default. A per-app setting for your actual rate is on the way.