Documentation Index
Fetch the complete documentation index at: https://docs.flexprice.io/llms.txt
Use this file to discover all available pages before exploring further.
Overview
When invoice sync is enabled, everyfinalized Flexprice invoice is automatically pushed to Whop. Whop generates a hosted payment page and Flexprice stores the payment-link directly on the invoice.
Key Points:
- Only finalized invoices are synced - drafts are not pushed
- The same invoice is never created twice in Whop (idempotent)
- Every invoice type that finalizes is synced - including topup (credit purchase) invoices
- The customer must have an email address in Flexprice - Whop requires it to create an invoice
When an Invoice Syncs
Flexprice syncs an invoice to Whop when all three conditions are met:- Invoice status transitions to finalized
- Whop connection is active
- Invoice Sync (outbound) is enabled on the connection
What Gets Created in Whop
For each synced invoice, Flexprice creates a Whop invoice with:| Field | Value |
|---|---|
| Product | From connection config, or auto-created Flexprice Billing Product |
| Plan type | one_time |
| Amount | Invoice amount_due, rounded to 2 decimal places |
| Collection method | send_invoice |
| Due date | Invoice due date if in the future - otherwise defaults to 30 days from now |
| Customer name | Customer name from Flexprice |
| Customer email from Flexprice | |
| Internal notes | Flexprice invoice ID (inv_...) - stored for reference |
Product Handling
Every Whop invoice must belong to a product. Flexprice handles this automatically:- Product ID set on connection → Flexprice verifies it exists in Whop and uses it
- No Product ID → Flexprice creates Flexprice Billing Product (visibility:
quick_link, not listed in the Whop marketplace) and saves the ID back to the connection for all future invoices
Checkout URL
After the Whop invoice is created, Flexprice fetches the checkout URL from the associated Whop plan and saves it on the Flexprice invoice:Payment Reconciliation
When the invoice is paid through Whop:- Whop fires an
invoice.paidwebhook to Flexprice - Flexprice identifies the corresponding invoice
- If already paid - skipped (idempotent)
- Flexprice marks the invoice as paid
If Flexprice marks the invoice paid first (e.g., manual reconciliation), Flexprice automatically calls Whop to mark the Whop invoice as paid too.
Troubleshooting
| Issue | Cause | Solution |
|---|---|---|
| Invoice not syncing | Invoice sync toggle off | Enable outbound sync in connection settings |
| Sync fails - customer error | Customer has no email address | Add an email to the customer in Flexprice |
No whop_checkout_url on invoice | Plan fetch failed after invoice creation | Check worker logs for the warning - re-trigger by contacting support |
| Invoice created in Whop but sync retrying | Entity mapping write failed | Check integration logs; mapping is written after invoice creation |
Related Documentation
- Connection Setup - Set up your Whop connection
- Integration Workflow - End-to-end flow

