Payments and accounting
Stripe
Clients pay invoices by card on Stripe's checkout, and the invoice is marked Paid by itself.
Free for 14 days. No credit card needed.
What it does
Connect Stripe to your client work.
- Pay now on Due invoices
A client opens Stripe's hosted Checkout for the invoice's exact amount, from their portal or a shared invoice link.
The client's Billing tab and invoice links - Paid automatically
Stripe's webhook (checkout.session.completed, checkout.session.async_payment_succeeded) marks the invoice Paid, once, with the payment reference.
Invoices and the invoice's Activity - Live or test mode
A test key lets you try the whole flow without real money.
This app's Connection tab
How it works
Connect once. It keeps itself current.
- 1Connect a key
A restricted key (Checkout Sessions: Write, Account: Read) or the secret key.
- 2Add the webhook
Point a Stripe webhook at BravaSpace and save its signing secret.
- 3Clients pay
Pay now appears on Due invoices; card details stay on Stripe's page.
- 4Marked Paid
The webhook marks it Paid within seconds of payment.
Before you start
What you need.
- A Stripe account that can take card payments.
- A restricted key with Checkout Sessions: Write and Account: Read (or the secret key, sk_).
- A webhook endpoint in Stripe with its signing secret (whsec_).
Setting it up
Where to find it.
- Log in to Stripe and open Developers, then API keys.
- Create a restricted key with Checkout Sessions: Write and Account: Read (or reveal the secret key that starts with sk_).
- Then in Developers, Webhooks, add an endpoint with the URL shown on this app's page and the events checkout.session.completed and checkout.session.async_payment_succeeded, and copy its signing secret (whsec_).
In the app, Connect Stripe opens a guided setup with Brava: it asks for each thing in turn, tests the connection and tells you it is working.
Data and privacy
What BravaSpace keeps, and what it can touch.
What is stored
The key and the webhook signing secret as a server-side secret (last four characters shown), the account name and mode. Card details never reach BravaSpace.
Access
Reads the account and creates Checkout Sessions; reads the webhook's payment events. It never refunds, charges or changes anything else.
Disconnecting
Disconnect on this page: the key is removed and Pay now disappears from invoices. Paid invoices stay paid. Delete the webhook in Stripe too if you will not use it again.
Questions
Stripe questions.
Pay now on Due invoices; paid automatically; live or test mode. Reads the account and creates Checkout Sessions; reads the webhook's payment events. It never refunds, charges or changes anything else.
Open Connect Stripe in BravaSpace and paste the Stripe key; Brava tests the connection before saving it. Log in to Stripe and open Developers, then API keys. Create a restricted key with Checkout Sessions: Write and Account: Read (or reveal the secret key that starts with sk_). Then in Developers, Webhooks, add an endpoint with the URL shown on this app's page and the events checkout.session.completed and checkout.session.async_payment_succeeded, and copy its signing secret (whsec_).
The key and the webhook signing secret as a server-side secret (last four characters shown), the account name and mode. Card details never reach BravaSpace.
Disconnect on the Stripe app page in BravaSpace: the key is removed and Pay now disappears from invoices. Paid invoices stay paid. Delete the webhook in Stripe too if you will not use it again.
Brava reads the error and suggests the fix. The common ones: Stripe did not accept the key. Check it starts with sk_ or rk_ and has not been rolled. The restricted key needs Checkout Sessions: Write and Account: Read. The signing secret is on the webhook endpoint in Stripe (Developers, Webhooks) and starts with whsec_.
Try it with one client.
Add some work. Share a file. Ask for feedback. See what your client sees, with your name on it. Free for 14 days. No credit card needed.