## Transfers ```rb require "razorpay" Razorpay.setup('key_id', 'key_secret') ``` ### Create transfers from payment ```rb paymentId = "pay_E8JR8E0XyjUSZd" para_attr = { "transfers": [ { "account": 'acc_HgzcrXeSLfNP9U', "amount": 100, "currency": "INR", "notes": { "name": "Gaurav Kumar", "roll_no": "IEC2011025" }, "linked_account_notes": [ "branch" ], "on_hold": 1, "on_hold_until": 1671222870 } ] } Razorpay::Payment.fetch(paymentId).transfer(para_attr) ``` **Parameters:** | Name | Type | Description | |---------------|-------------|---------------------------------------------| | paymentId* | string | The id of the payment to be fetched | | transfers | object | All parameters listed [here](https://razorpay.com/docs/api/route/#create-transfers-from-payments) are supported | **Response:** ```json { "id": "pay_DJiaO3iqUZaZrO", "entity": "payment", "amount": 5000, "currency": "INR", "status": "captured", "order_id": null, "invoice_id": null, "international": false, "method": "netbanking", "amount_refunded": 0, "refund_status": null, "captured": true, "description": "Credits towards consultation", "card_id": null, "bank": "UTIB", "wallet": null, "vpa": null, "email": "void@razorpay.com", "contact": "+919191919191", "notes": [], "fee": 171, "tax": 26, "error_code": null, "error_description": null, "error_source": null, "error_step": null, "error_reason": null, "acquirer_data": { "bank_transaction_id": "7909502" }, "created_at": 1568822005 } ``` ------------------------------------------------------------------------------------------------------- ### Create transfers from order ```rb para_attr = { "amount": 2000, "currency": "INR", "transfers": [ { "account": "acc_CPRsN1LkFccllA", "amount": 1000, "currency": "INR", "notes": { "branch": "Acme Corp Bangalore North", "name": "Gaurav Kumar" }, "linked_account_notes": [ "branch" ], "on_hold": 1, "on_hold_until": 1671222870 }, { "account": "acc_CNo3jSI8OkFJJJ", "amount": 1000, "currency": "INR", "notes": { "branch": "Acme Corp Bangalore South", "name": "Saurav Kumar" }, "linked_account_notes": [ "branch" ], "on_hold": 0 } ] } Razorpay::Order.create(para_attr) ``` **Parameters:** | Name | Type | Description | |---------------|-------------|---------------------------------------------| | amount* | integer | The transaction amount, in paise | | currency* | string | The currency of the payment (defaults to INR) | | receipt | string | A unique identifier provided by you for your internal reference. | | transfers | array | All parameters listed [here](https://razorpay.com/docs/api/route/#create-transfers-from-orders) are supported | **Response:** ```json { "id": "order_Jhf1Sn06my7AUb", "entity": "order", "amount": 2000, "amount_paid": 0, "amount_due": 2000, "currency": "INR", "receipt": null, "offer_id": "offer_JGQvQtvJmVDRIA", "offers": [ "offer_JGQvQtvJmVDRIA" ], "status": "created", "attempts": 0, "notes": [], "created_at": 1655272138, "transfers": [ { "id": "trf_Jhf1SpAYVIeRoP", "entity": "transfer", "status": "created", "source": "order_Jhf1Sn06my7AUb", "recipient": "acc_HjVXbtpSCIxENR", "amount": 1000, "currency": "INR", "amount_reversed": 0, "notes": { "branch": "Acme Corp Bangalore North", "name": "Gaurav Kumar" }, "linked_account_notes": [ "branch" ], "on_hold": true, "on_hold_until": 1671222870, "recipient_settlement_id": null, "created_at": 1655272138, "processed_at": null, "error": { "code": null, "description": null, "reason": null, "field": null, "step": null, "id": "trf_Jhf1SpAYVIeRoP", "source": null, "metadata": null } } ] } ``` ------------------------------------------------------------------------------------------------------- ### Direct transfers ```rb para_attr = { "account": accountId, "amount": 500, "currency": "INR" } Razorpay::Transfer.create(para_attr) ``` **Parameters:** | Name | Type | Description | |---------------|-------------|---------------------------------------------| | accountId* | string | The id of the account to be fetched | | amount* | integer | The amount to be captured (should be equal to the authorized amount, in paise) | | currency* | string | The currency of the payment (defaults to INR) | | notes | object | | A key-value pair | **Response:** ```json { "id":"trf_E9utgtfGTcpcmm", "entity":"transfer", "transfer_status":"pending", "settlement_status":null, "source":"acc_CJoeHMNpi0nC7k", "recipient":"acc_CPRsN1LkFccllA", "amount":100, "currency":"INR", "amount_reversed":0, "notes":[ ], "fees":1, "tax":0, "on_hold":false, "on_hold_until":null, "recipient_settlement_id":null, "created_at":1580219046, "linked_account_notes":[ ], "processed_at":null, "error":{ "code":null, "description":null, "field":null, "source":null, "step":null, "reason":null } } ``` ------------------------------------------------------------------------------------------------------- ### Fetch transfer for a payment ```rb paymentId = "pay_E8JR8E0XyjUSZd" Razorpay::Payment.fetch(paymentId).fetch_transfer ``` **Parameters:** | Name | Type | Description | |---------------|-------------|---------------------------------------------| | paymentId* | string | The id of the payment to be fetched | **Response:** ```json { "entity": "collection", "count": 1, "items": [ { "id": "trf_EAznuJ9cDLnF7Y", "entity": "transfer", "source": "pay_E9up5WhIfMYnKW", "recipient": "acc_CMaomTz4o0FOFz", "amount": 1000, "currency": "INR", "amount_reversed": 100, "notes": [], "fees": 3, "tax": 0, "on_hold": false, "on_hold_until": null, "recipient_settlement_id": null, "created_at": 1580454666, "linked_account_notes": [], "processed_at": 1580454666 } ] } ``` ------------------------------------------------------------------------------------------------------- ### Fetch transfer for an order ```rb orderId = "order_DSkl2lBNvueOly" Razorpay::Order.fetch_transfer_order(orderId) ``` **Parameters:** | Name | Type | Description | |---------------|-------------|---------------------------------------------| | orderId* | string | The id of the order to be fetched | **Response:** ```json { "id": "order_I7waiV9PUGADuv", "entity": "order", "amount": 50000, "amount_paid": 50000, "amount_due": 0, "currency": "INR", "receipt": "55", "offer_id": null, "status": "paid", "attempts": 1, "notes": { "woocommerce_order_number": "55" }, "created_at": 1633936677, "transfers": { "entity": "collection", "count": 1, "items": [ { "id": "trf_I7waiajxgS5jWL", "entity": "transfer", "status": "processed", "source": "order_I7waiV9PUGADuv", "recipient": "acc_HalyQGZh9ZyiGg", "amount": 10000, "currency": "INR", "amount_reversed": 0, "fees": 12, "tax": 2, "notes": [], "linked_account_notes": [], "on_hold": false, "on_hold_until": null, "settlement_status": "pending", "recipient_settlement_id": null, "created_at": 1633936677, "processed_at": 1633936700, "error": { "code": null, "description": null, "reason": null, "field": null, "step": null, "id": "trf_I7waiajxgS5jWL", "source": null, "metadata": null } } ] } } ``` ------------------------------------------------------------------------------------------------------- ### Fetch transfer ```rb transferId = "trf_E7V62rAxJ3zYMo" Razorpay::Transfer.fetch(transferId) ``` **Parameters:** | Name | Type | Description | |---------------|-------------|---------------------------------------------| | transferId* | string | The id of the transfer to be fetched | **Response:** ```json { "id": "trf_JJD536GI6wuz3m", "entity": "transfer", "status": "processed", "source": "pay_JGmCgTEa9OTQcX", "recipient": "acc_IRQWUleX4BqvYn", "amount": 300, "currency": "INR", "amount_reversed": 0, "fees": 1, "tax": 0, "notes": { "name": "Saurav Kumar", "roll_no": "IEC2011026" }, "linked_account_notes": [ "roll_no" ], "on_hold": false, "on_hold_until": null, "settlement_status": "pending", "recipient_settlement_id": null, "created_at": 1649933574, "processed_at": 1649933579, "error": { "code": null, "description": null, "reason": null, "field": null, "step": null, "id": "trf_JJD536GI6wuz3m", "source": null, "metadata": null } } ``` ------------------------------------------------------------------------------------------------------- ### Fetch transfers for a settlement ```rb recipientSettlementId = "setl_DHYJ3dRPqQkAgV" Razorpay::Transfer.all({ "recipient_settlement_id": recipientSettlementId }) ``` **Parameters:** | Name | Type | Description | |---------------|-------------|---------------------------------------------| | recipientSettlementId* | string | The recipient settlement id obtained from the settlement.processed webhook payload. | **Response:** ```json { "entity": "collection", "count": 1, "items": [ { "id": "trf_HWjmkReRGPhguR", "entity": "transfer", "status": "processed", "source": "pay_HWjY9DZSMsbm5E", "recipient": "acc_HWjl1kqobJzf4i", "amount": 1000, "currency": "INR", "amount_reversed": 0, "fees": 3, "tax": 0, "notes": [], "linked_account_notes": [], "on_hold": false, "on_hold_until": null, "settlement_status": "settled", "recipient_settlement_id": "setl_HYIIk3H0J4PYdX", "created_at": 1625812996, "processed_at": 1625812996, "error": { "code": null, "description": null, "reason": null, "field": null, "step": null, "id": "trf_HWjmkReRGPhguR", "source": null, "metadata": null } } ] } ``` ------------------------------------------------------------------------------------------------------- ### Fetch settlement details ```rb Razorpay::Transfer.fetch_settlements ``` **Response:** ```json { "entity": "collection", "count": 1, "items": [ { "id": "trf_JnRRvcSbZb1VHN", "entity": "transfer", "status": "processed", "source": "acc_HZbJUcl6DBDLIN", "recipient": "acc_HjVXbtpSCIxENR", "amount": 500, "currency": "INR", "amount_reversed": 0, "fees": 1, "tax": 0, "notes": [], "linked_account_notes": [], "on_hold": false, "on_hold_until": null, "settlement_status": null, "recipient_settlement_id": null, "recipient_settlement": null, "created_at": 1656534379, "processed_at": 1656534379, "error": { "code": null, "description": null, "reason": null, "field": null, "step": null, "id": "trf_JnRRvcSbZb1VHN", "source": null, "metadata": null } } ] } ``` ------------------------------------------------------------------------------------------------------- ### Refund payments and reverse transfer from a linked account ```rb paymentId = "pay_EAdwQDe4JrhOFX" para_attr = { "amount": 100, "reverse_all": 1 } Razorpay::Payment.fetch(paymentId).refund(para_attr) ``` **Parameters:** | Name | Type | Description | |---------------|-------------|---------------------------------------------| | paymentId* | string | The id of the payment to be fetched | | amount* | integer | The amount to be captured (should be equal to the authorized amount, in paise) | | reverse_all | boolean | Reverses transfer made to a linked account. Possible values:
* `1` - Reverses transfer made to a linked account.
* `0` - Does not reverse transfer made to a linked account.| **Response:** ```json { "id": "rfnd_JJFNlNXPHY640A", "entity": "refund", "amount": 100, "currency": "INR", "payment_id": "pay_JJCqynf4fQS0N1", "notes": [], "receipt": null, "acquirer_data": { "arn": null }, "created_at": 1649941680, "batch_id": null, "status": "processed", "speed_processed": "normal", "speed_requested": "normal" } ``` ------------------------------------------------------------------------------------------------------- ### Fetch payments of a linked account ```rb Razorpay.headers = {"X-Razorpay-Account" => "linkedAccountId"} Razorpay::Payment.all ``` **Parameters:** | Name | Type | Description | |---------------|-------------|---------------------------------------------| | X-Razorpay-Account | string | The linked account id to fetch the payments received by linked account | **Response:** ```json { "entity": "collection", "count": 1, "items": [ { "id": "pay_JJCqynf4fQS0N1", "entity": "payment", "amount": 10000, "currency": "INR", "status": "captured", "order_id": "order_JJCqnZG8f3754z", "invoice_id": null, "international": false, "method": "netbanking", "amount_refunded": 0, "refund_status": null, "captured": true, "description": "#JJCqaOhFihfkVE", "card_id": null, "bank": "YESB", "wallet": null, "vpa": null, "email": "john.example@example.com", "contact": "+919820958250", "notes": [], "fee": 236, "tax": 36, "error_code": null, "error_description": null, "error_source": null, "error_step": null, "error_reason": null, "acquirer_data": { "bank_transaction_id": "2118867" }, "created_at": 1649932775 } ] } ``` ------------------------------------------------------------------------------------------------------- ### Reverse transfers from all linked accounts ```rb transferId = "trf_EAznuJ9cDLnF7Y" para_attr = { "amount":100 } Razorpay::Transfer.fetch(transferId).reverse(para_attr) ``` **Parameters:** | Name | Type | Description | |---------------|-------------|---------------------------------------------| | transferId* | string | The id of the transfer to be fetched | | amount | integer | The amount to be captured (should be equal to the authorized amount, in paise) | **Response:** ```json { "id": "rvrsl_EB0BWgGDAu7tOz", "entity": "reversal", "transfer_id": "trf_EAznuJ9cDLnF7Y", "amount": 100, "fee": 0, "tax": 0, "currency": "INR", "notes": [], "initiator_id": "CJoeHMNpi0nC7k", "customer_refund_id": null, "created_at": 1580456007 } ``` ------------------------------------------------------------------------------------------------------- ### Hold settlements for transfers ```rb paymentId = "pay_EB1R2s8D4vOAKG" para_attr = { "transfers": [ { "amount": 100, "account": "acc_I0QRP7PpvaHhpB", "currency": "INR", "on_hold": 1 } ] } Razorpay::Payment.fetch(paymentId).transfer(para_attr) ``` **Parameters:** | Name | Type | Description | |---------------|-------------|---------------------------------------------| | paymentId* | string | The id of the transfer to be fetched | | transfers | array | All parameters listed here https://razorpay.com/docs/api/route/#hold-settlements-for-transfers are supported | **Response:** ```json { "entity": "collection", "count": 1, "items": [ { "id": "trf_Jfm1KCF6w1oWgy", "entity": "transfer", "status": "pending", "source": "pay_JXPULbHbkkkS8D", "recipient": "acc_I0QRP7PpvaHhpB", "amount": 100, "currency": "INR", "amount_reversed": 0, "notes": [], "linked_account_notes": [], "on_hold": true, "on_hold_until": null, "recipient_settlement_id": null, "created_at": 1654860101, "processed_at": null, "error": { "code": null, "description": null, "reason": null, "field": null, "step": null, "id": "trf_Jfm1KCF6w1oWgy", "source": null, "metadata": null } } ] } ``` ------------------------------------------------------------------------------------------------------- ### Modify settlement hold for transfers ```rb transferId = "trf_JhemwjNekar9Za" para_attr = { "on_hold": "1", "on_hold_until": "1679691505" } Razorpay::Transfer.fetch(transferId).edit(para_attr) ``` **Parameters:** | Name | Type | Description | |---------------|-------------|---------------------------------------------| | transferId* | string | The id of the transfer to be fetched | | on_hold* | boolean | Possible values is `0` or `1` | | on_hold_until | integer | Timestamp, in Unix, that indicates until when the settlement of the transfer must be put on hold | **Response:** ```json { "entity": "collection", "count": 1, "items": [ { "id": "trf_JhemwjNekar9Za", "entity": "transfer", "status": "pending", "source": "pay_I7watngocuEY4P", "recipient": "acc_HjVXbtpSCIxENR", "amount": 100, "currency": "INR", "amount_reversed": 0, "notes": [], "linked_account_notes": [], "on_hold": true, "on_hold_until": null, "recipient_settlement_id": null, "created_at": 1655271313, "processed_at": null, "error": { "code": null, "description": null, "reason": null, "field": null, "step": null, "id": "trf_JhemwjNekar9Za", "source": null, "metadata": null } } ] } ``` ------------------------------------------------------------------------------------------------------- **PN: * indicates mandatory fields**

**For reference click [here](https://razorpay.com/docs/api/route/#transfers/)**