Clone or download
ankit-rzp Merge pull request #34 from razorpay/fix_tls
[TLS]: Support for TLSv1.2
Latest commit 2aa7a92 Jun 29, 2018

Razorpay Java SDK

Official java bindings for the Razorpay API.


Documentation of Razorpay's API and their usage is available at


Java 1.7 or later


Maven users

Add this dependency to your project's POM:


Gradle users

Add this dependency to your project's build file:

compile "com.razorpay:razorpay-java:1.3.7"


Instantiate RazorpayClient with key_id & key_secret. You can obtain the keys from the dashboard app

// Initialize client
RazorpayClient razorpayClient = new RazorpayClient("key_id", "key_secret");
  • Add custom headers to request (optional)
Map<String, String> headers = new HashMap<String, String>();


  • 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>);
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 paymentResponse = 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();

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();


  • 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);
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

Virtual Accounts

  • Create a virtual account
JSONObject request = new JSONObject();
JSONArray receiverTypeArray = new JSONArray();
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 ="path", JSONObject requestBody);