Ninety minutes into her Razorpay machine coding round, a frontend engineer I'll call Sneha had built something genuinely nice: a payment form, clean React, tidy state. The interviewer clicked "Pay" twice in quick succession. Two payments fired. He didn't say anything mean. He just said, "So I've been charged twice," and let the silence do the work. Sneha's component was beautiful. It was also, for about four seconds, a way to lose someone's money.
That is the whole personality of Razorpay frontend interview questions. The JavaScript bar is high and the machine coding round is real, but every round quietly circles back to one question: does your UI stay correct when the network is slow, the user is impatient, and rupees are moving? I built Greenroom after freezing in an interview I'd actually prepared for, so this guide covers what Razorpay asks and how to say it out loud while you type.
The Razorpay frontend engineer interview process in 2026
Razorpay runs a consistent loop across frontend levels, with the system design round typically reserved for senior candidates. The Razorpay frontend interview process as candidates report it:
- Online assessment — timed DSA problems, sometimes with a short JavaScript output-prediction section (closures, hoisting,
this). - DSA / coding round — arrays, strings, hash maps, recursion. Medium difficulty, and you're expected to narrate while you code.
- Machine coding round — 60 to 90 minutes to build a working component. This is the round that decides most loops.
- JavaScript / framework deep-dive — closures, the event loop, promises, the browser rendering path, React internals. Asked as "why," not "what."
- Frontend system design — usually senior only: component architecture, state boundaries, caching, performance budgets.
- Hiring manager + culture — ownership, a production incident you caused, and why payments.
The thing to internalise early: Razorpay is a payments company, so "correct" beats "clever" in every single round. A working, well-structured component with handled edge cases outscores an elegant half-finished one, every time.
The Razorpay machine coding round: what "done" looks like
You'll get a prompt like build an autocomplete with debounced search, build a multi-step checkout form, build a cart with quantity controls, or build an infinite-scroll feed. You get 60 to 90 minutes, an editor, and an interviewer watching.
What actually gets scored, in rough order of weight: does it run; are the edge cases handled; is the state modelled sensibly; is the code readable; and only then, is it pretty. Candidates lose this round by spending twenty-five minutes on CSS and shipping a component that breaks on an empty response.
Here is the shape interviewers are looking for on a debounced search — note that the abort and the loading state matter more than the debounce itself:
function useSearch(query, delay = 300) {
const [state, setState] = useState({ status: "idle", results: [] });
useEffect(() => {
if (!query.trim()) {
setState({ status: "idle", results: [] });
return;
}
const controller = new AbortController();
const timer = setTimeout(async () => {
setState((s) => ({ ...s, status: "loading" }));
try {
const res = await fetch(`/api/search?q=${encodeURIComponent(query)}`, {
signal: controller.signal,
});
if (!res.ok) throw new Error(res.status);
setState({ status: "done", results: await res.json() });
} catch (err) {
if (err.name !== "AbortError") setState({ status: "error", results: [] });
}
}, delay);
return () => {
clearTimeout(timer);
controller.abort();
};
}, [query, delay]);
return state;
}
Three things here are worth saying out loud as you write them: the cleanup cancels both the timer and the in-flight request, so a slow response for "raz" can never overwrite the results for "razorpay"; status is one field rather than three booleans, so there's no state where loading and error are both true; and AbortError is swallowed deliberately because a cancelled request is not a failure. Our JavaScript interview questions guide drills the async layer underneath.
The payments version of the same instinct is the double-click problem Sneha hit. Disable on submit, track an in-flight ref, and generate the idempotency key before the first attempt so a retry reuses it:
async function pay(order, submittingRef) {
if (submittingRef.current) return;
submittingRef.current = true;
const idempotencyKey = order.clientRequestId; // stable across retries
try {
return await api.post("/payments", { ...order, idempotencyKey });
} finally {
submittingRef.current = false;
}
}
Volunteering that reasoning unprompted — "the button being disabled is a UX nicety, the idempotency key is the actual guarantee" — is the single strongest signal you can send in a Razorpay frontend round.
JavaScript deep-dive questions Razorpay asks
The Razorpay JavaScript interview questions are conceptual and asked as follow-ups rather than trivia. The recurring set:
- Closures and scope — write a
once()wrapper, explain why a loop withvarlogs the wrong index, implement a memoize function. - The event loop — predict the output of interleaved
setTimeout, promises andqueueMicrotask. Know that microtasks drain fully before the next macrotask. - Promises — implement
promiseAllfrom scratch, and explain how you'd add a timeout and a retry with backoff. thisand binding — implementcall,applyandbind. This shows up more often at Razorpay than at most product companies.- Rendering path — how HTML and CSS become pixels, what triggers reflow versus repaint, and why a transform animates cheaper than
top. - React internals — reconciliation and keys, why a derived-state
useEffectis usually a bug,useMemoversususeCallback, and what actually causes a re-render.
Answer these by giving the mechanism first and the definition second. "Because the callback closes over the variable binding, not the value at the time" lands very differently from "because of closures." Our React interview questions guide and frontend developer interview questions guide cover both layers in depth.
Frontend system design at Razorpay
For senior candidates there's a design round, and Razorpay's prompts are pleasingly concrete: design the Checkout widget that merchants embed on their own sites; design a dashboard table showing a million transactions; design an offline-tolerant refund flow.
What to cover, roughly in this order:
- Boundaries first — what's a component, what's shared state, what's server state. Say out loud that server state and UI state are different problems.
- Embedding and isolation — an iframe-based checkout keeps the merchant's page out of your DOM and keeps card data out of the merchant's scope. That last part is a compliance answer, not a styling preference.
- Performance budget — a checkout that loads on someone else's page must be small. Talk bundle size, code splitting, and what you'd lazy-load.
- Failure UI — what the user sees when the payment API times out, and how you avoid telling someone a payment failed when it actually succeeded.
- Accessibility — keyboard traps in modals, focus management, and labelled inputs. Razorpay does ask.
State the constraint before the design. "Because this renders inside a stranger's page, I'd isolate in an iframe and keep the initial bundle under a hard budget" is a senior sentence. The Razorpay frontend engineer prep page has a compact round-by-round checklist.
Behavioral rounds and the "why payments" question
Razorpay's hiring-manager round is not filler, and one question comes up nearly always: why payments, or why fintech. A vague answer here reads as "I applied to forty companies," which is fine as a fact and bad as an answer. The workable version connects a real preference to the domain: you like problems where correctness is checkable, where a bug has a visible number attached to it.
Beyond that, expect: a production incident you caused and what you changed afterwards; a time you shipped something you disagreed with; a performance problem you found and fixed on the client. Two-minute stories, first person, real numbers. "I improved page load" is invisible; "the dashboard's initial bundle was 1.4MB, I code-split the charts and dropped time-to-interactive from 6s to 2.3s on a mid-range Android" is a hire signal. Our tell me about a time you failed guide has the structure.
LeetCode, GeeksforGeeks, Frontend Masters — where each fits
An honest map of the prep stack for this specific loop:
- LeetCode — necessary but not sufficient. The OA and DSA round are real; medium-difficulty arrays, strings and hash maps. It does nothing for the machine coding round, which is most of your risk.
- GreatFrontEnd and Frontend Masters — the closest paid practice to Razorpay's machine coding and JS rounds, and the place to drill implementing
bind,promiseAlland debounce from scratch. - MDN — the honest answer for the rendering-path and event-loop questions. Read the pages on the event loop and on rendering performance; interviewers are asking about the model MDN describes.
- GeeksforGeeks and Blind interview experiences — useful for calibrating round formats and difficulty. Anecdotes, not a syllabus.
- ChatGPT — genuinely good for reviewing a machine coding solution you already wrote and pointing out unhandled edge cases. It won't click your Pay button twice and then go quiet.
- Greenroom — the spoken layer. Ari, the AI interviewer, runs the round out loud, asks the follow-up when your answer says "closures" without saying why, and scores structure and clarity. Fair tradeoff: Ari won't review your React code line by line; pair it with GreatFrontEnd.
How to prepare for the Razorpay frontend interview
- Week 1: DSA daily — arrays, strings, hash maps, recursion at medium difficulty. Narrate complexity aloud on every problem.
- Week 2: vanilla JS from scratch —
debounce,throttle,once,memoize,bind,promiseAll, a retry with backoff. Then explain each aloud in sixty seconds. - Week 3: three timed machine coding builds under a real 90-minute clock — autocomplete, multi-step form, infinite scroll. Ship working before pretty, every time.
- Final week: frontend system design aloud (an embeddable checkout, a large data table), five behavioral stories in first person, two full spoken mocks, and the role-specific prep page the night before — not new material.
Interviewing across Razorpay's other tracks, or at similar Indian fintechs? The Razorpay backend engineer guide covers idempotency and ledger design, the Razorpay data engineer guide covers settlement and reconciliation, the general Razorpay interview questions guide covers the company-wide loop, and the PhonePe and CRED guides cover the nearest comparable bars.
Frequently asked questions
What is the Razorpay frontend engineer interview process?
Candidates consistently report an online assessment with timed DSA problems, a DSA and coding round, a machine coding round of 60 to 90 minutes building a working component, a JavaScript and framework deep-dive, and a hiring-manager plus culture round. Senior candidates also get a frontend system design round. The machine coding round carries the most weight in the decision.
What is asked in the Razorpay machine coding round?
Typical prompts are an autocomplete with debounced search, a multi-step checkout form, a shopping cart with quantity controls, or an infinite-scroll feed, built in 60 to 90 minutes. Scoring priorities are: it runs, edge cases are handled, state is modelled sensibly, and the code is readable. Styling comes last — an unfinished but beautiful component fails this round.
What JavaScript questions does Razorpay ask?
Reported questions cover closures and scope, the event loop and microtask ordering, implementing promiseAll, call, apply and bind from scratch, debounce versus throttle, the browser rendering path and reflow versus repaint, and React internals such as reconciliation, keys and what triggers a re-render. They are asked as "why does this happen" rather than as definitions.
Is the Razorpay frontend interview hard?
It is a high bar, but a predictable one. The DSA round sits at medium difficulty rather than hard, and the JavaScript questions are standard fundamentals asked deeply. The genuine difficulty is the machine coding round, where you build a working component under a clock while explaining your decisions — a combination most candidates have never practised.
Does Razorpay ask DSA questions for frontend roles?
Yes. There is an online assessment and a dedicated DSA round for frontend candidates, typically covering arrays, strings, hash maps and recursion at medium difficulty. It is a genuine filter, but Razorpay weights the machine coding and JavaScript rounds more heavily, so DSA grinding alone will not carry a frontend loop.
How many rounds is the Razorpay frontend interview and how long does it take?
Most reported loops run four to six rounds — online assessment, DSA, machine coding, JavaScript deep-dive, hiring manager, plus system design for senior roles — over roughly two to five weeks end to end. Scheduling gaps between rounds are the longest part; use them for timed machine coding practice rather than more DSA.