Two Razorpay steps work on a payment that already exists:

  • Razorpay · Fetch a payment — A payment's status, amount and method. Use it to check a payment before acting on it.
  • Razorpay · Capture a payment — Takes an authorised payment into your account. Only for accounts where payments are not captured automatically. It is marked Moves money — see Steps that move money.

Who can do this

Workspace Admins and Editors, on every plan. Viewers see the step's settings but cannot change them.

Before you start

  • A Razorpay connection — see Connect Razorpay.
  • The payment's id, starting pay_ — usually from a Razorpay trigger, such as {{ trigger.id }}.

Steps

Fetch a payment:

  1. Select + where the payment should be read. In the step picker, open Apps, select Razorpay, then Fetch a payment.
  2. In Connection, choose your Razorpay connection.
  3. In Payment, the payment's id — The payment's id — from a trigger or an earlier step. For example {{ trigger.id }}.
  4. Select Run this step.

Capture a payment:

  1. In the step picker, under Razorpay, select Capture a payment. The settings open with Moves money and This step takes the customer's money.
  2. In Connection, choose your Razorpay connection. The line under it reads Live key — real money. or Test mode — Test key — no real money moves.
  3. In Payment, the payment's id — pay_….
  4. In Amount, the payment's full amount — In rupees — the payment's full amount. For example {{ trigger.amountMain }}.
  5. In Currency, the payment's currency — ₹ Indian rupee by default.
  6. Test with Test run — with a live key, Bizomate asks first: This workflow captures ₹ 1,499.00 with a live Razorpay key. A test run pays for real. with Capture ₹ 1,499.00.

Output

Both steps give the payment:

Field What it is
id The payment's id — pay_….
status created, authorized, captured, refunded or failed.
captured true once the money is in your account.
alreadyCaptured Capture a payment only: true when the payment was captured before this step, so it captured nothing.
amount, amountMain, amountText 149900 (paise), 1499, ₹ 1,499.00.
amount_refunded, amount_refundedMain, amount_refundedText How much has been refunded so far.
currency INR.
method upi, card, netbanking, wallet …
email, contact The customer's email and phone, as Razorpay has them.
orderId The order it paid, if any.
description The payment's description.
createdAt When the payment was made, in UTC.

Good to know

  • Capture once. Before capturing, the step looks at the payment. If it is already captured — a retry, or a second run for the same payment — the step gives the payment back with alreadyCaptured set to true, and captures nothing. That is why it needs no idempotency key.
  • The amount must match. Razorpay captures the payment's full amount, in the payment's currency.
  • Authorised payments expire. Razorpay refunds an authorised payment that is not captured within its time limit, set in your Razorpay account.
  • Runs once per item.

If something goes wrong

What you see Why What to do
Payment is empty when the step ran — an earlier step may not have given the value it names. Payment reads a value that came out empty. Check the value — a trigger gives the payment's id as id.
Razorpay refused: … about a payment that does not exist The id is wrong, or the payment is in the other mode — a live payment with a test key. Use the connection whose key matches the payment's mode.
Razorpay refused: … on a capture The payment is not authorised yet, or the amount is not its full amount. Fetch the payment first and check status and amount.
Amount must be more than zero. Amount is 0. Give the payment's full amount.