Connect Stripe
Bill clients on your own Stripe account and keep the full margin.
Wozena bills your clients through your own Stripe account. Connect it once and you can sell plans, send payment links, rebill call usage and see your margin, while every payment lands in your Stripe balance.
- You are the agency owner. Only owners can open Provider Connections.
- A Stripe account for the business that receives client payments.
- Access to that account’s API keys in the Stripe dashboard.
How client billing works#
You are the merchant of record. Your clients pay you directly on your Stripe account, under your business name. Wozena never collects, holds or takes a cut of client revenue. It uses your key to create the Stripe objects that billing needs:
- A product and recurring price for each client plan you create.
- Customers, Checkout sessions and subscriptions when a client subscribes.
- Invoice items for usage beyond the plan’s allowance, collected on the client’s next invoice.
Your own Wozena subscription is separate. It is billed by Wozena and never mixed with client payments. See Your Wozena plan.
Get a Stripe secret key#
In Stripe, open the API keys page and copy the secret key for the account that should receive client payments. Live keys start with sk_live_ and test keys start with sk_test_.
A standard secret key works with no extra setup. If your company policy requires a restricted key, give it the permissions listed in Using a restricted key.
Connect your account#
- Open Provider ConnectionsGo to Provider Connections. Find the Stripe row, described as “Plans, subscriptions, invoices and client revenue.”, and click “Connect Stripe”.
- Paste your keyPaste the key into “Stripe secret key”. If you don’t have it yet, the “Open Stripe API keys” link opens Stripe in a new tab.
- Connect and verifyClick “Connect and verify”. The button reads “Validating and configuring…” while Wozena checks the key and sets up your account.
- Confirm it workedYou see “Stripe is ready for client billing”. The Stripe row now shows “Connected”, your Stripe account name, and “Live” or “Test”. On Client Billing, the header reads “Stripe connected” followed by your account, “Live mode” or “Test mode”, and “Webhook healthy”.
Next, create your first client plan.
What happens automatically#
When you click “Connect and verify”, Wozena:
- Checks the key with Stripe.
- Creates a webhook endpoint on your Stripe account that sends billing events to Wozena.
- Stores the webhook’s signing secret encrypted, so Wozena can confirm each event really came from your Stripe account.
You don’t need to create a webhook in Stripe yourself. If any part of setup fails, Wozena removes what it created, so you can fix the problem and try again without cleaning anything up. The endpoint listens for these events:
| Event category | Events | Why Wozena needs them |
|---|---|---|
| Checkout | Checkout completed | Activates a client’s subscription once Stripe confirms payment. |
| Subscriptions | Created, updated, deleted | Keeps each client’s status (active, past due, canceled) in step with Stripe. |
| Invoices | Created, finalized, paid, payment failed, updated | Fills the invoice list and outstanding balance, and triggers failed-payment alerts. |
| Refunds | Created, updated, failed | Keeps revenue reports net of refunds. |
| Disputes | Created, updated, closed | Keeps revenue reports net of lost disputes. |
| Credit notes | Created, updated, voided | Keeps revenue reports net of credits. |
Using a restricted key#
A restricted key works if it is allowed to create webhook endpoints and has access to every resource below. If you are unsure, use a standard secret key.
| Stripe permission | What Wozena uses it for |
|---|---|
| Account (read) | Confirming which Stripe account is connected. |
| Webhook endpoints | Creating the endpoint that sends billing events to Wozena. |
| Products | Creating a product for each client plan. |
| Prices | Creating the recurring price behind each plan. |
| Customers | Creating a Stripe customer for each subscribing client. |
| Checkout Sessions | Payment links and storefront checkouts. |
| Subscriptions | Starting, changing and cancelling client subscriptions. |
| Customer portal (billing portal) | Sending clients to your Stripe portal from Usage & Billing. |
| Invoices and invoice items | Reading invoices and adding usage charges. |
| Refunds | Reflecting refunds in revenue reports. |
Start in test mode, then go live#
We recommend proving the whole flow with test money before a real client pays you.
- Connect a test keyConnect a key that starts with
sk_test_. The Stripe row shows “Test” and Client Billing shows “Test mode”. - Create a plan and a test clientCreate a plan, then create a client and invite a client admin you control (see Clients).
- Run a test checkoutFrom the client’s “Billing” tab, send a payment link and pay it with one of Stripe’s test cards.
- Check deliveryThe client’s subscription becomes active and the Stripe row on Provider Connections shows “Delivery verified” with the time of the last event.
- Switch to your live keyClick “Update connection”, paste your
sk_live_key and click “Connect and verify”.
Check connection health#
Once connected, the Stripe row on Provider Connections shows:
| Item | What it tells you |
|---|---|
| “Events · 24h” | How many Stripe events Wozena received in the last 24 hours. |
| “Failed” | Events Wozena could not process. These need your attention. |
| “Reconciliation” | Whether Wozena’s records match Stripe: in sync, or issues found. |
| “Delivery verified” | Events are arriving. Shows how long ago the last one came in. |
Before any event has arrived, the row says “No events received yet.” This is normal right after connecting. A real or test checkout is the proof that delivery works end to end.
Use “Test connection” at any time to check that the stored key still works.
Replay failed events
When events fail, a banner at the top of Provider Connections tells you how many need attention, and the Stripe row lists them under “Failed billing events” with the error for each.
- Read the errorEach failed event shows the reason it failed.
- Fix the cause firstReplaying an event without fixing its cause fails again. The product reminds you: “Fix cause first, then replay”.
- ReplayClick “Replay” on one event, or “Replay all” in the banner. Client records catch up from the stored events.
Set up your Stripe dashboard#
Some client-facing billing is configured in Stripe, not in Wozena. Work through this list before going live.
- Customer portal. Clients reach your Stripe customer portal from “Manage billing” in their Usage & Billing page. In Stripe’s customer portal settings, decide whether clients can update payment methods, cancel, and switch plans.
- Invoice and checkout branding. Add your logo, colours and business details in Stripe’s branding settings so invoices and Checkout match your brand.
- Tax. Wozena doesn’t add tax to client checkouts. If you need to collect tax, set it up in Stripe yourself and check the rules that apply to your business.
Rotate or disconnect#
Rotate your key
Create a new key in Stripe, then on the Stripe row click “Update connection”, paste it and click “Connect and verify”. Existing plans, subscriptions and billing records are preserved. Revoke the old key in Stripe only after the new one is connected.
Disconnect
Click “Disconnect” on the Stripe row. New plans and client checkouts stop until Stripe is reconnected. Existing billing records remain. Wozena also removes the webhook endpoint it created on your account. If the key was already revoked in Stripe, Wozena can’t reach your account, so delete that endpoint in Stripe yourself.
Troubleshooting#
| Problem | What to do |
|---|---|
| You can’t see Provider Connections | Only the agency owner can manage provider connections. Ask the owner to connect Stripe. |
| The key is rejected | Copy the full secret key again from the right Stripe account. For a restricted key, check it can create webhook endpoints and has every permission in the table above. Nothing is left behind, so just try again. |
| Row says “No events received yet.” | Run a real or test checkout. Delivery is verified when the first event arrives. |
| New plan says “Complete Stripe setup first” | Stripe isn’t connected, or the connection was removed. Connect it on Provider Connections. |
| A client paid but still shows Awaiting payment | Look for failed events on the Stripe row, fix the cause and replay. Check that the webhook endpoint still exists in Stripe. |
For problems outside billing, see Troubleshooting.