Merchant onboarding is the process by which Independent Software Vendors (ISVs) and technology platforms enable new merchants to accept electronic payments in their systems. It applies to a wide range of merchants, from small businesses looking to accept digital payments to large corporations seeking to integrate payment processing into their existing systems, as well as businesses of all sizes wanting to expand into new markets, both domestically and internationally.
Traditionally, merchant onboarding is a lengthy manual process that often takes weeks. It involves back-and-forth communication, filing an application, signing paperwork, and a verification process followed by configuring payment processing services. It's time-consuming and error-prone, which can increase costs and cause delays. It can also be frustrating for merchants, impeding the start of an ISV's business partnership with them.
Much of this hassle can be removed by automating the merchant onboarding process.
In this article, you will learn more about the steps involved in merchant onboarding, the benefits of automating this process, and how to implement an automated merchant onboarding workflow using North's Merchant Boarding API in Node.js.
Click through the interactive visualizer below to view details about the API calls that are used in the Simplified Enrollment flow.
Submit a completed application to Underwriting for review.
When performed manually, the merchant onboarding process starts by collecting business information such as corporate registration documents, sales volume, bank account information, business address, business contact information, and business owner's information from the merchant. The payment processing company then verifies, analyzes, and reviews this information to be legally compliant and ensure the business is legitimate. If the initial review process shows signs of high-risk activities, extra documents such as financial statements may be needed for further review.
Manually collecting and sharing this type of information and documentation not only extends the process but also makes it prone to human errors. Using a payment partner with a well-established automated merchant onboarding system can simplify and shorten this process considerably to reduce human errors and delays, giving your merchants a much smoother onboarding experience.
Implementing an automated onboarding workflow can be done using an API that allows merchants to apply and provide their supporting documents online and to receive real-time updates about the verification process. Boarding APIs can also help verify the merchant's information using digital methods to complete the process quickly.
If you have your own merchant portal, you can benefit from integrating with North's Custom Enrollment Flow. If you don't have your own portal, you can use North's Simplified Enrollment Flow. As shown in the diagram below, North's Simplified Enrollment process allows merchants to complete their application and upload their supporting documents on the existing North portal:
Automating Merchant Onboarding Using North's Merchant Boarding API
To integrate with North's Merchant Boarding API, you will complete the following steps:
- Get the API access credentials
- Set up the project
- Create a server
- Create an interface
- Create routes
- Create event listeners
- Create an authentication helper
- Create a controller
- Test the application
You can find the code for this project in this GitHub repo .
Prerequisites
To implement the steps in this tutorial, you need to have Node and npm installed on your machine. You also need to sign up for a free North Developer account.
Getting the API Access Credentials
To be able to call the API endpoints, you need to obtain North sandbox credentials that you will use for development and testing. Log in to North Developer and click Contact in the top menu. Submit your request using the contact form. A North representative will be in touch to provide API credentials.
Creating a New Project
In this demo project, you will use Node to authenticate and send requests to North's Merchant Boarding API. To get started, create a new folder, navigate to this folder in your terminal window, and run the following command to create a package.json file:
Next, run the following command to install the required packages and their dependencies:
These packages are as follows:
- express to create a server
- axios to authenticate and send HTTP requests
- body-parser to parse request bodies
- ejs to set as a rendering engine
- uuid to generate random application keys
Then, create the following files and folders:
- views folder containing a newMerchantApplication.ejs file
- public folder containing app.css and app.js files
- index.js
- createApplication.ejs
- applicationController.js
- routes.js
- helper.js
Creating a Server
The next step is to create a server. Open your index.js file and add the following code to it:
This file creates a server that listens to port 3000 and sets ejs as a rendering engine, the public folder as the public resources directory, and the routes that you will create in the routes.js file.
Creating an Interface
Next, you'll create an interface that contains the form where the user will enter the initial info to create a new merchant application, then send it to the merchant to complete and finally submit it to North for underwriting.
Open the views/newMerchantApplication.ejs file and paste this code into it:
HTML
The file imports two external resources, bootstrap for styling and jQuery to handle AJAX requests, in addition to the two resource files that you created, app.css and app.js. The form contains the required fields to create a new application, four buttons to run the API requests, three hidden status bars to show the status of the request, and a code block at the bottom of the page where the response of the API requests will appear.
Add CSS Styles
To enhance the view of this HTML page, open the public/app.css file and add the following CSS code:
Creating Routes
To create the routes for your application, add this code to the routes.js file:
This code creates five routes:
- GET:/: to render the homepage interface
- POST:/create-application: to handle the application creation API request
- POST:/update-application: to handle the application update API request
- POST:/send-application: to handle the application sending API request
- POST:/submit-application: to handle the application submission API request
Creating Event Listeners
To handle the button clicks on the interface page, you need to create event listeners. Open the public/app.js file and paste the following code into it:
This code starts by declaring an empty string variable called applicationKey. This variable stores the application's externalKey value during the browser session.
Then, four event listeners are defined for the four buttons that you previously created in the views/newMerchantApplication.ejs interface file. The first listener handles the click event on the Create Application button. When the Create Application button is clicked, a POST request is sent to the /create-application route. The request body includes the values obtained from the input fields of the form. After this, the event listeners for the Send Application, Submit Application and Update Application buttons send POST requests to the /send-application, /submit-application and /update-application routes, respectively. The applicationKey value is included in the request bodies of the four buttons so it can be handled in the applicationController.js file.
When each of the POST requests executes successfully, the JSON response appears in the code block at the end of the page.
Creating an Authentication Helper
Next, you will create an authentication helper that you'll use to generate an authentication token.
Open the helper.js file and paste the following code into it:
The helper.js file contains the getAuthToken function that sends a post request using axios.post method to generate the access token. This access token is a JWT bearer token that must be generated to call the application endpoints.
Remember to replace YOUR_CLIENT_ID_HERE with your client ID and YOUR_CLIENT_SECRET_HERE with your client secret key, which you obtained in the first step of this tutorial by contacting North.
Creating a Controller
Next, you'll create the functions to handle the communication with North's Merchant Boarding API. Open your applicationController.js file and paste the following code into it:
This code starts by importing the axios library, the helper.js file, and the uuid module and then declaring the Sandbox Authentication URL. Then, the applicationController class is created. The class contains four functions that do the following:
- The createApplication function uses the authHelper.getAuthToken function to get an access token then includes this token in the config variable, which will be used as request header. Next, the requestBody variable is created from the AJAX request values. To send the application creation request, the axios.post function is used with the /enroll/application request URI. The third argument of this function includes the required application information object. For more information about this object, check out the Merchant Boarding API documentation.
- The sendApplication function uses the axios.put method to send a PUT request with enroll/application/merchant/send/key/'key' as the request URI. This PUT request doesn't require a body, but the request URI includes the externalKey attribute that was created using the createApplication.js function.
- The submitApplication function submits a completed application to underwriting for review. This function also uses the axios.put function to send a PUT request with the request URI as /enroll/application/submit/'externalKey'.
- The updateApplication function updates the application after it has been created. Its code is similar to the createApplication function, with its main difference being that it uses the externalKey attribute to include it in the /enroll/application/'key' request URI, and it uses the axios.patch method to send a PATCH request.
Testing the Application
To test your integration, you will create an application using the interface that you created, send it to a client, and submit it for underwriting.
Navigate to the project folder in your terminal window and run the following command to start the node server:
Then open your browser and go to http://localhost:3000/. Click Create Application. You won't need to complete the form since the form fields contain pre-assigned values. After the execution of the API request, the JSON response will appear at the bottom of the page.
To update some of the information of this application, change the value in the Equity Ownership Percentage field to 99 and click Update Application.
The JSON response for this request will include the updated application object. After the application is created, the Send Application button will appear. Click it to send the application to the merchant.
A successful response will display the applicationStatus as waiting for merchant and the underwritingStatus as Pending Submission.
To finally submit the application for underwriting, click the Submit Application button that should appear after sending the application. The JSON response will include a validation error because the full application hasn't been completed.
To simulate a successful submission of an application that passes validation, open the applicationController.js file and replace the requestBody object in the create Application function with the following object. You will need to replace some of the test information with valid sandbox data, such as your sandbox Agent ID and plan ID. For more information about how to get this data, refer to the Merchant Boarding API Integration Guide.
If you repeat the testing steps, the application should be submitted successfully.
In this article, you learned more about merchant onboarding and the benefits of automating it. You also learned how to integrate with North's Merchant Boarding API to automate accepting merchant applications and submitting them for underwriting, which allows you to speed up this process, reduce errors, and improve your merchant onboarding experience.

How To Get Started
North’s Sales Engineering team provides support to developers and business decision-makers to help select the best possible payment solution. Contact us to learn more about how to connect your system to the North ecosystem.