PayPal Integration Guide
This page explains how to connect your PayPal account and configure ExisOne to auto-generate licenses on successful payments.
1. Create a PayPal App and Webhook
- Log into PayPal Developer and create a REST app (Sandbox for testing).
- Record the Client ID and Client Secret.
- Create a Webhook for your site URL:
- URL:
https://YOUR-SITE/api/paypal/webhook - Events: at minimum,
PAYMENT.CAPTURE.COMPLETED
- URL:
- Copy the Webhook ID.
2. Configure in ExisOne
- Open PayPal Integration > PayPal Apps and Events.
- Click New App and enter:
- Webhook Id
- Client Id
- Client Secret
- Is Live (unchecked for Sandbox)
- Is Active (checked)
- Is Default (optional)
3. Set Product Defaults
Each product can specify a default license plan used when generating keys from PayPal payments.
- Default License Days: number of days; set to 0 for Perpetual (2049‑12‑31).
- Trial Days: number of days a trial is valid when validating without a key.
4. Test Purchase (Sandbox)
- Open PayPal Integration > Test Purchase.
- Select your product and the correct PayPal app (Sandbox Client Id).
- Complete a test payment. Within seconds, the ExisOne webhook will verify the event and generate license key(s) based on product default days.
- Check PayPal Apps and Events for the event status and Dashboard for the generated key(s).
5. Notes & Troubleshooting
- Product Mapping: The purchase must include the product id in
custom_id. The Test Purchase page does this automatically. - Perpetual Enforcement: If a product’s Default License Days is 0, generated licenses are always perpetual, regardless of any incoming days.
- Tenant Context: The system generates the license in the product’s tenant; ensure products are defined in the intended tenant.
- Email Templates: Configure per-product email templates so customers receive keys upon successful payment.
- Trials: Validation without a key returns a trial response if the device was never activated for that product and the product has
TrialDays > 0.
6. Going Live
- Switch your PayPal app to Live credentials.
- Update the webhook to the production URL and verify events are received.
- Ensure product defaults and email templates are correct.