npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

not-payouts-razorpayx

v1.0.0

Published

A package for make payment easy using razorpayx

Downloads

4

Readme

NOT-RAZORPAYX

==========

A simple and reliable Node.js package for automating payment process.

Getting Started with razorpayX

  • sign up, account activation and KYC verification in razorpayx and make payouts. Steps to create your first payout:

    • Create a Contact
    • Add a Fund Account to a contact
    • Create a Payout

Benefits

  • Does only one thing and does it well. Only the Contact, Fund Account and Payout API methods are implemented.
  • Good error handling:
    • Only "2xx" and "3xx" responses from razorpay are considered successful.
  • Tested and reliable. Includes test suite.

Synopsis

Start by creating a client object, and then call the createContact, createAccount, createPayoutmethod depending on your needs.

let NotPayout = require('not-razorpayx')
, client = NotPayout.configPayout({ key: 'key', secret: 'secret' })

// Give razorpay the details and let it construct the payment for you.
 await client.createPayout({
        account_number: '<account_number_created_in fund_account>',
        details:{
            fund_account_id: "fa_E2i8yMbO5rag3Es",
            amount:10000, 
            currency:'INR',
            mode:'NEFT',
            purpose:'payout', 
            queue_if_low_balance: true,
            reference_id:'ref1234',
            narration:'NextOnTop HI Tech Soft Solution',
            notes: { company: 'nextontop', processing: 'done' }
        },
    })

The methody can be handled in 2 ways (Promises) or (async/await)

  • Promises way
    client.createPayout()
    .then(data =>{
        console.log(data)
    })
    .catch(error => {
        console.log(error);
    })
  • async/await way
    try {
        var payout_details = await client.createPayout()
        console.log(payout_details);
    } catch (error) {
        console.log(error);
    }

Installation

npm install not-razorpayx --save

The module has one primary export:

createClient()

You'll probably only be using this method. It takes an options object with the following properties:

`key` -  your Razorpayx key .
`secret` - your Razorpayx secret.

To create your razorpayX account. Check RazorpayX to be sure the region you are in is supported.

let NotPayout = require('not-razorpayx')
, client = NotPayout.configPayout({ key: 'key', secret: 'secret' })
  • Steps to follow.

    1. Create a Contact
    2. Add a Fund Account to a contact
    3. Create a Payout

Contact Methods

  • There are several methods involves in Contacts module:
    • CreateContact()
    • updateContact()
    • getContacts()
    • enableContact()
    • disableContact()
 // Create new contact
    client.createContact({
            name: 'ragav rvd', // (mandatory) 'String'
            email: '[email protected]', // (optional) 'String'
            contact: '9677822758', // (optional) 'String'
            type: 'customer', // (optional) 'String' ['vendor', 'customer', 'employee', 'self']
            reference_id:'contact_1234', // (optional) 'String' Can have a maximum length of 40 characters.
            notes: {} //(optional) 'object' Eg:{"note-key": "Beam me up Scotty"} 
    })

// Update Contact Details
    client.updateContact({
        id: 'cont_E3sSZ2ewjKGmcK', // (mandatory) The unique identifier linked to the contact.
        //The details need to update
        name: 'ragav',
        email: '[email protected]',
        contact: '9874563210',
    })
 
 // Get all contacts.
    client.getContacts()

 // Get get single contact.
    let contact_id = 'cont_E3sSZ2ewjKGmcK'
    client.getContacts(contact_id);


// Activate Contact
    client.enableContact({ id: 'cont_E3sSZ2ewjKGmcK'})
// Deactivate Contact
    client.disableContact({ id: 'cont_E3sSZ2ewjKGmcK'})

CreateContact receives an options object with the following properties:

`name` - string (required). User name to create the contact.
`email` - string. Email address of the contact.
`contact` - string. Phone number of the contact.
`type` - String. Available options are ['vendor', 'customer', 'employee', 'self']
`reference_id` - String. User-generated reference for the contact, This field can have a maximum length of 40 characters.
`notes` - Notes you can enter for the contact for future reference. This is a key-value pair Eg:{"note-key": "Beam me up Scotty"} 

Fund Accounts Methods

  • There are several methods involves in Fund Account module:
    • createAccount()

    • getFundAccounts()

    • enableAccount()

    • disableAccount()

 // create new Fund account 
    client.createAccount({
        contact_id: 'cont_E3sSZ2ewjKGmcK', // (mandatory) 'String'
        account_type: 'bank_account', // [bank_account, 'vpa', 'card']
            details:{
        // for bank_account type
            accountHolderName:'ragav rvd', // (mandatory) 'String'
            ifsc:'HDFC0000053', // (mandatory) 'String'
            account_number:"765432123456789", // (mandatory) 'String'
        // for vpa type
            // vpaAddress:"[email protected]", // (mandatory) 'String'
        // for the card type
            // cardHolderName:"ragav rvd",  (optional) 'String'
            // cardNumber:"765432123456789" // (mandatory) 'String'
        },
    })
 
 // Get all Fund Accounts.
    client.getAccounts()

 // Get single Fund Account Details.
    client.getSingleAccount({id:'fa_E3sSZ2ewjKGmcK'})


// Activate Account
    client.enableContact({ id: 'fa_E3sSZ2ewjKGmcK' })
// Deactivate Account
    client.disableContact({ id: 'fa_E3sSZ2ewjKGmcK'})

CreateAccount receives an options object with the following properties:

For bank_account
    `accountHolderName` - string (required). Name of account holder as per bank records. For example,Gaurav Kumar.
    `ifsc` -  string (required).IFSC for the account number. For example,HDFC0000053.
    `account_number` - string (required). Beneficiary account number. For example, '765432123456789'.
For vpa
    `vpaAddress` -  string (required) The virtual payment address. For example, ragavrvd@upi. 
For card
    `cardHolderName` - string (required). Name of the credit card holder. For example,ragav rvd.
    `cardNumber` - string (required). Beneficiary credit card number. For example, 765432123456789.

Payout Methods

  • There are several methods involves in Payout module:
    • createPayout()
    • getSinglePayout()
    • getPayouts()
    • cancelPayout()
 // create new Payout
    client.createPayout({
        account_number: '7878780080316316', //(mandatory) 'String' This is the business account from which the payout is to be made. For example, 7878780080316316.
        details:{
            fund_account_id: "fa_E2i8yPtL5Peb3Zs", //(mandatory) 'String' The unique ID linked to a fund account. For example, fa_00000000000001.
            amount:1000, // (mandatory) 'Integer' The amount, in paise, to be transferred from the business account to the contact's fund account.The minimum value that can be passed is 100. 
            currency:'INR', //(mandatory) string.
            mode:'NEFT', //(mandatory) 'String' ['NEFT', 'RTGS', 'IMPS', 'IFT', 'UPI']
            purpose:'payout', // (mandatory) 'String' ['refund','cashback','payout','salary','utility bill','vendor bill']
            queue_if_low_balance: true,  // (mandatory) 'String'[true, false]
            reference_id:'ref1234', // You can use this field to store your own transaction ID, if any. This field can have a maximum length of 40 characters.
            narration:'NextOnTop HI Tech SoftSolution', // Data type string. This is a custom note that also appears on the bank statement. This field can have a maximum length of 30 characters. Allowed characters are: a-z, A-Z, 0-9 and space.
            notes: {} //(optional) 'object' Eg:{"note-key": "Beam me up Scotty"} 
        },
    })
 
 // Get All Payouts.
    // client.getPayouts({
        // account_number:'7878780080316316'
    // })

 // Get get single Payout Details.
    client.getSinglePayout({id:'pout_E2iACAzvh9MwvC'})


// Cancel the queued payout.
    client.cancelPayout({id:'pout_E2iACAzvh9MwvC'}) 

CreatePayout receives an options object with the following properties:

`account_number` - string (required). This is the business account from which the payout is to be made. For example, 7878780080316316.
`fund_account_id` -  string (required). The unique ID linked to a fund account. For example, fa_00000000000001.
`amount` - integer (required).  The amount, in paise, to be transferred from the business account to the contact's fund account. For example, if you want to transfer ₹100, pass 10000 against this parameter. The minimum value that can be passed is 100.
`currency` - string (required). The currency in which the payout is being made. In this case it is INR.
`mode` - string (required). The mode to be used to create the payout ['NEFT', 'RTGS', 'IMPS', 'IFT', 'UPI']. The payout modes are case sensitive. When creating payouts using APIs, ensure payout modes are entered in upper case.
`purpose` - string (required). The purpose of the payout that is being created.
`queue_if_low_balance` - boolean (optional). Represents that you want a payout to be queued if there is insufficient balance in your business account. If you want a payout to be queued when your business account has insufficient balance pass true, else pass false.
`reference_id` - string (optional). You can use this field to store your own transaction ID, if any. This field can have a maximum length of 40 characters.
`narration` - string (optional). This is a custom note that also appears on the bank statement. This field can have a maximum length of 30 characters. Allowed characters are: a-z, A-Z, 0-9 and space.
`notes` - (optional) 'object' Eg:{"note-key": "Beam me up Scotty"} 

Request & Response

The request you made in this method transports your message to the razorpayx service. If razzorpayx returns an HTTP status code that's less than 200 or greater than or equal to 400, we will catch with an error object that is a direct translation of the error razorpayx provides.

See Error Handling section below for details on the structure of returned errors.

Check for errors returned since a 400 status is not uncommon.

The data returned in the callback is the HTTP body returned by razorpayx as json object. See the Razorpayx API Response docs for details.

Error Handling

Example error response:

  • If you miss to send the required field values for any request yo will get the following error response.
{ 
    "err_code": "BAD_REQUEST_ERROR",
    "message": "No db records found." 
}

License

MIT