Setu UPI Deeplinks: NodeJS SDK
@setu/upi-deep-links
is a NodeJS SDK for accessing Setu’s UPI Deeplinks APIs. The SDK is designed with ease of access in mind, with full TypeScript support.
Getting started
SDK documentation →
Full documentation →
Product overview →
Installation
npm install @setu/upi-deep-links
yarn add @setu/upi-deep-links
Features
- Full support for latest UPI Deeplinks APIs
- Type definitions for all inputs & outputs
- Allows both JWT & OAuth authentication mechanisms
SANDBOX
mode to test integration & PRODUCTION
for live data- Internal mechanism for OAuth authentication to automatically re-fetch token when current one expires, and retry all failed requests.
Examples
Setup
import { SetuUPIDeepLink } from "@setu/upi-deep-links";
const upidl = SetuUPIDeepLink({
schemeID: "5bf4376b-6008-43c8-8ce0-a5ea196e3091",
secret: "9975fd99-d5ed-416a-9963-5d113dc80582",
productInstanceID: "861023031961584801",
mode: "SANDBOX",
authType: "JWT",
});
Generate UPI payment link
const paymentLinkBody = {
amountValue: 20000,
billerBillID: "918147077472",
amountExactness: "EXACT",
settlement: {
parts: [
{
account: {
id: "987654321",
ifsc: "KKBK0000001",
},
remarks: "EXACT sample split",
split: {
unit: "INR",
value: 10000,
},
},
],
primaryAccount: {
id: "123456789",
ifsc: "KKBK0000001",
},
},
};
const data = await upiDL.createPaymentLink(paymentLinkBody);
Check status of UPI payment link
const data = await upiDL.checkPaymentStatus("891365293916423373");
Trigger mock payment for UPI payment link (Sandbox only)
const data = await upidl.triggerMockPayment({
amountValue: 200,
platformBillID: "891365293916423373",
vpa: "nareshlocal@kaypay",
});
Expire a UPI payment link
const data = await upiDL.expireBill("891365293916423373");
Initiate refunds
const data = await upiDL.initiateRefund({
refunds: [
{
identifier: platformBillID,
identifierType: "BILL_ID",
refundType: "FULL",
deductions: [
{
account: {
id: "123456789",
ifsc: "KKBK0000001",
},
split: {
unit: "INR",
value: 10000,
},
},
{
account: {
id: "987654321",
ifsc: "KKBK0000001",
},
split: {
unit: "INR",
value: 10000,
},
},
],
},
],
});
Get refund batch status
const data = await upiDL.getRefundBatchStatus(initiateRefundResponse.batchID);
Get individual refund status
const data = await upiDL.getRefundStatus(getRefundBatchStatusResponse.refunds[0].id);
Contributing
Have a look through existing Issues and Pull Requests that you could help with. If you'd like to request a feature or report a bug, please create a GitHub Issue using the template provided.
See contribution guide →
License
MIT. Have at it.