razorruby 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. checksums.yaml +7 -0
  2. data/.DS_Store +0 -0
  3. data/.editorconfig +12 -0
  4. data/.github/dependabot.yml +8 -0
  5. data/.github/workflows/ruby.yml +38 -0
  6. data/.gitignore +23 -0
  7. data/.rubocop.yml +22 -0
  8. data/.simplecov +3 -0
  9. data/CHANGELOG.md +168 -0
  10. data/Gemfile +4 -0
  11. data/LICENSE.txt +22 -0
  12. data/README.md +102 -0
  13. data/Rakefile +26 -0
  14. data/documents/Invoice.md +539 -0
  15. data/documents/addon.md +191 -0
  16. data/documents/card.md +610 -0
  17. data/documents/customer.md +163 -0
  18. data/documents/emandate.md +492 -0
  19. data/documents/fund.md +89 -0
  20. data/documents/items.md +208 -0
  21. data/documents/order.md +281 -0
  22. data/documents/papernach.md +738 -0
  23. data/documents/payment.md +826 -0
  24. data/documents/paymentLink.md +1063 -0
  25. data/documents/paymentVerification.md +79 -0
  26. data/documents/plan.md +184 -0
  27. data/documents/qrcode.md +439 -0
  28. data/documents/refund.md +325 -0
  29. data/documents/registerEmandate.md +452 -0
  30. data/documents/registerNach.md +653 -0
  31. data/documents/settlement.md +478 -0
  32. data/documents/subscriptions.md +752 -0
  33. data/documents/tokens.md +262 -0
  34. data/documents/transfers.md +781 -0
  35. data/documents/upi.md +545 -0
  36. data/documents/virtualAccount.md +591 -0
  37. data/lib/ca-bundle.crt +3988 -0
  38. data/lib/extensions/httparty/hash_conversions.rb +44 -0
  39. data/lib/razorpay/addon.rb +32 -0
  40. data/lib/razorpay/card.rb +17 -0
  41. data/lib/razorpay/collection.rb +6 -0
  42. data/lib/razorpay/constants.rb +6 -0
  43. data/lib/razorpay/customer.rb +42 -0
  44. data/lib/razorpay/entity.rb +46 -0
  45. data/lib/razorpay/errors/bad_request_error.rb +14 -0
  46. data/lib/razorpay/errors/gateway_error.rb +7 -0
  47. data/lib/razorpay/errors/razorpay_error.rb +11 -0
  48. data/lib/razorpay/errors/server_error.rb +7 -0
  49. data/lib/razorpay/errors.rb +4 -0
  50. data/lib/razorpay/fund_account.rb +19 -0
  51. data/lib/razorpay/invoice.rb +68 -0
  52. data/lib/razorpay/item.rb +34 -0
  53. data/lib/razorpay/order.rb +39 -0
  54. data/lib/razorpay/payment.rb +116 -0
  55. data/lib/razorpay/payment_link.rb +36 -0
  56. data/lib/razorpay/payment_method.rb +17 -0
  57. data/lib/razorpay/plan.rb +24 -0
  58. data/lib/razorpay/qr_code.rb +34 -0
  59. data/lib/razorpay/refund.rb +27 -0
  60. data/lib/razorpay/request.rb +119 -0
  61. data/lib/razorpay/settlement.rb +39 -0
  62. data/lib/razorpay/subscription.rb +60 -0
  63. data/lib/razorpay/subscription_registration.rb +16 -0
  64. data/lib/razorpay/transfer.rb +35 -0
  65. data/lib/razorpay/utility.rb +57 -0
  66. data/lib/razorpay/virtual_account.rb +49 -0
  67. data/lib/razorpay.rb +37 -0
  68. data/razorpay-ruby.gemspec +36 -0
  69. data/test/fixtures/addon_collection.json +60 -0
  70. data/test/fixtures/bad_request_error.json +7 -0
  71. data/test/fixtures/cancel_invoice.json +44 -0
  72. data/test/fixtures/cancel_subscription.json +20 -0
  73. data/test/fixtures/create_json_payment.json +13 -0
  74. data/test/fixtures/customer_collection.json +22 -0
  75. data/test/fixtures/delete_token.json +3 -0
  76. data/test/fixtures/downtimes_collection.json +21 -0
  77. data/test/fixtures/empty.json +2 -0
  78. data/test/fixtures/fake_addon.json +24 -0
  79. data/test/fixtures/fake_captured_payment.json +13 -0
  80. data/test/fixtures/fake_card.json +9 -0
  81. data/test/fixtures/fake_create_upi_payment.json +3 -0
  82. data/test/fixtures/fake_customer.json +8 -0
  83. data/test/fixtures/fake_customer_edited.json +8 -0
  84. data/test/fixtures/fake_direct_transfer.json +32 -0
  85. data/test/fixtures/fake_downtime.json +14 -0
  86. data/test/fixtures/fake_fund_account.json +18 -0
  87. data/test/fixtures/fake_instant_settlement.json +19 -0
  88. data/test/fixtures/fake_invoice.json +30 -0
  89. data/test/fixtures/fake_item.json +9 -0
  90. data/test/fixtures/fake_order.json +10 -0
  91. data/test/fixtures/fake_order_transfers.json +88 -0
  92. data/test/fixtures/fake_otp_generate.json +19 -0
  93. data/test/fixtures/fake_otp_resend.json +7 -0
  94. data/test/fixtures/fake_otp_submit.json +5 -0
  95. data/test/fixtures/fake_payment.json +14 -0
  96. data/test/fixtures/fake_payment_authorized_webhook.json +40 -0
  97. data/test/fixtures/fake_payment_bank_transfer.json +12 -0
  98. data/test/fixtures/fake_payment_link.json +40 -0
  99. data/test/fixtures/fake_pending_update.json +30 -0
  100. data/test/fixtures/fake_plan.json +26 -0
  101. data/test/fixtures/fake_qrcode.json +20 -0
  102. data/test/fixtures/fake_qrcode_close.json +22 -0
  103. data/test/fixtures/fake_recurring.json +5 -0
  104. data/test/fixtures/fake_refund.json +8 -0
  105. data/test/fixtures/fake_refunded_payment.json +14 -0
  106. data/test/fixtures/fake_settlement.json +11 -0
  107. data/test/fixtures/fake_settlement_on_demand.json +39 -0
  108. data/test/fixtures/fake_subscription.json +20 -0
  109. data/test/fixtures/fake_subscription_pause.json +19 -0
  110. data/test/fixtures/fake_subscription_registration.json +91 -0
  111. data/test/fixtures/fake_subscription_resume.json +19 -0
  112. data/test/fixtures/fake_token.json +31 -0
  113. data/test/fixtures/fake_transfer.json +18 -0
  114. data/test/fixtures/fake_transfer_reverse.json +15 -0
  115. data/test/fixtures/fake_update_payment.json +39 -0
  116. data/test/fixtures/fake_validate_vpa.json +5 -0
  117. data/test/fixtures/fake_virtual_account.json +21 -0
  118. data/test/fixtures/fake_virtual_account_allowed.json +46 -0
  119. data/test/fixtures/fake_virtual_account_closed.json +21 -0
  120. data/test/fixtures/fake_virtual_account_collection.json +48 -0
  121. data/test/fixtures/fake_virtual_account_receiver.json +46 -0
  122. data/test/fixtures/fund_collection.json +20 -0
  123. data/test/fixtures/hello_response.json +3 -0
  124. data/test/fixtures/invoice_collection.json +93 -0
  125. data/test/fixtures/issue_invoice.json +44 -0
  126. data/test/fixtures/item_collection.json +24 -0
  127. data/test/fixtures/order_collection.json +36 -0
  128. data/test/fixtures/order_payments.json +29 -0
  129. data/test/fixtures/payment_collection.json +32 -0
  130. data/test/fixtures/payment_collection_with_one_payment.json +19 -0
  131. data/test/fixtures/payment_link_collection.json +43 -0
  132. data/test/fixtures/payment_link_response.json +3 -0
  133. data/test/fixtures/payment_methods_collection.json +149 -0
  134. data/test/fixtures/plan_collection.json +32 -0
  135. data/test/fixtures/qrcode_collection.json +50 -0
  136. data/test/fixtures/qrcode_payments_collection.json +74 -0
  137. data/test/fixtures/refund_collection.json +30 -0
  138. data/test/fixtures/refund_collection_for_payment.json +22 -0
  139. data/test/fixtures/settlement_collection.json +26 -0
  140. data/test/fixtures/settlement_instant_collection.json +84 -0
  141. data/test/fixtures/settlement_report_collection.json +117 -0
  142. data/test/fixtures/subscription_collection.json +26 -0
  143. data/test/fixtures/success.json +3 -0
  144. data/test/fixtures/tokens_collection.json +36 -0
  145. data/test/fixtures/transfer_settlements_collection.json +38 -0
  146. data/test/fixtures/transfers_collection.json +41 -0
  147. data/test/fixtures/update_invoice.json +44 -0
  148. data/test/fixtures/welcome.json +3 -0
  149. data/test/razorpay/test_addon.rb +76 -0
  150. data/test/razorpay/test_card.rb +23 -0
  151. data/test/razorpay/test_customer.rb +69 -0
  152. data/test/razorpay/test_entity.rb +55 -0
  153. data/test/razorpay/test_fund_account.rb +42 -0
  154. data/test/razorpay/test_invoice.rb +143 -0
  155. data/test/razorpay/test_item.rb +66 -0
  156. data/test/razorpay/test_order.rb +71 -0
  157. data/test/razorpay/test_payment.rb +303 -0
  158. data/test/razorpay/test_payment_link.rb +83 -0
  159. data/test/razorpay/test_plan.rb +65 -0
  160. data/test/razorpay/test_qr_code.rb +63 -0
  161. data/test/razorpay/test_razorpay.rb +53 -0
  162. data/test/razorpay/test_refund.rb +56 -0
  163. data/test/razorpay/test_request.rb +15 -0
  164. data/test/razorpay/test_settlement.rb +76 -0
  165. data/test/razorpay/test_subscription.rb +190 -0
  166. data/test/razorpay/test_subscription_registration.rb +58 -0
  167. data/test/razorpay/test_transfer.rb +77 -0
  168. data/test/razorpay/test_utility.rb +84 -0
  169. data/test/razorpay/test_virtual_account.rb +135 -0
  170. data/test/test_helper.rb +54 -0
  171. metadata +400 -0
@@ -0,0 +1,591 @@
1
+ ## Virtual account
2
+
3
+ ```rb
4
+ require "razorpay"
5
+
6
+ Razorpay.setup('key_id', 'key_secret')
7
+ ```
8
+
9
+ ### Create a virtual account
10
+ ```rb
11
+ para_attr = {
12
+ "receivers": {
13
+ "types": [
14
+ "bank_account"
15
+ ]
16
+ },
17
+ "description": "Virtual Account created for Raftar Soft",
18
+ "customer_id": "cust_CaVDm8eDRSXYME",
19
+ "close_by": 1681615838,
20
+ "notes": {
21
+ "project_name": "Banking Software"
22
+ }
23
+ }
24
+
25
+ Razorpay::VirtualAccount.create(para_attr)
26
+ ```
27
+
28
+ **Parameters:**
29
+
30
+ | Name | Type | Description |
31
+ |---------------|-------------|---------------------------------------------|
32
+ | receivers* | object | Array that defines what receivers are available for this Virtual Account |
33
+ | description | string | A brief description of the virtual account. |
34
+ | customer_id | string | Unique identifier of the customer to whom the virtual account must be tagged. |
35
+ | close_by | integer | UNIX timestamp at which the virtual account is scheduled to be automatically closed. |
36
+ | notes | integer | Any custom notes you might want to add to the virtual account can be entered here. |
37
+
38
+ **Response:**
39
+ ```json
40
+ {
41
+ "id":"va_DlGmm7jInLudH9",
42
+ "name":"Acme Corp",
43
+ "entity":"virtual_account",
44
+ "status":"active",
45
+ "description":"Virtual Account created for Raftar Soft",
46
+ "amount_expected":null,
47
+ "notes":{
48
+ "project_name":"Banking Software"
49
+ },
50
+ "amount_paid":0,
51
+ "customer_id":"cust_CaVDm8eDRSXYME",
52
+ "receivers":[
53
+ {
54
+ "id":"ba_DlGmm9mSj8fjRM",
55
+ "entity":"bank_account",
56
+ "ifsc":"RATN0VAAPIS",
57
+ "bank_name": "RBL Bank",
58
+ "name":"Acme Corp",
59
+ "notes":[],
60
+ "account_number":"2223330099089860"
61
+ }
62
+ ],
63
+ "close_by":1681615838,
64
+ "closed_at":null,
65
+ "created_at":1574837626
66
+ }
67
+ ```
68
+
69
+ -------------------------------------------------------------------------------------------------------
70
+
71
+ ### Create a virtual account with TPV
72
+ ```rb
73
+ Razorpay::VirtualAccount.create({
74
+ "receivers": {
75
+ "types": [
76
+ "bank_account"
77
+ ]
78
+ },
79
+ "allowed_payers": [
80
+ {
81
+ "type": "bank_account",
82
+ "bank_account": {
83
+ "ifsc": "RATN0VAAPIS",
84
+ "account_number": 2223330027558515
85
+ }
86
+ }
87
+ ],
88
+ "description": "Virtual Account created for Raftar Soft",
89
+ "customer_id": "cust_HssUOFiOd2b1TJ",
90
+ "notes": {
91
+ "project_name": "Banking Software"
92
+ }
93
+ })
94
+ ```
95
+
96
+ **Parameters:**
97
+
98
+ | Name | Type | Description |
99
+ |---------------|-------------|---------------------------------------------|
100
+ | receivers* | object | Array that defines what receivers are available for this Virtual Account |
101
+ | allowed_payers* | object | All parameters listed [here](https://razorpay.com/docs/api/smart-collect-tpv/#create-virtual-account) are supported |
102
+ | description | string | A brief description of the virtual account. |
103
+ | customer_id | string | Unique identifier of the customer to whom the virtual account must be tagged. |
104
+ | notes | integer | Any custom notes you might want to add to the virtual account can be entered here. |
105
+
106
+ **Response:**
107
+ ```json
108
+ {
109
+ "id":"va_DlGmm7jInLudH9",
110
+ "name":"Acme Corp",
111
+ "entity":"virtual_account",
112
+ "status":"active",
113
+ "description":"Virtual Account created for Raftar Soft",
114
+ "amount_expected":null,
115
+ "notes":{
116
+ "project_name":"Banking Software"
117
+ },
118
+ "amount_paid":0,
119
+ "customer_id":"cust_CaVDm8eDRSXYME",
120
+ "receivers":[
121
+ {
122
+ "id":"ba_DlGmm9mSj8fjRM",
123
+ "entity":"bank_account",
124
+ "ifsc":"RATN0VAAPIS",
125
+ "bank_name": "RBL Bank",
126
+ "name":"Acme Corp",
127
+ "notes":[],
128
+ "account_number":"2223330099089860"
129
+ }
130
+ ],
131
+ "allowed_payers": [
132
+ {
133
+ "type": "bank_account",
134
+ "id":"ba_DlGmm9mSj8fjRM",
135
+ "bank_account": {
136
+ "ifsc": "UTIB0000013",
137
+ "account_number": "914010012345679"
138
+ }
139
+ },
140
+ {
141
+ "type": "bank_account",
142
+ "id":"ba_Cmtnm5tSj6agUW",
143
+ "bank_account": {
144
+ "ifsc": "UTIB0000014",
145
+ "account_number": "914010012345680"
146
+ }
147
+ }
148
+ ],
149
+ "close_by":1681615838,
150
+ "closed_at":null,
151
+ "created_at":1574837626
152
+ }
153
+ ```
154
+
155
+ -------------------------------------------------------------------------------------------------------
156
+
157
+ ### Create static/dynamic qr
158
+ ```rb
159
+ Razorpay::VirtualAccount.create({
160
+ "receivers": {
161
+ "types": [
162
+ "qr_code"
163
+ ]
164
+ },
165
+ "description": "First QR code",
166
+ "amount_expected": 100,
167
+ "notes": {
168
+ "receiver_key": "receiver_value"
169
+ }
170
+ })
171
+ ```
172
+
173
+ **Parameters:**
174
+
175
+ | Name | Type | Description |
176
+ |---------------|-------------|---------------------------------------------|
177
+ | receivers* | array | Array that defines what receivers are available for this Virtual Account |
178
+ | description | string | A brief description of the payment. |
179
+ | amount_expected | integer | The maximum amount you expect to receive in this virtual account. Pass `69999` for ₹699.99. |
180
+ | notes | object | All keys listed [here](https://razorpay.com/docs/payments/payments/payment-methods/bharatqr/api/#create) are supported |
181
+
182
+ **Response:**
183
+ ```json
184
+ {
185
+ "id": "va_4xbQrmEoA5WJ0G",
186
+ "name": "Acme Corp",
187
+ "entity": "virtual_account",
188
+ "status": "active",
189
+ "description": "First Payment by BharatQR",
190
+ "amount_expected": null,
191
+ "notes": {
192
+ "reference_key": "reference_value"
193
+ },
194
+ "amount_paid": 0,
195
+ "customer_id": "cust_805c8oBQdBGPwS",
196
+ "receivers": [
197
+ {
198
+ "id": "qr_4lsdkfldlteskf",
199
+ "entity": "qr_code",
200
+ "reference": "AgdeP8aBgZGckl",
201
+ "short_url": "https://rzp.io/i/PLs03pOc"
202
+ }
203
+ ],
204
+ "close_by": null,
205
+ "closed_at": null,
206
+ "created_at": 1607938184
207
+ }
208
+ ```
209
+ -------------------------------------------------------------------------------------------------------
210
+
211
+ ### Fetch virtual account by id
212
+ ```rb
213
+ virtualId = "va_IDDYE8gYTLJCEH"
214
+
215
+ Razorpay::VirtualAccount.fetch(virtualId)
216
+ ```
217
+
218
+ **Parameters:**
219
+
220
+ | Name | Type | Description |
221
+ |---------------|-------------|---------------------------------------------|
222
+ | virtualId* | string | The id of the virtual to be updated |
223
+
224
+ **Response:**
225
+ For fetch virtual account by id response please click [here](https://razorpay.com/docs/api/smart-collect/#fetch-a-virtual-account-by-id)
226
+ -------------------------------------------------------------------------------------------------------
227
+
228
+ ### Fetch all virtual account
229
+ ```rb
230
+ options = {"count":1}
231
+
232
+ Razorpay::VirtualAccount.all(options)
233
+ ```
234
+
235
+ **Parameters:**
236
+
237
+ | Name | Type | Description |
238
+ |-------|-----------|--------------------------------------------------|
239
+ | from | timestamp | timestamp after which the payments were created |
240
+ | to | timestamp | timestamp before which the payments were created |
241
+ | count | integer | number of payments to fetch (default: 10) |
242
+ | skip | integer | number of payments to be skipped (default: 0) |
243
+
244
+ **Response:**
245
+ ```json
246
+ {
247
+ "entity": "collection",
248
+ "count": 1,
249
+ "items": [
250
+ {
251
+ "id": "va_Di5gbNptcWV8fQ",
252
+ "name": "Acme Corp",
253
+ "entity": "virtual_account",
254
+ "status": "closed",
255
+ "description": "Virtual Account created for M/S ABC Exports",
256
+ "amount_expected": 2300,
257
+ "notes": {
258
+ "material": "teakwood"
259
+ },
260
+ "amount_paid": 239000,
261
+ "customer_id": "cust_DOMUFFiGdCaCUJ",
262
+ "receivers": [
263
+ {
264
+ "id": "ba_Di5gbQsGn0QSz3",
265
+ "entity": "bank_account",
266
+ "ifsc": "RATN0VAAPIS",
267
+ "bank_name": "RBL Bank",
268
+ "name": "Acme Corp",
269
+ "notes": [],
270
+ "account_number": "1112220061746877"
271
+ }
272
+ ],
273
+ "close_by": 1574427237,
274
+ "closed_at": 1574164078,
275
+ "created_at": 1574143517
276
+ }
277
+ ]
278
+ }
279
+ ```
280
+ -------------------------------------------------------------------------------------------------------
281
+
282
+ ### Fetch payments for a virtual account
283
+ ```rb
284
+ virtualId = "va_IDDYE8gYTLJCEH"
285
+
286
+ options = {"count":1}
287
+
288
+ Razorpay::VirtualAccount.fetch(virtualId).payments(options)
289
+ ```
290
+
291
+ **Parameters:**
292
+
293
+ | Name | Type | Description |
294
+ |-------|-----------|--------------------------------------------------|
295
+ | virtualId* | string | The id of the virtual to be updated |
296
+ | from | timestamp | timestamp after which the payments were created |
297
+ | to | timestamp | timestamp before which the payments were created |
298
+ | count | integer | number of payments to fetch (default: 10) |
299
+ | skip | integer | number of payments to be skipped (default: 0) |
300
+
301
+ **Response:**
302
+ ```json
303
+ {
304
+ "entity": "collection",
305
+ "count": 1,
306
+ "items": [
307
+ {
308
+ "id": "pay_Di5iqCqA1WEHq6",
309
+ "entity": "payment",
310
+ "amount": 239000,
311
+ "currency": "INR",
312
+ "status": "captured",
313
+ "order_id": null,
314
+ "invoice_id": null,
315
+ "international": false,
316
+ "method": "bank_transfer",
317
+ "amount_refunded": 0,
318
+ "refund_status": null,
319
+ "captured": true,
320
+ "description": "",
321
+ "card_id": null,
322
+ "bank": null,
323
+ "wallet": null,
324
+ "vpa": null,
325
+ "email": "saurav.kumar@example.com",
326
+ "contact": "+919972139994",
327
+ "customer_id": "cust_DOMUFFiGdCaCUJ",
328
+ "notes": [],
329
+ "fee": 2820,
330
+ "tax": 430,
331
+ "error_code": null,
332
+ "error_description": null,
333
+ "created_at": 1574143644
334
+ }
335
+ ]
336
+ }
337
+ ```
338
+
339
+ -------------------------------------------------------------------------------------------------------
340
+
341
+ ### Fetch payment details using id and transfer method
342
+ ```rb
343
+ paymend_id = "pay_Di5iqCqA1WEHq6"
344
+
345
+ Razorpay::Payment.fetch(paymend_id).bank_transfer
346
+ ```
347
+
348
+ **Parameters:**
349
+
350
+ | Name | Type | Description |
351
+ |-------|-----------|--------------------------------------------------|
352
+ | paymentId* | string | The id of the paymentId to be updated |
353
+
354
+ **Response:**
355
+ ```json
356
+ {
357
+ "id": "bt_Di5iqCElVyRlCb",
358
+ "entity": "bank_transfer",
359
+ "payment_id": "pay_Di5iqCqA1WEHq6",
360
+ "mode": "NEFT",
361
+ "bank_reference": "157414364471",
362
+ "amount": 239000,
363
+ "payer_bank_account": {
364
+ "id": "ba_Di5iqSxtYrTzPU",
365
+ "entity": "bank_account",
366
+ "ifsc": "UTIB0003198",
367
+ "bank_name": "Axis Bank",
368
+ "name": "Acme Corp",
369
+ "notes": [],
370
+ "account_number": "765432123456789"
371
+ },
372
+ "virtual_account_id": "va_Di5gbNptcWV8fQ",
373
+ "virtual_account": {
374
+ "id": "va_Di5gbNptcWV8fQ",
375
+ "name": "Acme Corp",
376
+ "entity": "virtual_account",
377
+ "status": "closed",
378
+ "description": "Virtual Account created for M/S ABC Exports",
379
+ "amount_expected": 2300,
380
+ "notes": {
381
+ "material": "teakwood"
382
+ },
383
+ "amount_paid": 239000,
384
+ "customer_id": "cust_DOMUFFiGdCaCUJ",
385
+ "receivers": [
386
+ {
387
+ "id": "ba_Di5gbQsGn0QSz3",
388
+ "entity": "bank_account",
389
+ "ifsc": "RATN0VAAPIS",
390
+ "bank_name": "RBL Bank",
391
+ "name": "Acme Corp",
392
+ "notes": [],
393
+ "account_number": "1112220061746877"
394
+ }
395
+ ],
396
+ "close_by": 1574427237,
397
+ "closed_at": 1574164078,
398
+ "created_at": 1574143517
399
+ }
400
+ }
401
+ ```
402
+ -------------------------------------------------------------------------------------------------------
403
+
404
+ ### Refund payments made to a virtual account
405
+ ```rb
406
+ paymend_id = "pay_Di5iqCqA1WEHq6"
407
+
408
+ options = {
409
+ "amount": "100",
410
+ "speed": "normal",
411
+ "notes": {
412
+ "notes_key_1": "Beam me up Scotty.",
413
+ "notes_key_2": "Engage"
414
+ },
415
+ "receipt": "Receipt No. 31"
416
+ }
417
+
418
+ Razorpay::Payment.fetch(payment_id).refund(options)
419
+ ```
420
+
421
+ **Parameters:**
422
+
423
+ | Name | Type | Description |
424
+ |-------|-----------|--------------------------------------------------|
425
+ | paymentId* | string | The id of the payment to be updated |
426
+ | amount | integer | The amount to be captured (should be equal to the authorized amount, in paise) | |
427
+ | speed | string | Here, it must be normal |
428
+ | notes | array | A key-value pair |
429
+ | receipt | string | A unique identifier provided by you for your internal reference. |
430
+
431
+ **Response:**
432
+ ```json
433
+ {
434
+ "id": "rfnd_FP8QHiV938haTz",
435
+ "entity": "refund",
436
+ "amount": 500100,
437
+ "receipt": "Receipt No. 31",
438
+ "currency": "INR",
439
+ "payment_id": "pay_FCXKPFtYfPXJPy",
440
+ "notes": [],
441
+ "receipt": null,
442
+ "acquirer_data": {
443
+ "arn": null
444
+ },
445
+ "created_at": 1597078866,
446
+ "batch_id": null,
447
+ "status": "processed",
448
+ "speed_processed": "normal",
449
+ "speed_requested": "normal"
450
+ }
451
+ ```
452
+ -------------------------------------------------------------------------------------------------------
453
+
454
+ ### Add receiver to an existing virtual account
455
+ ```rb
456
+ virtualId = "va_Di5gbNptcWV8fQ"
457
+
458
+ para_attr = {
459
+ "types": [
460
+ "vpa"
461
+ ],
462
+ "vpa": {
463
+ "descriptor": "gauravkumar"
464
+ }
465
+ }
466
+
467
+ Razorpay::VirtualAccount.add_receiver(virtualId, para_attr)
468
+ ```
469
+
470
+ **Parameters:**
471
+
472
+ | Name | Type | Description |
473
+ |-------|-----------|--------------------------------------------------|
474
+ | virtualId* | string | The id of the virtual to be updated |
475
+ | types* | object | The receiver type to be added to the virtual account. Possible values are `vpa` or `bank_account` |
476
+ | vpa.descriptor | string | Descriptor should be 10 characters only. |
477
+
478
+ **Response:**
479
+ For add receiver to an existing virtual account response please click [here](https://razorpay.com/docs/api/smart-collect/#add-receiver-to-an-existing-virtual-account)
480
+
481
+ -------------------------------------------------------------------------------------------------------
482
+
483
+ ### Add an Allowed Payer Account
484
+ ```rb
485
+
486
+ virtualId = "va_Di5gbNptcWV8fQ"
487
+
488
+ para_attr = {
489
+ "type": "bank_account",
490
+ "bank_account": {
491
+ "ifsc": "UTIB0000013",
492
+ "account_number": 914010012345679
493
+ }
494
+ }
495
+
496
+ Razorpay::VirtualAccount.allowed_payer(virtualId, para_attr)
497
+ ```
498
+
499
+ **Parameters:**
500
+
501
+ | Name | Type | Description |
502
+ |-------|-----------|--------------------------------------------------|
503
+ | virtualId* | string | The id of the virtual to be updated |
504
+ | type* | object | The receiver type to be added to the virtual account. Possible values are `vpa` or `bank_account` |
505
+ | bank_account* | object | Indicates the bank account details such as `ifsc` and `account_number` |
506
+
507
+ **Response:**
508
+ ```json
509
+ {
510
+ "id":"va_DlGmm7jInLudH9",
511
+ "name":"Acme Corp",
512
+ "entity":"virtual_account",
513
+ "status":"active",
514
+ "description":"Virtual Account created for Raftar Soft",
515
+ "amount_expected":null,
516
+ "notes":{
517
+ "project_name":"Banking Software"
518
+ },
519
+ "amount_paid":0,
520
+ "customer_id":"cust_CaVDm8eDRSXYME",
521
+ "receivers":[
522
+ {
523
+ "id":"ba_DlGmm9mSj8fjRM",
524
+ "entity":"bank_account",
525
+ "ifsc":"RATN0VAAPIS",
526
+ "bank_name": "RBL Bank",
527
+ "name":"Acme Corp",
528
+ "notes":[],
529
+ "account_number":"2223330099089860"
530
+ }
531
+ ],
532
+ "allowed_payers": [
533
+ {
534
+ "type": "bank_account",
535
+ "id":"ba_DlGmm9mSj8fjRM",
536
+ "bank_account": {
537
+ "ifsc": "UTIB0000013",
538
+ "account_number": "914010012345679"
539
+ }
540
+ }
541
+ ],
542
+ "close_by":1681615838,
543
+ "closed_at":null,
544
+ "created_at":1574837626
545
+ }
546
+ ```
547
+ -------------------------------------------------------------------------------------------------------
548
+
549
+ ### Delete an Allowed Payer Account
550
+ ```rb
551
+ virtualId = "va_Di5gbNptcWV8fQ"
552
+
553
+ allowedPayersId = "ba_J0XikIKgezi6PC"
554
+
555
+ Razorpay::VirtualAccount.delete_allowed_payer(virtualId,allowedPayersId)
556
+ ```
557
+
558
+ **Parameters:**
559
+
560
+ | Name | Type | Description |
561
+ |-------|-----------|--------------------------------------------------|
562
+ | virtualId* | string | The id of the virtual to be updated |
563
+ | allowedPayersId* | string | The id of the allowed payers to be updated |
564
+
565
+ **Response:**
566
+ ```json
567
+ null
568
+ ```
569
+ -------------------------------------------------------------------------------------------------------
570
+ ### Close virtual account
571
+ ```rb
572
+ virtualId = "va_Di5gbNptcWV8fQ"
573
+
574
+ Razorpay::VirtualAccount.close(virtualId)
575
+ ```
576
+
577
+ **Parameters:**
578
+
579
+ | Name | Type | Description |
580
+ |-------|-----------|--------------------------------------------------|
581
+ | virtualId* | string | The id of the virtual to be updated |
582
+
583
+ **Response:**
584
+ For close virtual account response please click [here](https://razorpay.com/docs/api/smart-collect/#close-a-virtual-account)
585
+
586
+ -------------------------------------------------------------------------------------------------------
587
+
588
+ **PN: * indicates mandatory fields**
589
+ <br>
590
+ <br>
591
+ **For reference click [here](https://razorpay.com/docs/smart-collect/api/)**