Official java bindings for the Razorpay API.
Documentation of Razorpay's API and their usage is available at https://docs.razorpay.com
Java 1.7 or later
Add this dependency to your project's POM:
<dependency>
<groupId>com.razorpay</groupId>
<artifactId>razorpay-java</artifactId>
<version>1.3.9</version>
</dependency>Add this dependency to your project's build file:
compile "com.razorpay:razorpay-java:1.3.9"Instantiate RazorpayClient with key_id & key_secret. You can obtain the keys from the dashboard app https://dashboard.razorpay.com/#/app/keys
// Initialize client
RazorpayClient razorpayClient = new RazorpayClient("key_id", "key_secret");- Add custom headers to request (optional)
Map<String, String> headers = new HashMap<String, String>();
razorpayClient.addHeaders(headers);- Fetch all payments
List<Payment> payments = razorpayClient.Payments.fetchAll();- Fetch a particular payment:
Payment payment = razorpayClient.Payments.fetch("payment_id");
// The the Entity.get("attribute_key") method has flexible return types depending on the attribute
int amount = payment.get("amount");
String id = payment.get("id");
Date createdAt = payment.get("created_at");- Capturing a payment:
JSONObject options = new JSONObject();
options.put("amount", 1000);
razorpayClient.Payments.capture("payment_id", options);
// Note: Amount should be same as the original amount while creating the payment. The amount should be in paise.- Refund a payment:
// For full refunds
JSONObject refundRequest = new JSONObject();
refundRequest.put("payment_id", <payment_id>);
Refund refund = razorpayClient.Payments.refund(refundRequest);
// For partial refunds
JSONObject refundRequest = new JSONObject();
refundRequest.put("amount", <amount>);
refundRequest.put("payment_id", <payment_id>);
Refund refund = razorpay.Payments.refund(refundRequest);
// Note: Amount to be refunded should be less than or equal to the original amount.The amount should be in paise.- Fetch all refunds for a payment:
JSONObject refundRequest = new JSONObject();
refundRequest.put("payment_id", <payment_id>);
List<Refund> refund = razorpayClient.Payments.fetchAllRefunds(refundRequest);- Fetch refund for a payment:
Refund refund = razorpayClient.Payments.fetchRefund("refund_id");- Create Transfer for a payment:
JSONObject request = new JSONObject();
JSONArray transfers = new JSONArray();
JSONObject transfer = new JSONObject();
transfer.put("amount", <amount>); // The amount should be in paise.
transfer.put("currency", "INR");
transfer.put("account", <account_id>);
transfers.put(transfer);
request.put("transfers", transfers);
List<Transfer> transfers = razorpayClient.Payments.transfer("payment_id", request);- Fetch all transfers for a payment:
List<Transfers> transfers = razorpayClient.Payments.fetchAllTransfers("payment_id");- Fetch payment bank transfer
BankTransfer bankTransfer = razorpayClient.Payments.fetchBankTransfers("payment_id");- Fetch all refunds:
List<Refund> refunds = razorpayClient.Refunds.fetchAll();- Fetch a particular refund:
Refund refund = razorpayClient.Refunds.fetch("refund_id");- Create a new order:
JSONObject options = new JSONObject();
options.put("amount", 5000); // Note: The amount should be in paise.
options.put("currency", "INR");
options.put("receipt", "txn_123456");
Order order = razorpayClient.Orders.create(options);- Fetch a particular order:
Order order = razorpayClient.Orders.fetch("order_id");- Fetch all orders:
List<Order> orders = razorpayClient.Orders.fetchAll();- Fetch payments for an order:
List<Payment> payments = razorpayClient.Orders.fetchPayments("order_id");You can use the Utils class to verify the signature received in response to a payment made using Orders API
JSONObject options = new JSONObject();
options.put("razorpay_order_id", "<order_id>");
options.put("razorpay_payment_id", "<payment_id>");
options.put("razorpay_signature", "<signature>");
Utils.verifyPaymentSignature(paymentResponse, "<secret_key>");You can also verify the signature of the received webhook:
Utils.verifyWebhookSignature("<webhook_payload>", "<webhook_signature>", "<webhook_secret>");- Create a new invoice:
JSONObject lineItem = new JSONObject();
lineItem.put("amount", 100); // Note: The amount should be in paise.
lineItem.put("name", "name_invoice");
JSONArray lineItems = new JSONArray();
lineItems.put(lineItem);
JSONObject request = new JSONObject();
request.put("line_items", lineItems);
request.put("date", 1480768625); // Timestamp in seconds
request.put("currency", "INR");
request.put("sms_notify", "0");
Invoice invoice = razorpayClient.Invoices.create(request);- Fetch a particular invoice:
Invoice invoice = razorpayClient.Invoices.fetch("invoice_id");- Fetch all invoices:
List<Invoice> invoices = razorpayClient.Invoices.fetchAll();- Cancel a particular invoice:
Invoice invoice = razorpayClient.Invoices.cancel("invoice_id");- Fetch card details:
Card card = razorpayClient.Cards.fetch(id);- Create new customer
JSONObject request = new JSONObject();
request.put("name", <name>);
request.put("email", <email>);
Customer customer = razorpayClient.Customers.create(request);- Fetch customer details
Customer customer = razorpayClient.Customers.fetch(customerId);- Edit customer
JSONObject request = new JSONObject();
request.put("name", <name>);
request.put("email", <email>);
Customer customer = razorpayClient.Customers.edit(customerId, request);- Fetch tokens for a customer
List<Token> tokens = razorpayClient.Customers.fetchTokens(customerId);- Get a Token
Token token = razorpayClient.Customers.fetchToken(customerId, tokenId);- Delete a Token
razorpayClient.Customers.deleteToken(customerId, tokenId);- Create direct Transfer
JSONObject request = new JSONObject();
request.put("amount", <amount>); // The amount should be in paise.
request.put("currency", "INR");
request.put("account", <account_id>);
Transfer transfer = razorpayClient.Transfers.create(request);- Edit a Transfer
JSONObject request = new JSONObject();
request.put("on_hold", true); // The amount should be in paise.
Transfer transfer = razorpayClient.Transfers.edit(request);- Create reversal of a Transfer
JSONObject request = new JSONObject();
request.put("amount", <amount>); // The amount should be in paise.
Reversal reversal = razorpayClient.Transfers.reversal("transfer_id", request);- Fetch a particular transfer
Transfer transfer = razorpayClient.Transfers.fetch("transfer_id");- Fetch all transfers
List<Transfer> transfers = razorpayClient.Transfers.fetchAll();- Create a plan
JSONObject request = new JSONObject();
request.put("period", "weekly");
request.put("interval", 1);
JSONObject item = new JSONObject();
item.put("name", "Test Weekly 1 plan");
item.put("description", "Description for the weekly 1 plan");
item.put("amount", 600);
item.put("currency", "INR");
request.put("item", item);
Plan plan = razorpayClient.Plans.create(request);- Fetch a plan
Plan plan = razorpayClient.Plans.fetch("<plan_id>");- Fetch all plans
List<Plan> listPlans = razorpayClient.Plans.fetchAll();- Create a subscription
JSONObject request = new JSONObject();
request.put("plan_id", "<plan_id>");
request.put("customer_notify", 1);
request.put("total_count", 6);
request.put("start_at", 1495995837);
JSONArray addons = new JSONArray();
JSONObject addon = new JSONObject();
JSONObject item = new JSONObject();
item.put("name", "Delivery charges");
item.put("amount", 30000);
item.put("currency", "INR");
addon.put("item", item);
addons.put(addon);
request.put("addons", addons);
Subscription subscription = razorpayClient.Subscriptions.create(request);- Fetch a subscription
Subscription subscription = razorpayClient.Subscriptions.fetch("<subscription_id>");- Fetch all subscription
List<Subscription> listSubscriptions = razorpayClient.Subscriptions.fetchAll();- Cancel a subscription
Subscription subscription = razorpayClient.Subscriptions.cancel("<subscription_id>");- Add addon
JSONObject request = new JSONObject();
request.put("quantity", 2);
JSONObject addonItem = new JSONObject();
addonItem.put("name", "Extra Chair");
addonItem.put("amount", 30000);
addonItem.put("currency", "INR");
request.put("item", addonItem);
Addon addon = razorpayClient.Subscriptions.createAddon(<subscription_id>, request);- Fetch Addon
Addon addon = razorpayClient.Addons.fetch(<addon_id>);- Delete Addon
razorpayClient.Addons.delete(<addon_id>);- Create a virtual account
JSONObject request = new JSONObject();
JSONArray receiverTypeArray = new JSONArray();
receiverTypeArray.put("bank_account");
request.put("receiver_types", receiverTypeArray);
JSONObject notes = new JSONObject();
notes.put("receiver_key", "receiver_value");
request.put("notes", notes);
request.put("description", "First Virtual Account");
VirtualAccount virtualAccount = razorpayClient.VirtualAccounts.create(request);- Fetch Virtual Account
VirtualAccount virtualAccount = razorpayClient.VirtualAccounts.fetch("<virtual_account_id>");- Fetch all Virtual Accounts
List<VirtualAccount> virtualAccountList = razorpayClient.VirtualAccounts.fetchAll();- Close Virtual Account
VirtualAccount virtualAccount = razorpayClient.VirtualAccounts.close("<virtual_account_id>");- List Virtual Account payments
List<Payment> paymentList = razorpayClient.VirtualAccounts.fetchPayments("virtual_account_id");- Make custom requests
You can make custom API requests using clients. For example, here is how to make custom request to /payments/path endpoint.
Entity response = razorpayClient.Payments.post("path", JSONObject requestBody);