Getting Started

This page describes how a partner onboards on Axis Instant Swap

We have provided a list of endpoints to make the integration and onboarding seamless. Below is the description of how to authenticate with our endpoints and a list of endpoints needed to successfully onboard.

Getting Started

To Authenticate you do the following:

  1. Onboard on the partner onboarding list to get your partner ID and credentials

  2. Whitelist your IP (Please ensure IPS are static IPs ) -Follow the Telegram channel and request IP whitelisting through our technical team.

  3. You will be required to perform KYC & sign a contract before your IP can be considered for whitelisting. To Start your KYC visit https://kyc.fuspay.finance

  4. Activate your Axis account using your partner ID

Authentication

  1. IP must be whitelisted

  2. Authorization Header {Authorization: "Bearer partner_secret_key" }. In every request, your secret key will be added to the authorization header as a bearer token

KYC

The Axis system is KYC dependent- meaning only orders from a user that has done KYC will be fulfilled. If a non KYC user initiates an order the order is left in a pending state until the user performs KYC or their KYC data is posted to the B2CUpdateKYC endpoint.

There are 2 types of KYC for a user

  1. Basic KYC

  2. Extended KYC (E-KYC)

With Each KYC category there are transactional limits.

Two Ways of doing KYC

Method
Ideal for
Note

Method 1

This is for B2C merchants that have already done KYC for their users

This is done by posting your users' existing KYC data to this endpoint POST https://exchanger-api.fuspay.finance/api/v1/no-auth/Axis/B2cUpdateUserKyc

Method 2

This is for B2B merchants that haven't done KYC for their users

While creating on-ramp and off-ramp orders, Axis requires some KYC data (firstname, lastname, email, & phonenumber). If the above KYC data is not on our users KYC database, Axis will return a KYC URL where your user can perform a one-time transactional KYC .

Webhook/Callback Signature

Callback signatures are used as an integrity test.

SHA-512 is the encryption algorithm used to sign the callback/webhooks; the event body is signed with the concatenation of the public key and secret key

sha512(body, public_key+secret_key)

Partner Onboarding Endpoints

This endpoint returns a one time link containing your ID and Credentials .

This endpoint is to register a partner

POST https://exchanger-api.fuspay.finance/api/v1/no-auth/PartnerP2P/OnboardPartner.

Partner's Public, Secret Keys, and partners ID will be sent to Partner email as a one-time link.

Headers

Name
Type
Description

Content-Type*

String

application/json

Request Body

Name
Type
Description

partner_code*

String

a code signifying the partner

email*

String

email of the partner

Example request- Code.

const fetch = require('node-fetch');

fetch("https://exchanger-api.fuspay.finance/api/v1/no-auth/PartnerP2P/OnboardPartner", {
  "method": "POST",
  "headers": {
    "Content-Type": "application/json"
  },
  "body": {
    "partner_code": "Binance",
    "email": "sample@example.com"
  }
})
  .then(response => console.log(response))
  .catch(err => console.error(err));

After onboarding on the partner onboarding endpoint, you have to provide the IPs for your system. As the IPs need to whitelist on our system.

Partner Activate Endpoint

This is used to activate partner ID to start using axis

POST https://exchanger-api.fuspay.finance/api/v1/no-auth/Axis/Activate/

Headers

Name
Type
Description

x-partner-id*

String

your partner ID

Request Body

Name
Type
Description

String

Body of request is empty requires only the header

{ success: true, message: string, data: null }

Regenerate Partners Public & Private Keys

This endpoint is used by partners to regenerate their keys

POST https://exchanger-api.fuspay.finance/api/v1/no-auth/PartnerP2P/OnboardPartner./

A One time reset link is sent to the partner email address to regenerate the keys

Old keys becomes invalid

Headers

Name
Type
Description

Content-type*

String

application/json

Authorization*

String

Bearer pk_partner_xxxx

Request Body

Name
Type
Description

email*

String

sample@example.com

signature*

String

sha512-req-body-signed-with-sk_partner_xxxxx

partner_code*

String

the partner code used on partner onboarding

Example Request- Code

const fetch = require('node-fetch');

fetch("https://exchanger-api.fuspay.finance/api/v1/no-auth/PartnerP2P/GenKeysForPartner", {
  "method": "POST",
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer pk_partner_xxxx",
  },
  "body": {
    "email": "sample@example.com",
    "partner_code":"",
    "signature": "sha512-req-body-signed-with-sk_partner_xxxxx"
  }
})
  .then(response => console.log(response))
  .catch(err => console.error(err));

Digital Signature

This endpoint is used to sign the request body. and generate the digital signature.

POST https://exchanger-api.fuspay.finance/api/v1/no-auth/PartnerP2P/SignRequestSha512/

The object is signed without including the signature field. Also sign exactly the fields that would be posted to the endpoint

Please make sure we have whitelisted all your IPs

Only Collection or Order creation requires using of merchant secret and partner secret all other request to be signed are to be signed using partner secret alone

Headers

Name
Type
Description

Content-Type*

String

application/json

Example Request Body

Request body may be different depending on what you would like to sign

Name
Type
Description

partner_order_id*

String

the order id on partners end

amount_to_collect*

String

the amount to be collected

timestamp*

String

the time the order was created

currency*

String

the currency of collection eg GHS, NGN

partner_callback_url*

String

the url where payment confirmation would be posted

partner_redirect_url

String

partners site where users would be redirected after successful payment

secret*

String

Signed with partner secret.

Sample code

const request = require('request');


const options = {
  method: 'POST',
  url: 'https://exchanger-api.fuspay.finance/api/v1/no-auth/PartnerP2P/SignRequestSha512',
  headers: {'Content-Type': 'application/json'},
  body: {
    partner_order_id: 'FUSPAY-00400-001-091-008',
    amount_to_collect: '30',
    timestamp: 1693285902419,
    order_expiration: 1693285902419,
    intrapay_merchant_id: "",
    partner_id: ""
    currency: 'NGN',
    partner_callback_url: 'https://webhook.site/xxxxxxxx',
    partner_redirect_url: 'https://google.com',
    secret: '4LJDHGA-SJTECNA-XXXX-XXXXsk_partner_ph25sjy-qtfeoxy-rqbvzyq-z-xx'
  },
  json: true
};

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});

Last updated