Online payments: Razorpay and Stripe

Customers can pay an invoice from its link with Pay now, through your own Razorpay and/or Stripe account. The money goes straight to your account, card and UPI details never reach CRMSix, and each payment is recorded on its invoice automatically.

Razorpay, Stripe or both?

RazorpayStripe
Best forCustomers in IndiaCustomers outside India
How customers payUPI, cards, net banking and wallets for invoices in rupees (INR); cards for other currenciesCards (and the methods you turn on in Stripe), in any currency Stripe supports
Where they payRazorpay Checkout opens on the invoice pageStripe’s own checkout page; they come back to the invoice afterwards
What CRMSix needsKey ID, key secret, webhook secretSecret key, webhook signing secret

Each gateway has its own switch in Settings → Online Payments. With both on, the invoice page offers both, for example Pay ₹… with UPI, cards or net banking and Pay … by card, and the customer chooses.

No extra licence. Because each organization connects its own account, CRMSix never holds the money: Razorpay and Stripe are the licensed payment companies. The gateway charges its fee per payment; CRMSix adds nothing.

Set up Razorpay

  1. Sign up at razorpay.com. Test mode works straight away. For real payments, complete Razorpay’s KYC: PAN, bank account, and a website with terms, privacy and refund policies.
  2. In the Razorpay dashboard, make sure you’re in Test mode, open Account & Settings → API Keys and Generate key. Copy the Key ID (rzp_test_…) and the Key Secret (shown once).
  3. In CRMSix, go to Settings → Online Payments → Razorpay. Keep the mode on Test, paste the key ID and key secret, Save, and choose Test Razorpay connection.
  4. Copy the Razorpay webhook address CRMSix shows (with Copy).
  5. In Razorpay, open Account & Settings → Webhooks → Add New Webhook. Paste the address, choose a secret of your own, and tick the events payment.captured, order.paid and payment.failed. Save.
  6. Back in CRMSix, paste the same secret into Webhook secret, tick Accept payments with Razorpay and Save.

Set up Stripe

  1. Sign up at stripe.com. A sandbox (test mode) works straight away. For real payments, choose Verify your business in Stripe.
  2. In Stripe, click Developers (bottom-left) → API keys, and copy the Secret key (sk_test_…). Don’t use the publishable key (pk_test_…); CRMSix refuses it.
  3. In CRMSix, go to Settings → Online Payments → Stripe. Keep the mode on Test, paste the secret key, Save, and choose Test Stripe connection.
  4. Copy the Stripe webhook address CRMSix shows (with Copy).
  5. In Stripe, click Developers (bottom-left) to open Workbench, then the Webhooks tab → + Add destination. (You can also go straight to dashboard.stripe.com/test/workbench/webhooks.)
  6. Search for checkout.session and tick these four events, then Continue: checkout.session.completed, checkout.session.async_payment_succeeded, checkout.session.async_payment_failed and checkout.session.expired.
  7. Choose Webhook endpoint → Continue, paste the address from CRMSix as the Endpoint URL, and Create destination.
  8. On the destination’s page, under Signing secret, choose Reveal and copy it (whsec_…).
  9. Back in CRMSix, paste it into Webhook signing secret, tick Accept payments with Stripe and Save.

Options

  • Allow part payments: the customer can choose to pay less than the balance, for example an instalment. Off: they pay the whole balance.
  • Email a receipt: the payer gets an email with the amount, the payment reference and what’s still due.

Both apply to Razorpay and Stripe.

Test it (no real money)

Send yourself an invoice (or use Copy customer link on an invoice), open the link and choose Pay now. In test mode, use these instead of real details:

GatewayTo testUse
RazorpayUPI (invoice in INR)UPI ID success@razorpay (or failure@razorpay for a failed payment)
Card4111 1111 1111 1111, any future expiry, any CVV; on the OTP screen choose Success
Net bankingPick any bank, then Success on Razorpay’s test page
StripeSuccessful payment4242 4242 4242 4242, any future expiry (e.g. 12/34), any CVC, any name and postcode
India-issued card4000 0035 6000 0008
Card declined4000 0000 0000 0002
3-D Secure / OTP4000 0025 0000 3155 (choose Complete on the test screen)

The full lists are in each gateway’s documentation: Razorpay’s Test card details page, and docs.stripe.com/testing. Test numbers only work with test keys.

Check that it’s working

  • On the invoice page.After paying, the customer sees Thank you! Your payment was received. and the new balance.
  • On the invoice in CRMSix.A payment appears with the method (UPI, Card…), the gateway’s payment ID as the reference, and Paid online (Razorpay/Stripe, test mode). The status becomes Partially paid or Paid.
  • In Settings → Online Payments.Recent online payments lists every payment with its gateway, status and fee.
  • In the gateway.Razorpay: Webhooks → your webhook → deliveries. Stripe: Workbench → Webhooks → your destination → Event deliveries. Each should show status 200.

Go live

  1. Finish the gateway’s activation: Razorpay KYC, or Verify your business in Stripe.
  2. In the gateway, switch to live mode and create live keys (rzp_live_… / sk_live_…), and add the same webhook again in live mode (live and test webhooks are separate, with different secrets).
  3. In CRMSix, set the gateway’s mode to Live and paste the live key(s) and live webhook secret. CRMSix won’t accept a test key in live mode, or the other way round.
  4. Make a small real payment to yourself to check, then refund it in the gateway.

How payments are recorded

  • CRMSix records a payment only after checking it with the gateway: Razorpay’s signature and the payment itself, or Stripe’s checkout session.
  • The gateway’s webhook records it too, so nothing is lost if the customer closes the page or doesn’t come back from Stripe.
  • A payment is recorded once, however many times the page or the webhook reports it.
  • Bank payments that take time to settle (some Stripe methods) show waiting for your bank to confirm and are recorded when the gateway confirms them.
  • Refunds: create a credit note on the invoice and choose Refund → Back to their online payment; CRMSix sends the refund through Razorpay or Stripe and records it. (A refund made directly in the gateway’s dashboard can be recorded on the credit note as a refund made another way.)

Troubleshooting

I don’t see UPI, only cards
UPI, net banking and wallets work only for invoices in Indian rupees (INR). An invoice’s currency comes from its opportunity, so create the opportunity in INR (Settings → Currencies, or make INR your corporate currency). Also check that UPI is enabled in Razorpay’s payment methods.
There’s no Pay now button
Check that the gateway is ticked and saved in Settings → Online Payments, and that the invoice is sent (not a draft), not paid and not void. If the settings page says online payments or Stripe aren’t available, contact CRMSix.
“Razorpay/Stripe refused the keys”
The key or secret is wrong, from the other mode (test vs live), or was rolled in the gateway. Copy them again, save, and use Test connection.
The customer paid but the invoice doesn’t show it
Look at the webhook deliveries in the gateway. A 400 usually means the webhook secret in CRMSix doesn’t match the gateway’s; a 404 means the webhook address is wrong. Fix it and resend the event from the gateway; it will be recorded once.
Stripe asks for a billing address
For a Stripe account registered in India, international card payments need the customer’s address (an RBI rule). In test mode, any address works.