How payments work with Razorpay
BrandOps processes every subscription payment through Razorpay. This guide covers the actual payment mechanics: checkout, GST, cancellation, and how webhook events keep your billing status accurate, separate from choosing a plan in the first place.
Looking for plan pricing and upgrade rules instead? See the Plans & Billing guide.
How checkout works
Picking a plan from Organization → Billing kicks off a short handshake with Razorpay before you ever see a payment form.
- BrandOps first creates (or reuses) a Razorpay customer for your organization, storing the customer ID so future plan changes don't create duplicates.
- It then creates a Razorpay subscription tied to that plan's Razorpay plan ID, set to renew for up to 120 monthly cycles, effectively unlimited until you cancel.
- Your name and email are pre-filled into Razorpay's checkout from your account, and customer notifications are turned on so Razorpay emails you directly about the subscription.
- The subscription's status is saved immediately when it's created, before you've even completed payment, so BrandOps has a record from the first step onward.
- Trial or never-subscribed organizations can pick any of the three plans. Once you're an active paying customer, self-serve checkout only lets you move to a higher tier. Picking the same or a lower plan is blocked with "Select a higher plan to upgrade."
Pricing and GST
Plan prices are listed in INR, exclusive of tax, and GST is calculated on top at checkout.
- Starter ₹999/month, Growth ₹2,999/month, Agency ₹9,999/month, all plus 18% GST added at checkout, in line with Indian tax regulations.
- Billing happens monthly and recurs automatically through Razorpay until you cancel.
- Only the workspace Owner can trigger a checkout or plan change; anyone else attempting it is blocked outright.
How status stays in sync
Your billing status isn't just set once at checkout. It's kept current by Razorpay webhooks and periodic live checks.
- Razorpay posts a signed event to BrandOps' webhook endpoint for every subscription change. The signature is verified against a shared secret before the event is trusted at all; an invalid signature is rejected outright.
- subscription.activated: sets your plan to the one you chose, marks status active, and clears any trial or expiry dates.
- subscription.charged: a renewal succeeded; status stays active.
- subscription.pending / subscription.halted: a charge failed or is retrying; this is what surfaces as the "Payment failed" banner in your dashboard.
- subscription.cancelled: status is set to cancelled and an expiry date is recorded so you keep access until the period you paid for ends.
- subscription.completed / subscription.expired: your organization is reset to Starter automatically and the stored subscription ID is cleared.
- As a backstop, the Billing tab also fetches your subscription status directly from Razorpay whenever you open it, syncing BrandOps' record if it's drifted from what Razorpay actually shows.
Cancelling and what it does
Cancellation is a single action from the Billing tab, restricted to the Owner.
- Cancelling calls Razorpay to stop the subscription at the end of the current billing cycle, not immediately, so you keep what you already paid for.
- You can't cancel a subscription that's already cancelled, completed, or expired; BrandOps blocks a duplicate cancel attempt.
- Status flips to cancelled in BrandOps right away so the UI updates instantly, ahead of Razorpay's own webhook confirming it.
- Once the paid period actually ends, the completed/expired webhook takes over and drops the organization to Starter automatically; no manual step needed.
If a payment fails
Failed renewals don't lock you out immediately. Razorpay's own retry (dunning) process handles it.
- A failed renewal shows up as subscriptionStatus pending or halted, both of which BrandOps treats as "still has a subscription" rather than locking you out. Your access isn't pulled while Razorpay is retrying.
- The Billing tab surfaces this as a "Payment failed" banner explaining that Razorpay will retry automatically, with a note to update your payment method via the link in Razorpay's billing email.
- If retries exhaust and the subscription is ultimately marked completed or expired by Razorpay, that's when the automatic downgrade to Starter happens.
Frequently Asked Questions
What payment provider does BrandOps use?
Razorpay. When you choose a plan, BrandOps creates a Razorpay customer for your organization (reusing it on future plan changes) and a Razorpay subscription tied to that plan, then hands you off to Razorpay's own checkout to complete payment.
Is GST included in the price I see?
No. Listed prices (₹999 / ₹2,999 / ₹9,999 per month) are exclusive of GST. 18% GST is added at checkout in line with Indian tax regulations, so the amount you're actually charged is the plan price plus 18%.
Will I be notified when a payment is taken?
Yes. BrandOps creates every subscription with customer notifications turned on, so Razorpay emails you directly for checkout and billing events on the subscription, separate from anything BrandOps itself sends.
How does BrandOps know my payment succeeded?
Razorpay sends a signed webhook to BrandOps for every subscription event. BrandOps verifies the signature (HMAC-SHA256 against a shared secret) before trusting it, then updates your organization's plan and subscriptionStatus based on the event. For example, subscription.activated sets your plan and clears any trial/expiry dates, and subscription.charged confirms a renewal went through.
What happens in Razorpay when I cancel?
BrandOps calls Razorpay's cancel API with cancel-at-cycle-end, meaning the subscription keeps running until the current billing period finishes rather than stopping immediately, and there's no automatic partial refund for the remaining days. Your subscriptionStatus is set to cancelled right away in BrandOps so the UI reflects it immediately, even before Razorpay's own subscription.cancelled webhook arrives.
What happens if my subscription fully expires?
When Razorpay reports the subscription as completed or expired, BrandOps automatically resets your organization to the Starter plan, clears the stored Razorpay subscription ID, and clears any plan expiry date.
Why can only the workspace Owner manage billing?
Every billing endpoint (creating a subscription and cancelling one) explicitly checks that the requester holds the Owner role and returns an error otherwise. It's a deliberate restriction so payment decisions can't be made by an Admin, Member, or Viewer.
Ready to complete checkout?
Open Organization → Billing to pick a plan and pay securely through Razorpay.
Go to BillingRelated guides
Plans & Billing guide
Choosing, upgrading, and cancelling a plan, plus what happens when a trial or subscription lapses.
Plan Limits Explained
The exact feature and usage caps for Starter, Growth, and Agency, and what happens when you hit one.
Team & Roles guide
Only the Owner can manage billing. See the full role hierarchy and what each role can do.
Something unclear? Contact support or send feedback from your dashboard settings.
