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:
- Select + where the payment should be read. In the step picker, open Apps, select Razorpay, then Fetch a payment.
- In Connection, choose your Razorpay connection.
- In Payment, the payment's id — The payment's id — from a trigger or an earlier step. For example
{{ trigger.id }}. - Select Run this step.
Capture a payment:
- In the step picker, under Razorpay, select Capture a payment. The settings open with Moves money and This step takes the customer's money.
- In Connection, choose your Razorpay connection. The line under it reads Live key — real money. or Test mode — Test key — no real money moves.
- In Payment, the payment's id —
pay_…. - In Amount, the payment's full amount — In rupees — the payment's full amount. For example
{{ trigger.amountMain }}. - In Currency, the payment's currency — ₹ Indian rupee by default.
- 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
alreadyCapturedset totrue, 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. |