Merchant Setup
Setting up your NaafiPay account is the step between test mode and managing live payment records. This page walks you through the four required steps — Know Your Customer (KYC), business payment account linkage, brand configuration, and going live — in the order you should complete them. Most merchants are fully live within one business day, provided their KYC documents are clear and their payment account details match the registered business. You can use test mode for the entire integration before any of this is done.
Step 1. Complete KYC
Navigate to Settings → Business Verification. You will need to upload the following documents:
- National ID (NID) of the business owner — both sides
- Trade licence (for registered businesses) or a clear selfie holding the NID (for sole proprietors)
- TIN certificate, if you have one
- One utility bill from the last three months showing the business address
Documents are reviewed by our compliance team within four business hours. You will be notified by email when verification is complete.
Step 2. Link your business payment account
Go to Settings → Settlement and add the bank account or MFS wallet where customers or your third-party provider pay your business. NaafiPay records the related references and status but does not receive, hold or deposit those funds.
Step 3. Configure your brand
Open Settings → Brand and upload your logo, set your storefront colour, and write a one-line tagline. These appear on the hosted checkout, the customer portal, receipt emails, and the payment-link landing pages. A well-branded checkout converts meaningfully better than the default — invest five minutes here.
Step 4. Switch to live mode
Once KYC is approved and a business payment account is linked, the Go Live button in your dashboard becomes active. Click it, then generate a new key from Settings → API Keys → Generate Live Key. Live keys are prefixed pg_live_. Update your production environment variables and redeploy.
- Replace the test key in production with the live key
- Update webhook URLs if they differ between environments
- Run one real payment of a small amount (BDT 10) end to end
- Confirm the payment appears in your dashboard and a webhook is delivered
- Monitor the first day closely for any unexpected errors