Prerequisites
- A Stripe account (live or test mode)
- A Stripe Secret Key (
sk_live_...orsk_test_...) - A Stripe Webhook Signing Secret (
whsec_...)
Setup
Step 1 — Get your Stripe API Key
- Go to Stripe Dashboard → Developers → API Keys.
- Copy your Secret key (
sk_live_...).
Step 2 — Connect in Fluxrate
- Open Dashboard → Integrations.
- Click Connect next to Stripe.
- Fill in the form:
- Click Create Connection. Fluxrate generates a unique Webhook URL for your integration.
Step 3 — Configure the Webhook in Stripe
- Go to Stripe Dashboard → Developers → Webhooks.
- Click Add endpoint.
- Paste the Webhook URL from Fluxrate (shown after connecting):
- Under Events to send, select:
checkout.session.completedpayment_intent.succeededpayment_intent.payment_failedinvoice.payment_succeededinvoice.payment_failed
- Click Add endpoint.
- Copy the Signing secret (
whsec_...) shown on the webhook details page.
Step 4 — Save the Webhook Secret
- Back in Fluxrate, go to Dashboard → Integrations → Manage (Stripe).
- Paste the signing secret into the Webhook Secret field.
- Click Save Changes.
How Payments Work
Fluxrate passesinvoice_id and customer_id in the Stripe Payment Link metadata. When Stripe fires a webhook on payment completion, Fluxrate reads these values from data.object.metadata to identify the invoice and marks it as PAID.
Webhook Payload Handling
Fluxrate reads the following fields from Stripe webhook payloads:
Events that trigger invoice payment:
checkout.session.completedpayment_intent.succeeded
Managing the Integration
Troubleshooting
Webhook signature verification failed
Webhook signature verification failed
The
Stripe-Signature header didn’t match your stored webhook secret. Make sure you copied the Signing secret from Stripe (starts with whsec_), not the endpoint URL. Re-save the secret in Fluxrate and ensure Stripe is sending to the exact URL shown.Invoice not marked as paid after payment
Invoice not marked as paid after payment
Check that your Payment Link was created with
invoice_id in the metadata. Also confirm that the webhook event (checkout.session.completed or payment_intent.succeeded) is in your subscribed events list in Stripe Dashboard.Webhook events not being received
Webhook events not being received
Verify the webhook URL in Stripe Dashboard matches the one shown in Fluxrate exactly. Check Dashboard → Integrations → Webhook Events in Fluxrate to see all received events and their statuses.