Selling with Stripe and PayPal
You keep selling exactly the way you sell today - your own Stripe or PayPal account, your own checkout, your own prices, your money going straight to you. What this integration adds is the last step: when a payment completes, SoftActivate Licensing creates the order, mints the licenses, and emails the keys to your customer, automatically.
Everything below is configured on one console page: Settings → Payments.
Stripe
The integration is notification-based. You add a webhook endpoint in your Stripe dashboard pointing at your personal endpoint URL; Stripe then notifies us of every completed payment, we verify the notification's signature, look the price up in your mapping, and create the order. We never hold credentials that could charge anyone.
1. Add the webhook endpoint
In the Stripe dashboard, open Developers → Webhooks → Add endpoint and paste the Webhook endpoint URL shown on your Payments page. Select these events (or simply "all events" - anything we don't handle is ignored):
checkout.session.completedandcheckout.session.async_payment_succeededinvoice.paidandinvoice.payment_failedcustomer.subscription.updatedandcustomer.subscription.deletedpayment_intent.succeeded(only needed for custom card-form integrations)
After creating the endpoint, Stripe shows its signing secret (whsec_…). Paste it
into the Payments page. This secret only lets us verify that notifications really
come from Stripe - it cannot charge, refund, or read anything.
2. Create a restricted, read-only key
One-off sales arrive in a notification that does not include what was bought, so we
need one read-only call to fetch it. In Developers → API keys → Create restricted
key, grant a single permission - Checkout Sessions: Read - and leave everything
else at None. Paste the resulting rk_… key into the Payments page.
The panel refuses full secret keys (sk_…) by design: never share those with anyone.
3. Map your prices to your products
Each row of the Price → product mapping pairs a Stripe price id (price_…, from
your Stripe product catalog) with the reference id of the product it sells in your
SoftActivate catalog. Recurring prices produce subscription licenses that renew as the
Stripe subscription renews; one-time prices produce ordinary orders.
Sales of prices that are not in the mapping are ignored, so a Stripe account that also sells other things - services, hardware, anything - is safe to connect.
4. Sell
That's the whole setup. It works with whatever sell-side you have:
- Payment Links - zero code: create a link in the Stripe dashboard for a mapped price and share it. Great for testing the integration end to end in Stripe's test mode before going live.
- Stripe Checkout - your existing integration, unchanged.
- Stripe Invoicing / Subscriptions - invoices and renewals flow through the same webhook; renewals extend the customer's licenses in place, failed payments open the grace window, cancellations run to the end of the paid period.
- A custom card form (raw PaymentIntents) - the one case needing a code touch:
add a
sku_idmetadata field (and optionallyquantity) where your code creates the PaymentIntent, since the raw charge otherwise references no product at all.
Refunds are notified but never revoke licenses automatically - revocation stays a deliberate action on the license page in the console.
PayPal
PayPal needs no credentials at all - notifications are verified with PayPal directly. In your PayPal button, subscription, or IPN configuration set:
- the IPN notification URL to the value shown on your Payments page;
- the
customfield to the value shown on your Payments page (it identifies your account); - the item number (
item_number) to the reference id of the product being sold.
One-off payments create orders; subscription payments create the subscription on the first payment and extend the licenses in place on every renewal, with failed payments opening the grace window and cancellations running to the end of the paid period - the same lifecycle as subscriptions everywhere else.
What your customer sees
However the sale happened, the result is the same: an order with a support-referenceable order number, license keys delivered by email to the address the payment carried, and licenses that activate like any other - the console's orders view shows every sale with its licenses and delivery record.