Going live
A checklist for real payments — receiving account, detection, Service Credit — and how to switch from test to live safely.
Test mode needs nothing financial. Live mode collects real money into your own bKash or Nagad account, so a few things must be ready first. You set them up in the PayTaka dashboard; the API tells you what's missing. Test setup does not carry over to live — each item below is configured separately.
Checklist#
- Switch to a Live secret key (Developers → API keys → Live) and deploy with it. Test and live data never mix.
- Configure your payment account(s) — a bKash or Nagad number you own, set as the active receiving account for that provider.
- Verify the payment types you want — Send Money, Payment, Cash In, Bank / Card Add Money. Each is enabled and confirmed separately; enabling one doesn't verify another.
- Confirm payment detection (Bridge) is ready for that exact account — the PayTaka Bridge app installed, signed in and healthy.
- Add Service Credit for your business. It covers the small per-payment fee, and it belongs to the business (one balance for all your accounts).
- Create a Live webhook endpoint and store its signing secret securely — it is different from your Test endpoint's. See Webhooks.
- Use your production
return_url(an https URL, or your app's production link). - Run one controlled live payment for a small amount and confirm the
payment.paidwebhook on your Live endpoint.
What live errors mean#
A live POST /v1/payments returns a 409 with one of these when something on the checklist is missing:
| Code | Fix |
|---|---|
payment_detection_not_ready | No enabled, ready receiving method yet — configure an account and confirm detection. |
payment_method_unavailable | None of your allowed_methods is usable right now. |
payment_channel_unavailable | No ready receiving number accepts the requested allowed_channels. |
insufficient_credit | Your business's Service Credit can't cover the next fee — top it up in the dashboard. |
Live payments use your business's Service Credit; if the balance is too low, live payment creation returns insufficient_credit. Test payments never use it.