Payments & Pay Now
Where: Sidebar → Payments (the receipts register), plus the Collect payment dialog available on every unpaid invoice.
The Payments page
Every customer payment recorded against an invoice lives here — searchable, exportable, with a printable receipt per row.
- KPIs: Total Received · Received (This Month) · Receipts count.
- Table: Receipt # · Date · Invoice · Customer · Mode · Reference · Amount — plus a Receipt print/email menu on each row.
- Export downloads the register as CSV.
Record a payment
- Click Record Payment.
- Pick the Invoice — the dropdown lists outstanding invoices as
INV-… — Customer · bal ₹X. Choosing one auto-fills the amount with the full balance. - Adjust the Payment Date, Amount, Method (Cash, Bank Transfer, Cheque, UPI, RTGS, NEFT, Other) and Reference / UTR if needed.
- Click Record Payment — the payment-receipt email dialog opens so you can send the customer a receipt immediately.
You can also record a payment directly from an invoice row (⋮ → Record payment) or from the Receivables page (Pay).
Pay Now — let customers pay you online
ZAPTIZ can attach a Razorpay payment link + QR code to any unpaid invoice. The customer scans or clicks, pays by UPI / card / net-banking, and the money lands directly in your company's own bank account.
- Your subscription to ZAPTIZ is billed through the platform's Razorpay account.
- Invoice Pay-Now links use your company's own Razorpay account and keys. The platform never touches your customers' money.
One-time setup (Company Admin)
- In your own Razorpay Dashboard → Settings → API Keys, generate a key pair.
- In ZAPTIZ, go to Settings → Integrations → Razorpay, paste the Key ID and Key Secret (and optionally a Webhook secret), and click Connect Razorpay.
- Keys are validated live, then the secret is stored encrypted — you'll only ever see a masked hint like
rzp_live_…4F2Aafterwards. - Keep "Accept online payments on invoices" switched on.
The onboarding wizard also offers this as an optional step when your company first signs up.
Strongly recommended: set up the webhook
In your Razorpay Dashboard → Settings → Webhooks, add:
- URL:
https://<your ZAPTIZ host>/api/v1/payments/webhook - Event:
payment_link.paid - Secret: the same webhook secret you entered in ZAPTIZ.
With the webhook in place, an online payment reconciles itself: the payment is recorded automatically (reference = the Razorpay payment ID), the invoice flips to Partial or Paid, and everyone gets a "payment received" notification. It's idempotent (never double-posts) and never overpays an invoice.
ZAPTIZ also asks Razorpay directly about every still-open link every ~15 minutes and books anything already paid, so a payment is never lost even with no webhook. You can also force it immediately: open Collect payment on the invoice and click Check for payment. The webhook is still worth setting up — it's the difference between instant and within a quarter of an hour.
A link created with rzp_test_… keys shows "This payment link is created in Test Mode" and only accepts Razorpay's test cards/UPI. A real customer paying it sees "Payment could not be completed — authentication failed". Use live keys (rzp_live_…, which require Razorpay account activation) for real invoices. Test and Live mode also have separate webhooks — configure the one matching the keys you connected.
Sending a Pay-Now link
- On an unpaid invoice: ⋮ → Collect payment (link)… (or Pay link on the Receivables page).
- The dialog creates (or reuses) a payment link for the outstanding balance and shows a QR code, the amount due, and Copy link / Open buttons.
- Use "Email this to the customer" — the To address is pre-filled from the customer record; add a Cc, subject and message and click Send to customer.
If you see "Connect your Razorpay account", your company hasn't finished the setup above. If you see "Online invoice payments are turned off", re-enable the toggle in Settings → Integrations.
The customer paid but the invoice still says unpaid
Click Check for payment in the same Collect payment dialog. It asks Razorpay for the link's real status and, if it's paid, records the payment against the invoice straight away — the same result the webhook would have produced, and it can't double-post if the webhook later arrives. Replies:
- "Payment found and recorded" — done, the invoice is updated.
- "Razorpay still shows this link as unpaid" — the payment didn't go through (see the test-keys warning above).
- "This link is paid and was already recorded" — nothing to do; the webhook or an earlier check got there first.
Live updates
The Receivables page listens for payments in real time — when a customer pays a link, the list refreshes by itself and you'll see a toast: "Payment received for invoice INV-…".
Tips & gotchas
- Changing or disconnecting your Razorpay keys voids all open payment links (so a stale link can never pay into the old account). New links are issued against the new keys.
- Online payments show the Razorpay payment ID as the reference, and the method Razorpay reports (UPI / Card / Bank transfer, else Other).
- Payments can't be edited or deleted from the Payments page — record carefully.
- The page KPIs total the current page of receipts, and the footer shows "Total (this page)".