Python bindings for interacting with the Razorpay API
This is primarily meant for merchants who wish to perform interactions with the Razorpay API programatically.
$ pip install razorpay
You need to setup your key and secret using the following: You can find your API keys at https://dashboard.razorpay.com/#/app/keys.
import razorpay
client = razorpay.Client(auth=("<YOUR_API_KEY>", "<YOUR_API_SECRET>"))
After setting up client, you can set your app details before making any request to Razorpay using the following:
client.set_app_details({"title" : "<YOUR_APP_TITLE>", "version" : "<YOUR_APP_VERSION>"})
For example, you can set the title to Django
and version to 1.8.17
. Please ensure
that both app title and version are strings.
-
Fetch all payments
client.payment.all()
-
Fetch a particular payment
client.payment.fetch("<PAYMENT_ID>")
-
Capture a payment
client.payment.capture("<PAYMENT_ID>", "<AMOUNT>") Note: <AMOUNT> should be same as the original amount while creating the payment
-
Refund a payment
client.payment.refund("<PAYMENT_ID>", "<AMOUNT>") # for full refund client.payment.refund("<PAYMENT_ID>", "<AMOUNT_TO_BE_REFUNDED>") # for particular amount Note: <AMOUNT_TO_BE_REFUNDED> should be equal/less than the original amount
-
Get Bank Transfer Entity for given payment
client.payment.bank_transfer("<PAYMENT_ID>")
-
Create transfer for given payment id
client.payment.transfer("<PAYMENT_ID>")
For List of params refer to the API guide : https://razorpay.com/docs/route/api-reference/#creating-payments
-
Fetch all transfers associated with the payment
client.payment.transfers("<PAYMENT_ID>")
-
Fetch a particular refund
client.refund.fetch("<refund_id>")
-
Fetch all refunds
client.refund.all()
-
Create a new order
client.order.create(data=DATA) DATA should contain these keys amount : amount of order currency : currency of order receipt : receipt id of order payment_capture : 1 if capture should be done automatically or else 0 notes(optional) : optional notes for order
-
fetch a particular order
client.order.fetch("<ORDER_ID>")
-
fetch all orders
client.order.all()
-
fetch Payments of order
client.order.payments("<ORDER_ID>")
-
Create payment link
Refer api docs for allowed request parameters.
DATA = { "customer": { "name": "Test Customer", "email": "test@example.com", "contact": "+919999888877" }, "type": "link", "amount": 100, "currency": "INR", "description": "Payment link for this purpose - xyz" } client.invoice.create(data=DATA)
-
Fetch payment link's details by id
client.invoice.fetch("<INVOICE_ID>")
-
Fetch all payment link
Refer api docs for allowed query parameters.
client.invoice.all()
-
Cancel a payment link by id
client.invoice.cancel("<INVOICE_ID>")
-
Send/resend notifications for a payment link by id
client.invoice.notify_by("<INVOICE_ID>", "<MEDIUM>") # MEDIUM - sms/email
-
Create a new invoice
Refer api docs for allowed request parameters in detail.
client.invoice.create(data=DATA)
-
Fetch a invoice by id
client.invoice.fetch("<INVOICE_ID>")
-
Fetch all invoices
Refer api docs for allowed query parameters.
client.invoice.all()
-
Cancel an invoice by id
client.invoice.cancel("<INVOICE_ID>")
-
Send/resend notifications for an invoice by id
client.invoice.notify_by("<INVOICE_ID>", "<MEDIUM>") # MEDIUM - sms/email
-
Issue an invoice in draft status by id
client.invoice.issue("<INVOICE_ID>")
-
Delete an invoice by id
client.invoice.delete("<INVOICE_ID>")
-
Edit an invoice by id
Refer api docs for allowed request parameters in detail.
client.invoice.edit(invoice_id=invoice_id,data=DATA)
-
fetch a particular settlement detail
client.settlement.fetch("<SETTLEMENT_ID>")
-
fetch all settlement detail
client.settlement.all()
-
fetch a particular card data
client.card.fetch(card_id=card_id)
-
fetch a particular customer Info
client.customer.fetch(customer_id=customer_id)
-
Create a customer
client.customer.create(data=data)
-
Edit a customer info
client.customer.edit(customer_id=customer_id, data=data)
-
fetch a token associated with a customer
client.token.fetch(customer_id=customer_id, token_id=token_id)
-
fetch all tokens associated with customer
client.token.all(customer_id=customer_id)
-
Delete a given token assicated with a customer
client.token.delete(customer_id=customer_id, token_id=token_id)
-
fetch all virtual account entities
client.virtual_account.all()
-
fetch single virtual account details
client.virtual_account.fetch(virtual_account_id=virtual_account_id)
-
create virtual account
client.virtual_account.create(data=DATA) DATA should contain these keys receiver_types : ['bank_account'] description : 'Random Description' customer_id(optional) : <CUSTOMER_ID>
-
close virtual account
client.virtual_account.close(virtual_account_id=virtual_account_id)
-
fetch all payments for virtual account id
client.virtual_account.payments(virtual_account_id=virtual_account_id)
-
Verify Payment Signature
params_dict
should haverazorpay_order_id
,razorpay_payment_id
,razorpay_signature
which are received in the callbackclient.utility.verify_payment_signature(params_dict)
-
Verify Webhook Signature
webhook_signature
is the signature you receive underX-Razorpay-Signature
in the webhook, whilewebhook_secret
is the secret you used when creating the webhook on dashboard.client.utility.verify_webhook_signature(webhook_body, webhook_signature, webhook_secret)
-
Create a new subscription
client.subscription.create(data=DATA) DATA should contain these keys plan_id : plan_id of subscription customer_id : id of customer total_count : number of subscriptions
-
Fetch a particular subscription
client.subscription.fetch("<SUBSCRIPTION_ID>")
-
Fetch all subscriptions
client.subscription.all()
-
Cancel subscription
client.subscription.cancel("<SUBSCRIPTION_ID>")
-
Create an addon for subscription
client.subscription.createAddon("<SUBSCRIPTION_ID>", data=DATA) DATA should have these keys item : dict with keys amount, name and currency quantity : number of items
-
Fetch a particular addon Info
client.addon.fetch(addon_id=addon_id)
-
Delete an addon
client.addon.delete(addon_id=addon_id)
-
Create a new plan
client.plan.create(data=DATA) DATA should contain these keys item_id : corresponding item_id
-
Fetch a particular plan
client.plan.fetch("<PLAN_ID>")
-
Fetch all plans
client.plan.all()
-
Fetch all Transfers
client.transfer.all()
-
Fetch transfer by ID
client.transfer.fetch("<TRANSFER_ID>")
-
Create Transfer from given data
client.transfer.create(data=DATA) DATA should contain these keys amount : 100 currency : INR account : acc_865rdfghu7632
-
Edit Transfer from given data
client.transfer.edit(transfer_id=transfer_id, data=DATA) DATA may contain these keys on_hold : True/False on_hold_until : 15678903127
For details on Transfer edit, please refer to the API guide: https://razorpay.com/docs/route/api-reference/#examples
-
Reverse a given Transfer
client.transfer.reverse(transfer_id=transfer_id)
-
Fetch all reversals for a given Transfer
client.transfer.reversals(transfer_id=transfer_id)
All of those are welcome. You can file issues or submit pull requests in this repository.