Two modes of Stripe
- Platform billing
- Per-org billing (PSA invoicing)
Handles your Regentra subscription charges — plan fees, per-seat PSA billing, and compliance tenant add-ons. This is managed automatically when you subscribe and requires no additional setup. See Billing & Subscriptions for details.
Setting up per-org Stripe
Get your Stripe API keys
In the Stripe Dashboard, navigate to Developers → API Keys and copy your Publishable key and Secret key.
Test the connection
Click Test Connection to verify Regentra can communicate with your Stripe account.
Invoice generation and payment
Once Stripe is connected, the invoicing flow works as follows:- Technicians log billable time against tickets
- Time entries go through the approval workflow
- An admin generates an invoice from approved entries
- The invoice is sent to the client with a Stripe-hosted payment link
- The client pays online via credit card or ACH
| Status | Meaning |
|---|---|
| Draft | Invoice created but not yet sent |
| Sent | Invoice delivered to the client |
| Paid | Payment received through Stripe |
| Overdue | Payment deadline has passed without payment |
Webhook configuration
Regentra uses Stripe webhooks to receive real-time invoice events. Regentra generates a per-org webhook URL with a random token in the path (so two orgs never share a route), but you have to paste that URL into Stripe yourself — Stripe does not let third parties create endpoints in your account on your behalf.Copy the webhook URL from Regentra
On the Stripe card, copy the Webhook URL value. It looks like
https://app.regentra.io/api/webhooks/stripe/{token} with a long random token unique to your org.Add the endpoint in Stripe
In the Stripe Dashboard → Developers → Webhooks → Add endpoint, paste the URL.
Subscribe to the events
The critical event is
invoice.paid — that’s the one that flips a Regentra invoice to PAID and triggers the QuickBooks payment bridge if QB is connected. You can also subscribe to invoice.payment_succeeded and invoice.payment_failed for the audit log, but only invoice.paid drives state transitions.Paste the Signing Secret back into Regentra
Stripe shows the endpoint’s Signing Secret (starts with
whsec_). Paste it into the Webhook Signing Secret field on the Regentra card and Save. The signature is verified on every webhook call — a missing or wrong secret causes inbound events to be rejected.invoices.retrieve for any PSA invoice flagged as SENT to catch the case where Stripe delivered invoice.paid while Regentra was briefly unreachable. This makes the integration self-healing — a missed webhook does not strand the invoice.