Inline checkout setup
This page covers License Bridge dashboard configuration for inline wp-admin checkout. No extra SDK wiring is required beyond checkout_button() — see SDK Usage.
Prerequisites
-
Product plans — Your product must have at least one price plan with pricing configured. Plan slugs and plan types (
month,annual,life) must match what you pass tocheckout_button(). Find your product slug on the dashboard. -
Paddle (inline or hosted) — Connect Paddle Billing on the product. Sandbox vs production behavior follows your Paddle environment and License Bridge sandbox mode.
-
Stripe (inline or hosted) — Connect Stripe on the product. The SDK reads
stripePublicKeyfrom the/product-price-info/{product}API response to mount Stripe Elements in the billing modal. -
PayPal — PayPal works only via hosted checkout (
purchase_link()). See existing PayPal setup; no inline modal support.
How secrets are handled
Payment provider secrets (Stripe secret key, Paddle API key, webhook secrets) are stored on License Bridge, not in WordPress.
WordPress AJAX endpoints proxy:
- Plan lookup →
GET /product-price-info/{product} - Charge initiation →
POST /charge/{product}/{gateway}/{planSlug}
OAuth credentials and API keys remain on License Bridge servers after purchase, as with hosted checkout.
Troubleshooting
| Symptom | Common cause |
|---|---|
| Button renders but modal/CSS is broken | Missing or wrong plugin-file → assets not loaded from vendor/ |
| Empty button on frontend | Expected — inline checkout is wp-admin only |
| "Unable to load plan information" | Gateway not enabled for the product, or API unreachable |
| Wrong plan or price | plan-slug or plan-type does not match dashboard plans |
| Stripe card field missing | Stripe not connected on the product, or missing publishable key in API response |
| Paddle overlay fails | Paddle Billing not connected, or sandbox/live mismatch |
| Works in production, fails locally | Set license-bridge-api-url in Loader::register() to a reachable API (e.g. ngrok tunnel) — see local/staging example |
If inline checkout fails after verifying the above, confirm the product is active and the selected gateway appears on your landing page checkout.