Your clients pay rupee invoices from the client portal with Razorpay. When the money lands, the payment is written to the invoice and its status changes to Paid, without anyone typing it in.
Pitch2Sale asks Razorpay to collect the amount due. Razorpay tells Pitch2Sale when it has. Razorpay signs that message, so a forged one cannot mark an invoice paid.
Every unpaid invoice in the client portal gets the button when there is an amount due.
Invoices in INR use Razorpay. Other currencies use Stripe if you connect it, and fall back to whichever provider is connected.
It runs on your own Razorpay account. There is no shared merchant account, and Razorpay's usual fees apply.
Try the whole loop with sandbox keys and test payments, then switch to Live when you are ready.
You need an admin role, or a role with the Settings edit permission, to change it.
Use Razorpay's test keys while you try it out. No real money moves.
Both come from the API keys section of your Razorpay dashboard. The secret is encrypted when you save and is never shown again.
Create a webhook in the Razorpay dashboard with that URL. Pitch2Sale reads payment.captured, order.paid, payment.failed and refund.processed.
Use the same secret you set on the Razorpay webhook, so Pitch2Sale can check each message really came from Razorpay.
The card shows Connected · Test. Pay a test invoice from the portal and check its Payment History.
Enter your live keys and save again. From now on the button collects real payments.
| Direction | What | When |
|---|---|---|
| Pitch2Sale → Razorpay | An order for the invoice's amount due, in rupees, with the invoice as its receipt | The client clicks Pay with Razorpay |
| Razorpay → Pitch2Sale | A payment on the invoice (method: Razorpay). Status becomes Paid, or Partial if a balance remains | Payment captured or order paid |
| Razorpay → Pitch2Sale | The failed attempt is noted; the invoice stays unpaid | Payment failed |
| Razorpay → Pitch2Sale | The refund is matched to its payment | Refund processed in Razorpay |
| Not synced | Settlements, fees and payouts stay in your Razorpay dashboard. Cash, cheque and bank transfers are added with Record Payment on the invoice | — |
Razorpay could not reach the webhook, or the signing secret does not match. Check the webhook URL and secret in the Razorpay dashboard, then record the payment by hand with Record Payment.
The invoice is already paid or has nothing due. The client also needs access to the client portal; there is no separate pay link yet.
Not yet. Payments show in each invoice's Payment History, and the API can list them across invoices.
Yes. Rupee invoices go to Razorpay and other currencies to Stripe, each through your own account.
Connect Razorpay in Test mode today and try the whole loop before any real money moves.