Applies to: Bebaak (app.bebaak.co) — any organisation, including Bebaak itself. Last checked: 5 November 2026.
Provider menus change from time to time; if a name below differs slightly, look for the nearest match. Never e-mail or share your keys — paste them only into Bebaak.
What you get: payment links and “Pay now” buttons on invoices that collect money into your own Stripe account. Bebaak never holds the money and never sees card details — Stripe hosts the payment page. When a payment succeeds, Bebaak marks the invoice paid and records the receipt in Books. You can also check a payment's status and request a refund from Bebaak.
Before you start
- A Stripe account for your business (test access is enough to begin).
- In Bebaak you must be the organisation's admin.
- Keep Stripe in test mode until the check in step 7 passes (the Test mode toggle in the dashboard).
Steps
- Open the wizard in Bebaak. Settings → Integrations, choose Stripe under Payments and start the wizard. The status shows “Not connected”.
- Get the keys from Stripe. Sign in at dashboard.stripe.com. Developers → API keys. Copy the Publishable key (pk_test_…) and reveal and copy the Secret key (sk_test_…). Bebaak uses the secret key on the server only.
- Paste the keys in Bebaak (step 2 of the wizard) and leave Test mode ticked:
| Field in Bebaak | What to paste |
|---|---|
| Publishable key (pk_…) | Publishable key |
| Secret key (sk_…) | Secret key |
| Webhook secret | the signing secret (whsec_…) Stripe shows after you add the endpoint |
- Press Save. Status becomes “Keys saved — not tested”. Keys are stored encrypted and are never shown again.
- Press Test connection. Bebaak makes one real, read-only call to Stripe. Only if it succeeds does the status become “Connected (test passed)”.
- Webhook (so payments show as paid automatically): copy the Webhook URL shown in the wizard. In Stripe: Developers → Webhooks → Add endpoint. Paste Bebaak's webhook URL and select
checkout.session.completed,checkout.session.async_payment_succeeded,checkout.session.async_payment_failed. Copy the Signing secret into Bebaak's “Webhook secret”. - Test-mode check: create a small payment request in Bebaak (Banking → Payment links, or “Pay now” on a test invoice) and pay it with test details. Use Stripe's test card 4242 4242 4242 4242 (any future date, any CVC) in Test mode. Within a minute the request should show Paid, and Settings → Integrations → Health & log should show the calls as OK.
Go-live checklist
- Activate your Stripe account, copy live keys (pk_live / sk_live), replace them in Bebaak, untick “Test mode”, and add a live webhook endpoint (its signing secret is different).
- Press Test connection again — it must pass in live mode.
- Make one small real payment (for example ₹1–₹10) and refund it from Bebaak to see the full cycle.
- Only then share payment links with customers.
Refunds and status
- On a paid request, Check status reads the payment from Stripe (it does not change anything).
- Refund (admin only) asks Stripe to return all or part of the amount; Bebaak refuses more than what is left unrefunded. Refunds are created against the PaymentIntent; Stripe returns money to the card (5–10 days on the card issuer's side). Stripe does not return its fee on refunds.
- Record the refund in Books (Payments → refund) so the customer's account is right — the gateway moves the money, Books keeps the accounts.
Troubleshooting
- “No such checkout session” — The link was created in the other mode. Recreate it after matching the keys.
- Webhook 400 / signature error — Paste the signing secret of the endpoint in the same mode (test vs live).
- Anything else: Settings → Integrations → Health & log shows each call, whether it worked, the number of tries (Bebaak retries a call up to 3 times if the provider is briefly unavailable) and the provider's message. Keys are never written to the log.
Security notes
- Keys are entered only by you in Bebaak and stored encrypted; Bebaak staff cannot read them back.
- Webhooks are accepted only with a valid signature (or, for PhonePe, a valid X-VERIFY), and repeats are ignored.
- To stop using Stripe: Settings → Integrations → Stripe → Disconnect (keys are deleted; payment links stop using it).

