# Welcome to Axis Instant Swap

This page is meant to give an overview and understanding of the integration process of our Instant Swap System

<figure><img src="https://1683729599-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFU24OF8juMGRM9K7EdyI%2Fuploads%2FpTAE1GvpHBTfBGjoFyuD%2FScreenshot%202024-03-15%20at%2020.35.23.png?alt=media&amp;token=e2410541-687e-47c4-9afe-6aaa5895d3b7" alt=""><figcaption><p>Fuspay Axis Real-time Stablecoin to Fiat Currency Swap API</p></figcaption></figure>

## Axis  (Instant Swap)

Axis is a real-time swap solution designed to help merchants securely and instantly swap between Stablecoin (e.g. USDT) and Fiats.  e.g. swap from NGN to USDT or  USDT to NGN using a rate set by us. With a single integration on the Axis, you can swap between USDT and 18+ fiat currencies.

### Supported Currencies

1. USDT (TRC-20)&#x20;
2. USDC (MATIC)
3. eUSD
4. NGN (Bank Transfer )
5. GHS (Mobile Money)
6. KHS (Mobile Money- M Pesa)
7. 15+ Fiate Currencies

### Swap Rate

All swaps between currency pairs are done at a floated and competitive exchange rate.&#x20;

The minimum Stable Coin is $10 (USDT, USDC, eUSD).

{% tabs %}
{% tab title="200: OK successful response" %}

```
{
     success: true,
     message: string,
     data: {
     "NGN/USDT": 1500,
     "USDT/NGN": 1500
     }
```

{% endtab %}
{% endtabs %}

NGN/USDT = Onramp; USDT/NGN = offramp

### How our API Works

The Axis API is event-driven.  To make a successful swap (either on-ramp or Off-ramp) there are 3 events each for Funding and withdrawal.

### What Can I do on API?

* **Fiat on-ramp** - Enable your users to instantly buy cryptocurrencies with local payments in fiats such as **NGN**, **GHS**, and **KES using bank transfers and mobile money**&#x20;

<figure><img src="https://1683729599-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFU24OF8juMGRM9K7EdyI%2Fuploads%2F1IYrKE1NGxM4RaOb3exs%2FScreenshot%202024-03-16%20at%2004.28.13.png?alt=media&amp;token=93a6a544-c606-426d-bb13-435cf55b12cd" alt=""><figcaption><p>Flowchart of how your application make calls to our Application in Funding (on-ramp) usecase</p></figcaption></figure>

* **Crypto off-ramp** - Swap Stablecoin (e.g USDT)  to fiats such as  **NGN**, **GHS**, and **KES**

<figure><img src="https://1683729599-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFU24OF8juMGRM9K7EdyI%2Fuploads%2FhxPyaJ9Yp0EUYyyen03d%2FScreenshot%202024-03-16%20at%2004.28.03.png?alt=media&amp;token=89367f87-09f7-4e17-82fa-0c9b0e09e3d5" alt=""><figcaption><p>Flowchart of how your application make calls to our Application in Withdrawal (off-ramp) usecase</p></figcaption></figure>

### How do I Get Started?

To get started please register on our [partner onboarding endpoint](https://axis-docs.fuspay.finance/getting-started/partner-onboarding-endpoints) to get the credentials needed to authenticate with our swap API&#x20;

## Benefits of Axis&#x20;

1. **Instant settlement:** Fiats and Stablecoin (e.g USDT) are settled in real-time&#x20;
2. **Non-Custodial:**  As a merchant, you will not be involved in the flow of funds and money will be settled into your user's wallet address (Funding)  or bank account (Withdrawal).&#x20;
3. **Multi-currency:** The Axis system allows you to swap between fiat (NGN, GHS, KES. 15+ fiat currencies) and **cryptocurrency (USDT).  eg NGN/USDT, and USDT/NGN**&#x20;
4. **Competitive rates:** Rates are competitive when compared to other exchanges&#x20;

## Dispute Resolution & Issues Handling

We have a dedicated technical and customer support team to help resolve any transaction-related issues within 24 hours.

[**Telegram Support:**](https://t.me/fuspay) <https://t.me/+BP2Os0XbyxU5OWZk>

**Email Support:** <help@fuspay.us>


# 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.&#x20;

### Getting Started&#x20;

To Authenticate you do the following:&#x20;

1. Onboard on the [partner onboarding list ](https://exchanger-api.fuspay.finance/api/v1/no-auth/PartnerP2P/OnboardPartner)to get your partner ID and credentials&#x20;
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](<https://kyc.fuspay.finance >) visit <https://kyc.fuspay.finance&#x20>;
4. [Activate your Axis account ](https://exchanger-api.fuspay.finance/api/v1/no-auth/Axis/Activate/)using your partner ID&#x20;

### Authentication&#x20;

1. IP must be whitelisted&#x20;
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&#x20;

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.&#x20;

There are 2 types of KYC for a user&#x20;

1. Basic KYC&#x20;
2. Extended KYC (E-KYC)

With Each KYC category there are transactional limits.

#### Two  Ways of doing KYC

<table data-full-width="true"><thead><tr><th>Method</th><th>Ideal for </th><th>Note</th></tr></thead><tbody><tr><td>Method 1</td><td>This is for B2C merchants that have already done KYC for their users </td><td>This is done by posting your users' existing KYC data to this endpoint <br><br> <mark style="color:green;"><code>POST</code></mark> <code>https://exchanger-api.fuspay.finance/</code>api/v1/no-auth/Axis/B2cUpdateUserKyc<br><br></td></tr><tr><td>Method 2 </td><td>This is for B2B merchants that haven't done KYC for their users </td><td>While creating on-ramp and off-ramp orders,  Axis requires some KYC data (firstname, lastname, email, &#x26; phonenumber).<br><br>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 .<br></td></tr><tr><td></td><td></td><td></td></tr></tbody></table>

### Webhook/Callback Signature&#x20;

Callback signatures are used as an integrity test.&#x20;

{% hint style="warning" %} <mark style="background-color:purple;">SHA-512</mark>  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)
{% endhint %}

Partner Onboarding Endpoints

{% hint style="warning" %}
This endpoint returns a one time link containing your ID and Credentials .&#x20;
{% endhint %}

## This endpoint is to register a partner&#x20;

<mark style="color:green;">`POST`</mark> `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.&#x20;

#### Headers

| Name                                           | Type   | Description      |
| ---------------------------------------------- | ------ | ---------------- |
| Content-Type<mark style="color:red;">\*</mark> | String | application/json |

#### Request Body

| Name                                            | Type   | Description                   |
| ----------------------------------------------- | ------ | ----------------------------- |
| partner\_code<mark style="color:red;">\*</mark> | String | a code signifying the partner |
| email<mark style="color:red;">\*</mark>         | String | email of the partner          |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

### Example request- Code.

{% tabs %}
{% tab title="Nodejs" %}

```javascript
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));
```

{% endtab %}

{% tab title="cURL" %}

```
curl "https://exchanger-api.fuspay.finance/api/v1/no-auth/PartnerP2P/OnboardPartner" \
  -H 'Content-Type: application/json' \
  -X POST \
  -b 'connect.sid'='s%3AoNBPv4ez8npeuKVKlS9KwX_1Dshiamlf.n8opjPuoF3XsU%2Be0VTLMUe6xzeAXmpCfQrpW9KW1KDs' \
  -d '{
  "partner_code": "Binance",
  "email": "sample@example.com"
}' 
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
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.&#x20;
{% endhint %}

### Partner Activate Endpoint &#x20;

## This is used to activate partner ID to start using axis

<mark style="color:green;">`POST`</mark> `https://exchanger-api.fuspay.finance/api/v1/no-auth/Axis/Activate/`

#### Headers

| Name                                           | Type   | Description     |
| ---------------------------------------------- | ------ | --------------- |
| x-partner-id<mark style="color:red;">\*</mark> | String | your partner ID |

#### Request Body

| Name | Type   | Description                                       |
| ---- | ------ | ------------------------------------------------- |
|      | String | Body of request is empty requires only the header |

{% tabs %}
{% tab title="200: OK Successful " %}
{ success: true, message: string, data: null }
{% endtab %}

{% tab title="400: Bad Request Error" %}

```javascript
{
     error: true,
     message: string,
     data: null
     }

```

{% endtab %}
{% endtabs %}

###

### Regenerate Partners Public & Private Keys

## This endpoint is used by partners to regenerate their keys&#x20;

<mark style="color:green;">`POST`</mark> `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<mark style="color:red;">\*</mark>  | String | application/json         |
| Authorization<mark style="color:red;">\*</mark> | String | Bearer pk\_partner\_xxxx |

#### Request Body

| Name                                            | Type   | Description                                    |
| ----------------------------------------------- | ------ | ---------------------------------------------- |
| email<mark style="color:red;">\*</mark>         | String | <sample@example.com>                           |
| signature<mark style="color:red;">\*</mark>     | String | sha512-req-body-signed-with-sk\_partner\_xxxxx |
| partner\_code<mark style="color:red;">\*</mark> | String | the partner code used on partner onboarding    |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

#### Example Request- Code

{% tabs %}
{% tab title="Node" %}

```javascript
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));
```

{% endtab %}
{% endtabs %}

### Digital Signature

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

<mark style="color:green;">`POST`</mark> `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

<mark style="color:red;">**Please make sure we have whitelisted all your IPs**</mark>

<mark style="color:red;">**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**</mark>&#x20;

#### Headers

| Name                                           | Type   | Description      |
| ---------------------------------------------- | ------ | ---------------- |
| Content-Type<mark style="color:red;">\*</mark> | String | application/json |

#### Example Request Body

Request body may be different depending on what you would like to sign&#x20;

| Name                                                     | Type   | Description                                                            |
| -------------------------------------------------------- | ------ | ---------------------------------------------------------------------- |
| partner\_order\_id<mark style="color:red;">\*</mark>     | String | the order id on partners end                                           |
| amount\_to\_collect<mark style="color:red;">\*</mark>    | String | the amount to be collected                                             |
| timestamp<mark style="color:red;">\*</mark>              | String | the time the order was created                                         |
| currency<mark style="color:red;">\*</mark>               | String | the currency of collection eg GHS, NGN                                 |
| partner\_callback\_url<mark style="color:red;">\*</mark> | String | the url where payment confirmation would be posted                     |
| partner\_redirect\_url                                   | String | partners site where users would be redirected after successful payment |
| secret<mark style="color:red;">\*</mark>                 | String | Signed with  partner secret.                                           |

#### Sample code

{% tabs %}
{% tab title="NodeJs" %}

```javascript
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);
});
```

{% endtab %}
{% endtabs %}


# Partner Onboarding Endpoints

This endpoint is to register a partner

{% hint style="warning" %}
This endpoint returns a one time link containing your ID and Credentials .&#x20;
{% endhint %}

<mark style="color:green;">`POST`</mark> `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.&#x20;

#### Headers

| Name                                           | Type   | Description      |
| ---------------------------------------------- | ------ | ---------------- |
| Content-Type<mark style="color:red;">\*</mark> | String | application/json |

#### Request Body

| Name                                            | Type   | Description                   |
| ----------------------------------------------- | ------ | ----------------------------- |
| partner\_code<mark style="color:red;">\*</mark> | String | a code signifying the partner |
| email<mark style="color:red;">\*</mark>         | String | email of the partner          |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

### Example request- Code.

{% tabs %}
{% tab title="Nodejs" %}

```javascript
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));
```

{% endtab %}

{% tab title="cURL" %}

```
curl "https://exchanger-api.fuspay.finance/api/v1/no-auth/PartnerP2P/OnboardPartner" \
  -H 'Content-Type: application/json' \
  -X POST \
  -b 'connect.sid'='s%3AoNBPv4ez8npeuKVKlS9KwX_1Dshiamlf.n8opjPuoF3XsU%2Be0VTLMUe6xzeAXmpCfQrpW9KW1KDs' \
  -d '{
  "partner_code": "Binance",
  "email": "sample@example.com"
}' 
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
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.
{% endhint %}


# Partner Activate Endpoint

This is used to activate partner ID to start using axis

<mark style="color:green;">`POST`</mark> `https://exchanger-api.fuspay.finance/api/v1/no-auth/Axis/Activate/`

#### Headers

| Name                                           | Type   | Description     |
| ---------------------------------------------- | ------ | --------------- |
| x-partner-id<mark style="color:red;">\*</mark> | String | your partner ID |

#### Request Body

| Name | Type   | Description                                       |
| ---- | ------ | ------------------------------------------------- |
|      | String | Body of request is empty requires only the header |

{% tabs %}
{% tab title="200: OK Successful " %}
{ success: true, message: string, data: null }
{% endtab %}
{% endtabs %}


# Regenerate Partners Public & Private Keys

This endpoint is used by partners to regenerate their keys

<mark style="color:green;">`POST`</mark> `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<mark style="color:red;">\*</mark>  | String | application/json         |
| Authorization<mark style="color:red;">\*</mark> | String | Bearer pk\_partner\_xxxx |

#### Request Body

| Name                                            | Type   | Description                                    |
| ----------------------------------------------- | ------ | ---------------------------------------------- |
| email<mark style="color:red;">\*</mark>         | String | <sample@example.com>                           |
| signature<mark style="color:red;">\*</mark>     | String | sha512-req-body-signed-with-sk\_partner\_xxxxx |
| partner\_code<mark style="color:red;">\*</mark> | String | the partner code used on partner onboarding    |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

#### Example Request- Code

{% tabs %}
{% tab title="Node" %}

```javascript
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));
```

{% endtab %}
{% endtabs %}


# Digital Signature

This endpoint is used to sign the request body and to verify callbacks received from us

<mark style="color:green;">`POST`</mark> `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

<mark style="color:red;">**Please make sure we have whitelisted all your IPs**</mark>

<mark style="color:red;">**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**</mark>&#x20;

#### Headers

| Name                                           | Type   | Description      |
| ---------------------------------------------- | ------ | ---------------- |
| Content-Type<mark style="color:red;">\*</mark> | String | application/json |

#### Example Request Body

Request body may be different depending on what you would like to sign&#x20;

| Name                                                     | Type   | Description                                                            |
| -------------------------------------------------------- | ------ | ---------------------------------------------------------------------- |
| partner\_order\_id<mark style="color:red;">\*</mark>     | String | the order id on partners end                                           |
| amount\_to\_collect<mark style="color:red;">\*</mark>    | String | the amount to be collected                                             |
| timestamp<mark style="color:red;">\*</mark>              | String | the time the order was created                                         |
| currency<mark style="color:red;">\*</mark>               | String | the currency of collection eg GHS, NGN                                 |
| partner\_callback\_url<mark style="color:red;">\*</mark> | String | the url where payment confirmation would be posted                     |
| partner\_redirect\_url                                   | String | partners site where users would be redirected after successful payment |
| secret<mark style="color:red;">\*</mark>                 | String | Signed with  public key+ Secret Key.                                   |

#### Sample code

{% tabs %}
{% tab title="NodeJs" %}

```javascript
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);
});
```

{% endtab %}
{% endtabs %}


# Buy (Fiat On-Ramp)

These endpoints are used to get exchange rates and initiate buy orders on the Axis API

The minimum Stable Coin buy is $10 (USDT, USDC, E-USDT).

### Exchange Rate

This endpoint is used to get both buy and sell rates between the fiat and crypto pair e.g. NGN-> USDT or USDT->NGN.&#x20;

## This endpoint is used to get the exchange rate

<mark style="color:green;">`POST`</mark> `https://exchanger-api.fuspay.finance/api/v1/no-auth/Axis/ExchangeRate/`

#### Headers

| Name                                            | Type   | Description                           |
| ----------------------------------------------- | ------ | ------------------------------------- |
| Authorization<mark style="color:red;">\*</mark> | String | ***Bearer  ${partner\_secret\_key}*** |
| Content-Type<mark style="color:red;">\*</mark>  | String | application/json                      |
| x-partner-id<mark style="color:red;">\*</mark>  | String | Your partner ID eg. p602xxx           |

#### Request Body

| Name                                   | Type   | Description                                    |
| -------------------------------------- | ------ | ---------------------------------------------- |
| fiat<mark style="color:red;">\*</mark> | String | this is the fiat of the currency pair eg "NGN" |

Request Body

```json
// Sample body request

{
    "fiat":"NGN",
    "chain": "usdt-trc"
}


```

Response

{% tabs %}
{% tab title="200: OK successful response" %}

```json
{
     success: true,
     message: string,
     data: {
        "NGN/USDT": 1700,
        "USDT/NGN": 1670
     }
}
```

{% endtab %}
{% endtabs %}

"FIAT(NGN)/STABLE\_COIN(USDT)": "This notation means you are buying the stable coin at the rate shown"

"STABLE\_COIN(USDT)/FIAT(NGN)": "This notation means you are selling the fiat at the rate shown"

### Create Buy Order Endpoint&#x20;

## This is used to initiate a new buy order. The life cycle of the order is encapsulated in three (3) events as seen below

<mark style="color:green;">`POST`</mark> `https://exchanger-api.fuspay.finance/api/v1/no-auth/Axis/BuyUsdtWithFiat/`

All events will be communicated to the callback registered in the post request.

Event request body will be updated as buy order progresses through the following phases:&#x20;

a. event.buy.init  (buy order started, awaiting fiat payment)

b. event.buy.received.fiat (fiat payment received)

c. event.buy.credited.crypto (transaction completed)

d. event.buy.error (error occurred)

<mark style="color:red;">Event body is signed with sha 512. sha512(body, public\_key+secret\_key)</mark>

### The diagram below shows the complete flow of a buy order&#x20;

<figure><img src="https://1683729599-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFU24OF8juMGRM9K7EdyI%2Fuploads%2F0GmrdqbUIVVvboVscc4N%2FBuy%20Axis.jpg?alt=media&amp;token=5ac0696b-b7dd-4f62-8fbb-c62fce999f76" alt=""><figcaption></figcaption></figure>

{% file src="/files/RvKKZkFeu3vw6pdskPNz" %}

The event body is right below. to show the data structure that should be expected.&#x20;

{% hint style="danger" %}
Axis does not handle third party on-ramp orders.  i.e . The name of the user the payer bank account has to pass 66% name match with the user's KYC name on Axis.\
\
All transactions that faill this test will be pending.  See the ["Pending Transactions"](https://app.gitbook.com/o/UlsbQabTdQpnUffvzs7w/s/FU24OF8juMGRM9K7EdyI/~/changes/37/order-history-and-status/pending-transactions) side bar for more information
{% endhint %}

####


# Exchange Rate

This endpoint is used to get the exchange rate

This endpoint is used to get both buy and sell rates between the fiat and crypto pair e.g. NGN-> USDT or USDT->NGN.&#x20;

<mark style="color:green;">`POST`</mark> `https://exchanger-api.fuspay.finance/api/v1/no-auth/Axis/ExchangeRate/`

#### Headers

| Name                                            | Type   | Description                           |
| ----------------------------------------------- | ------ | ------------------------------------- |
| Authorization<mark style="color:red;">\*</mark> | String | ***Bearer  ${partner\_secret\_key}*** |
| Content-Type<mark style="color:red;">\*</mark>  | String | application/json                      |
| x-partner-id<mark style="color:red;">\*</mark>  | String | Your partner ID eg. p602xxx           |

#### Request Body

| Name                                   | Type   | Description                                                                                                                            |
| -------------------------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------- |
| fiat<mark style="color:red;">\*</mark> | String | this is the fiat of the currency pair eg "NGN"                                                                                         |
| chain                                  | String | <p>eg "eusd-mob", "usdt-trc". The chain determines the stable coin <br><br> If the chain value is empty rate sent will be for USDT</p> |

Request Body

```json
// Sample body request

{
    "fiat":"NGN",
    "chain": "usdt-trc"
}


```

Response

{% tabs %}
{% tab title="200: OK successful response" %}

```json
{
     success: true,
     message: string,
     data: {
        "NGN/USDT": 1700,
        "USDT/NGN": 1670
     }
}
```

{% endtab %}
{% endtabs %}

"FIAT(NGN)/STABLE\_COIN(USDT)": "This notation means you are buying the stable coin at the rate shown"

"STABLE\_COIN(USDT)/FIAT(NGN)": "This notation means you are selling the fiat at the rate shown"


# Create Buy Order Endpoint

This is used to initiate a new buy order. The life cycle of the order is encapsulated in three (3) events as seen below

<mark style="color:green;">`POST`</mark> `https://exchanger-api.fuspay.finance/api/v1/no-auth/Axis/BuyUsdtWithFiat/`

All events will be communicated to the callback registered in the post request.

Event body will be updated as buy order progresses through the following phases:&#x20;

a. event.buy.init  (buy order started, awaiting fiat payment)

b. event.buy.received.fiat (fiat payment received)

c. event.buy.credited.crypto (transaction completed)

d. event.buy.error (error occurred)

<mark style="color:red;">Event body is signed with sha 512. sha512(body, public\_key+secret\_key)</mark>

### The diagram below shows the complete flow of a buy order&#x20;

<figure><img src="https://1683729599-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFU24OF8juMGRM9K7EdyI%2Fuploads%2F0GmrdqbUIVVvboVscc4N%2FBuy%20Axis.jpg?alt=media&amp;token=5ac0696b-b7dd-4f62-8fbb-c62fce999f76" alt=""><figcaption></figcaption></figure>

{% file src="/files/RvKKZkFeu3vw6pdskPNz" %}

{% hint style="danger" %}
Axis does not handle third party on-ramp orders.  i.e . The name of the user, the payer bank account, has to pass 66% name match with the user's KYC name on Axis.\
\
All transactions that fail this test will be pending.  See the ["Pending Transactions"](https://app.gitbook.com/o/UlsbQabTdQpnUffvzs7w/s/FU24OF8juMGRM9K7EdyI/~/changes/37/order-history-and-status/pending-transactions) side bar for more information

{% endhint %}

#### Headers

| Name                                            | Type   | Description                      |
| ----------------------------------------------- | ------ | -------------------------------- |
| Authorization<mark style="color:red;">\*</mark> | String | "Bearer ${partner\_secret\_key}" |
| x-partner-id<mark style="color:red;">\*</mark>  | String | "pxxxxxx"                        |

#### Request Body

<table><thead><tr><th width="220">Name</th><th width="163">Type</th><th>Description</th></tr></thead><tbody><tr><td>partner_order_id<mark style="color:red;">*</mark></td><td>String </td><td>id of your order</td></tr><tr><td>fiat_amount<mark style="color:red;">*</mark></td><td>String</td><td>the FIAT amount to be paid by the buyer </td></tr><tr><td>chain<mark style="color:red;">*</mark></td><td>String</td><td>e.g. "usdt-trc20", "usdc-matic", "eusd-mob", "usdt-pol".</td></tr><tr><td>buyer_crypto_address<mark style="color:red;">*</mark></td><td>STring</td><td>The buyer's crypto address </td></tr><tr><td>partner_callback_url<mark style="color:red;">*</mark></td><td>STring</td><td>your partner callback URL </td></tr><tr><td>fiat_currency<mark style="color:red;">*</mark></td><td>String</td><td>the fiat currency of the crypto-fiat pair eg. NGN, KHS, GHS</td></tr><tr><td>buyer_phone<mark style="color:red;">*</mark></td><td>String</td><td>The is the phone number of the buyer. This is collected for KYC purpose </td></tr><tr><td>buyer_email<mark style="color:red;">*</mark></td><td>String</td><td>This is an email representing the buyer. Also for KYC</td></tr><tr><td>first_name<mark style="color:red;">*</mark></td><td>String</td><td>The buyer's first name </td></tr><tr><td>last_name<mark style="color:red;">*</mark></td><td>String </td><td>Seller's last name</td></tr><tr><td>intrapay_merchant_id<mark style="color:red;">*</mark></td><td>String </td><td>Intrapay Merchant ID is a unique identification number gotten by signing up and setting up your wallet on Intrapay.</td></tr><tr><td>markup_fee<mark style="color:red;">*</mark></td><td>String</td><td>This is the percentage charge that would be applied in the transaction with the merchant. It is paid into your intrapay wallet.</td></tr><tr><td>refund_bank<mark style="color:red;">*</mark></td><td>String</td><td>this is bank code where the fiat will be refunded incase of an incomplete transaction</td></tr><tr><td>refund_account<mark style="color:red;">*</mark></td><td>String</td><td>this is account number where the fiat will be refunded incase of an incomplete transaction</td></tr><tr><td>refund_fullname<mark style="color:red;">*</mark></td><td>String</td><td>this is account name of the user where the refund will be sent to</td></tr></tbody></table>

Sample Request Body&#x20;

<pre class="language-json"><code class="lang-json">{
  "partner_order_id": "LIVE-TXN-TEST-007123",
  "fiat_currency": "KHS",
  "buyer_crypto_address": "0x8de6e4fc94464a74ee153ef159b5b636678aa57f",
  "chain": "usdt-trc20",
  "fiat_amount": "3000",
  "partner_callback_url": "https://webhook.site/f63c3262-55f3-462a-8ce1-49ea28c47038",
  "buyer_phone": "11111111",
  "buyer_email": "xxx@gmail.com",
  "first_name": "",
  "last_name": "",
  "intrapay_merchant_id":"",
  "markup_fee":"",
  "refund_bank": "", 
<strong>  "refund_account": "",
</strong>  "refund_fullname": ""
}
</code></pre>

{% tabs %}
{% tab title="200: OK successful response" %}

{% code overflow="wrap" %}

```
Response {
"message":"OK"
}

The actual response (Event Body) is sent to your callback URL. we send to your callback URL to make responses fast.

```

{% endcode %}
{% endtab %}

{% tab title="400: Bad Request failed responses" %}

{% endtab %}
{% endtabs %}

BUY EVENTS

{% tabs %}
{% tab title="event.buy.init (1)" %}

```json
{
    "event_name": "event.buy.init",
    "partner_order_id": "BETA-TEST-FUSPAY-0001",
    "fuspay_order_ref": "BETA-TEST-FUSPAY-0001_p176517",
    "fiat_amount_to_pay": 100,
    "crypto_amount_to_receive": 10,
    "exchange_rate": 10,
    "pair": "NGN/USDT",
    "fiat_currency": "NGN",
    "buyer_crypto_address": "TBqNaN3CvyuTmnMe55oRCzadZ1iAxYHrKr",
    "chain": "usdt-trc20",
    "fiat_payment_status": "PENDING",
    "crypto_payment_status": "PENDING",
    "payer_into_account": {
        "account_name": "Paypoint NA",
        "account_number": "9628586981",
        "bank_name": "Providus Bank"
    },
    "payment_link": null,
    "crypto_txn_hash": null,
    "partner_callback_url": "https://webhook.site/7659f3d1-e7a1-4671-88c8-949e6850dbb7",
    "transactional_kyc": {
        "email": "",
        "phone": "",
        "first_name": "",
        "last_name": ""
    },
    "signature": "6155296856767b99b28f3d11bdc3da770c0b1bb42059af6c774a42e459965359f1c5290b627acf09ce686d16cc42ed4"
}
```

{% endtab %}

{% tab title="event.buy.received.fiat (2)" %}

```json
{
    "event_name": "event.buy.received.fiat",
    "partner_order_id": "BETA-TEST-FUSPAY-0001",
    "fuspay_order_ref": "BETA-TEST-FUSPAY-0001_p176517",
    "fiat_amount_to_pay": 100,
    "crypto_amount_to_receive": 10,
    "exchange_rate": 10,
    "pair": "NGN/USDT",
    "fiat_currency": "NGN",
    "buyer_crypto_address": "TBqNaN3CvyuTmnMe55oRCzadZ1iAxYHrKr",
    "chain": "usdt-trc20",
    "fiat_payment_status": "PAID",
    "crypto_payment_status": "STARTED",
    "payer_into_account": {
        "account_name": "Paypoint NA",
        "account_number": "9628586981",
        "bank_name": "Providus Bank"
    },
    "payment_link": null,
    "crypto_txn_hash": null,
    "partner_callback_url": "https://webhook.site/7659f3d1-e7a1-4671-88c8-949e6850dbb7",
    "transactional_kyc": {
        "email": "",
        "phone": "",
        "first_name": "",
        "last_name": ""
    },
    "signature": "615529685924e0ab350cb28f3d11bdc3da770c0b1bb42059af6c774a42e459965359f1c5290b627acf09ce686d16cc42ed4"
}
```

{% endtab %}

{% tab title="event.buy.received.fiat\_kyc\_error (3)" %}

```json
//The kyc_error_type message could either be "NO_KYC", for when user has not done KYC or "THIRD_PARTY_ERROR", for when the buyer's fiat payment account name is different from the transctional kyc name.
{
    "event_name": "event.buy.received.fiat_kyc_error",
    "partner_order_id": "SENTZ-BUY-ORDER-TEST-MY-IP-16",
    "fuspay_order_ref": "SENTZ-BUY-ORDER-TEST-MY-IP-10_p533522",
    "fiat_amount_to_pay": 15000,
    "crypto_amount_to_receive": 10.07,
    "exchange_rate": 1490,
    "pair": "NGN/USDT",
    "fiat_currency": "NGN",
    "buyer_crypto_address": "TYYui3F5E7BjATJGBjgpk5fAn90CtfvNan",
    "chain": "usdt-trc20",
    "fiat_payment_status": "PAID",
    "crypto_payment_status": "STARTED",
    "payer_into_account": {
        "account_name": "Paypoint NA",
        "account_number": "9628586981",
        "bank_name": "Providus Bank"
    },
    "payment_link": null,
    "crypto_txn_hash": null,
    "partner_callback_url": "https://ec0b-2600-1700-f90-55f0-494-231d-7b2c-17da.ngrok-free.app",
    "transactional_kyc": {
        "email": "",
        "phone": "",
        "first_name": "",
        "last_name": ""
    },
    "signature": "5a596214cc2f1c3ecad6d8alf0fab65ed5d30112b722ed1ld3c9c3ee6",
    "created_at": "2024-06025T14:55:02.080Z",
    "sender_name": "AYANTOLA, TESLIM",
    "default_kyc_url": "https://kyc.fuspay.finance",
    "message": "Buyer needs to perform KYC",
    "kyc_error_type": "NO_KYC"
}

{
    "event_name": "event.buy.received.fiat_kyc_error",
    "partner_order_id": "SENTZ-BUY-ORDER-TEST-MY-IP-16",
    "fuspay_order_ref": "SENTZ-BUY-ORDER-TEST-MY-IP-16_p533522",
    "fiat_amount_to_pay":15500,
    "crypto_amount_to_receive":10.21,
    "exchange_rate":1518,
    "pair":"NGN/USDT",
    "fiat_currency":"NGN",
    "buyer_crypto_address": "TYYur3F5E7BjATJGBjgpk5fAm9DCtfvNmn",
    "chain":"usdt-trc20",
    "fiat_payment_status":"PAID",
    "crypto_payment_status":"STARTED",
    "payer_into_account":{                     
        "account_name":"Paypoint NA",  
        "account_number":"9610880057",
        "bank_name":"Providus Bank"
    }, 
    "payment_link":null,
    "crypto_txn_hash":null,
    "partner_callback_url":"https://ec0b-2600-1700-f90-55f0-494-231d-7b2c-17da.ngrok-free.app",
    "transactional_kyc":{
    "email":"",
    "phone":"",                           
    "first_name":"",                 
    "last_name":""
    },
    "signature": "617dc884f8061ee67b834b61487552d6b2bc1d9812d9b8efbb650ccd5965623f65ce24f21c",
    "created_at":"2024-06-28T15:15:13.000Z",
    "sender_name":"QProject Technologies Limited  Avis Charles Ayodeji",
    "default_kyc_url":null,
    "message":"Third Party Payment",
    "kyc_error_type":"THIRD_PARTY_PAYMENT"
}
```

{% endtab %}

{% tab title="event.buy.credited.crypto (4)" %}

```json
{
    "event_name": "event.buy.credited.crypto",
    "partner_order_id": "BETA-TEST-FUSPAY-0001",
    "fuspay_order_ref": "BETA-TEST-FUSPAY-0001_p176517",
    "fiat_amount_to_pay": 100,
    "crypto_amount_to_receive": 10,
    "exchange_rate": 10,
    "pair": "NGN/USDT",
    "fiat_currency": "NGN",
    "buyer_crypto_address": "TBqNaN3CvyuTmnMe55oRCzadZ1iAxYHrKr",
    "chain": "usdt-trc20",
    "fiat_payment_status": "PAID",
    "crypto_payment_status": "PAID",
    "payer_into_account": {
        "account_name": "Paypoint NA",
        "account_number": "9628586981",
        "bank_name": "Providus Bank"
    },
    "payment_link": null,
    "crypto_txn_hash": "f028a30dcc063a2c54e51c5babb3aa439afcd7393e7a5213145c1a9e5585a7",
    "partner_callback_url": "https://webhook.site/7659f3d1-e7a1-4671-88c8-949e6850dbb7",
    "transactional_kyc": {
        "email": "",
        "phone": "",
        "first_name": "",
        "last_name": ""
    },
    "signature": "29ab5f53ab696cf2cd5c0ebe429a8a6c145a705aa54dee3dd8bff48800b94b123c7beae6092d4f6de"
}
```

{% endtab %}

{% tab title="buy.event.close" %}

```json5
{
  event_name: 'buy.event.close',
  partner_order_id: string,
  fuspay_order_ref: string,
  fiat_amount_to_pay: number,
  crypto_amount_to_receive: number,
  exchange_rate: string,
  pair: 'NGN/EUSD',
  fiat_currency: 'NGN',
  buyer_crypto_address:string,
  chain: 'eusd-mob',
  fiat_payment_status: string,
  crypto_payment_status: string,
  payer_into_account: {
    account_name: string,
    account_number: string,
    bank_name: string
  },
  payment_link: null,
  crypto_txn_hash: null,
  partner_callback_url: string,
  transactional_kyc: { email: string, phone: string, first_name: string, last_name: string },
  signature: string,
  meta_data: {
    status: 'refunded',
    message: 'buyer has been refunded',
    refund_account: string,
    amount_refunded: string,
    fee: number
  }
}

```

{% endtab %}
{% endtabs %}

### Event Body Description

<table><thead><tr><th width="214">Keys</th><th width="264">Description</th><th>Values</th></tr></thead><tbody><tr><td>event_name</td><td>This is the name of the buy event</td><td>event buy init, event buy received fiat, event buy credited crypto.</td></tr><tr><td>partner_order_id</td><td>Id of order generated on partner's system</td><td></td></tr><tr><td>fuspay_order_ref</td><td>Reference number of order generated on Fuspay system</td><td></td></tr><tr><td>fiat_amount_to_pay</td><td>The equivalent fiat amount user would pay based on exchange rate</td><td></td></tr><tr><td>crypto_amount_to_receive</td><td>This is the amount of cryptocurrency to be received</td><td></td></tr><tr><td>exchange_rate</td><td>This is the exchange rate</td><td></td></tr><tr><td>pair</td><td></td><td></td></tr><tr><td>fiat_currency</td><td>This is the amount of fiat currency to be bought</td><td></td></tr><tr><td>buyer_crypto_address</td><td>The buyer's crypto address </td><td></td></tr><tr><td>chain</td><td>e.g. usdt-trc20, usdc-matic</td><td></td></tr><tr><td>fiat_payment_status</td><td>This is the fiat payment status. </td><td>Pending (payment has not been fully processed yet) or Paid (payment is fully processed and successful)</td></tr><tr><td>crypto_payment_status</td><td>This is the crypto payment status. </td><td>Started (payment is in process), Completed (payment is fully processed and completed)</td></tr><tr><td></td><td></td><td></td></tr><tr><td>account_name</td><td>This is the name of the account holder</td><td></td></tr><tr><td>account_number</td><td>This is the bank account number or phone number if MOMO</td><td></td></tr><tr><td>bank_name</td><td>The name of the bank</td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><td>email</td><td>Email of the buyer</td><td></td></tr><tr><td>phone</td><td>Phone number of the buyer</td><td></td></tr><tr><td>first_name</td><td>First name of the buyer</td><td></td></tr><tr><td>last_name</td><td>Last name of the buyer</td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><td>payment_link</td><td>This is the payment link given to the buyer </td><td>available for MOMO payments</td></tr><tr><td>crypto_txn_hash</td><td>This is the crypto transaction has given to the buyer</td><td>the hash of your crypto payment </td></tr><tr><td>partner_callback_url</td><td>The partner Id returned from the onboarding endpoint</td><td></td></tr><tr><td>signature</td><td>This is the buyer's signature</td><td> sha512 signed with public key + secret key    </td></tr><tr><td></td><td></td><td></td></tr></tbody></table>


# Sell (Crypto Off-Ramp)

These endpoints are used to initiate buy and sell orders on the Axis API

The minimum Stable Coin is $10 (USDT, USDC, E-USDT).

### Exchange Rate

This endpoint is used to get both buy and sell rate between the fiat and crypto pair e.g. NGN-> USDT or USDT->NGN.&#x20;

## This endpoint is used to get the exchange rate

<mark style="color:green;">`POST`</mark> `https://exchanger-api.fuspay.finance/api/v1/no-auth/Axis/ExchangeRate/`

#### Headers

| Name                                            | Type   | Description                           |
| ----------------------------------------------- | ------ | ------------------------------------- |
| Authorization<mark style="color:red;">\*</mark> | String | ***Bearer  ${partner\_secret\_key}*** |
| Content-Type<mark style="color:red;">\*</mark>  | String | application/json                      |
| x-partner-id<mark style="color:red;">\*</mark>  | String | Your partner ID eg. p602xxx           |

#### Request Body

| Name                                   | Type   | Description                                    |
| -------------------------------------- | ------ | ---------------------------------------------- |
| fiat<mark style="color:red;">\*</mark> | String | this is the fiat of the currency pair eg "NGN" |

Request Body

```json
// Sample body request

{
    "fiat":"NGN",
    "chain": "usdt-trc"
}


```

Response

{% tabs %}
{% tab title="200: OK successful response" %}

```json
{
     success: true,
     message: string,
     data: {
        "NGN/USDT": 1700,
        "USDT/NGN": 1670
     }
}
```

{% endtab %}
{% endtabs %}

"FIAT(NGN)/STABLE\_COIN(USDT)": "This notation means you are buying the stable coin at the rate shown"

"STABLE\_COIN(USDT)/FIAT(NGN)": "This notation means you are selling the fiat at the rate shown"

### Create Sell Order Endpoint

## This is used to initiate a new sell order.&#x20;

<mark style="color:green;">`POST`</mark> `https://exchanger-api.fuspay.finance/api/v1/no-auth/Axis/InitiateSellOrder/`

All events will be communicated to the callback registered in the post request.

Event request body will be updated as the sell order progresses through the following phases:&#x20;

a. event.sell.init // buy order started, awaiting crypto payment

b. event.sell.received.crypto // crypto payment received by axis

c.event.sell.credited.fiat // transaction completed.user account credited&#x20;

d. event.sell.error // error occured

<mark style="color:red;">Event body is signed with sha 512. sha512(body, public\_key+secret\_key)</mark>

### The diagram below shows the complete flow of a sell order&#x20;

<figure><img src="https://1683729599-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFU24OF8juMGRM9K7EdyI%2Fuploads%2FgDBSp7U3CVTyLTjzmLPn%2FSell%20Axis.jpg?alt=media&amp;token=fc72e6a6-31a2-42ae-84e3-5a135e0cf660" alt=""><figcaption></figcaption></figure>

{% file src="/files/TU7xbEUUR4LgwvOyTsEB" %}


# Exchange Rate

This endpoint is used to get both buy and sell rate between the fiat and crypto pair e.g. NGN-> USDT or USDT->NGN.

&#x20;This endpoint is used to get the exchange rate

<mark style="color:green;">`POST`</mark> `https://exchanger-api.fuspay.finance/api/v1/no-auth/Axis/ExchangeRate/`

#### Headers

| Name                                            | Type   | Description                           |
| ----------------------------------------------- | ------ | ------------------------------------- |
| Authorization<mark style="color:red;">\*</mark> | String | ***Bearer  ${partner\_secret\_key}*** |
| Content-Type<mark style="color:red;">\*</mark>  | String | application/json                      |
| x-partner-id<mark style="color:red;">\*</mark>  | String | Your partner ID eg. p602xxx           |

#### Request Body

| Name                                   | Type   | Description                                                                                      |
| -------------------------------------- | ------ | ------------------------------------------------------------------------------------------------ |
| fiat<mark style="color:red;">\*</mark> | String | this is the fiat of the currency pair eg "NGN"                                                   |
| chain                                  | String | <p>eg "eusd-mob", "usdt-trc".<br><br> If the chain value is empty rate sent will be for USDT</p> |

Request Body

```json
// Sample body request

{
    "fiat":"NGN",
    "chain": "usdt-trc"
}


```

Response

{% tabs %}
{% tab title="200: OK successful response" %}

```json
{
     success: true,
     message: string,
     data: {
        "NGN/USDT": 1700,
        "USDT/NGN": 1670
     }
}
```

{% endtab %}
{% endtabs %}

"FIAT(NGN)/STABLE\_COIN(USDT)": "This notation means you are buying the stable coin at the rate shown"

"STABLE\_COIN(USDT)/FIAT(NGN)": "This notation means you are selling the fiat at the rate shown"


# Create Sell Order Endpoint

This is used to initiate and finalize a new sell order.

<mark style="color:green;">`POST`</mark> `https://exchanger-api.fuspay.finance/api/v1/no-auth/Axis/InitiateSellOrder/`

All events will be communicated to the callback registered in the post request.

Event request body will be updated as the sell order progresses through the following phases:&#x20;

a. event.sell.init // buy order started, awaiting crypto payment

b. event.sell.received.crypto // crypto payment received by axis

c.event.sell.credited.fiat // transaction completed.user account credited&#x20;

d. event.sell.error // error occured

<mark style="color:red;">Event body is signed with sha 512. sha512(body, public\_key+secret\_key)</mark>

### The diagram below shows the complete flow of a sell order&#x20;

<figure><img src="https://1683729599-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFU24OF8juMGRM9K7EdyI%2Fuploads%2FgDBSp7U3CVTyLTjzmLPn%2FSell%20Axis.jpg?alt=media&amp;token=fc72e6a6-31a2-42ae-84e3-5a135e0cf660" alt=""><figcaption></figcaption></figure>

{% file src="/files/TU7xbEUUR4LgwvOyTsEB" %}

Sample of the Event body would be posted below after the endpoints description&#x20;

#### Headers

| Name                                            | Type   | Description                      |
| ----------------------------------------------- | ------ | -------------------------------- |
| Authorization<mark style="color:red;">\*</mark> | String | "Bearer ${partner\_secret\_key}" |
| x-partner-id<mark style="color:red;">\*</mark>  | String | "pxxxxxx"                        |

#### Request Body

| Name                                                          | Type   | Description                                                                                                                     |
| ------------------------------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------- |
| partner\_order\_id<mark style="color:red;">\*</mark>          | String | Id of order generated on partners's system                                                                                      |
| chain<mark style="color:red;">\*</mark>                       | String | e.g usdt-trc20, usdc-matic                                                                                                      |
| crypto\_amount<mark style="color:red;">\*</mark>              | String | the amount of USDT to be exchanged                                                                                              |
| fiat\_currency\_to\_receive<mark style="color:red;">\*</mark> | String | equivalent fiat user would receive based on exchange rate                                                                       |
| partner\_callback\_url<mark style="color:red;">\*</mark>      | String | The partner Id returned from the onboarding endpoint                                                                            |
| seller\_phone<mark style="color:red;">\*</mark>               | String | phone number of the seller                                                                                                      |
| seller\_email<mark style="color:red;">\*</mark>               | String | Email of the seller                                                                                                             |
| first\_name<mark style="color:red;">\*</mark>                 | String | First name of the seller                                                                                                        |
| last\_name<mark style="color:red;">\*</mark>                  | String | last name of the seller                                                                                                         |
| account\_name<mark style="color:red;">\*</mark>               | String | The name of the account holder.                                                                                                 |
| account\_number<mark style="color:red;">\*</mark>             | String | This is the bank account number or phone number if MOMO                                                                         |
| account\_code<mark style="color:red;">\*</mark>               | String | This is the bank code or MOMO provider (Mpesa, MTN) . A code that represents the bank where the fiat would be transferred to    |
| intrapay\_merchant\_id<mark style="color:red;">\*</mark>      | String | Intrapay Merchant ID is a unique identification number gotten by signing up and setting up your wallet on Intrapay.             |
| markup\_fee<mark style="color:red;">\*</mark>                 | String | This is the percentage charge that would be applied in the transaction with the merchant. It is paid into your intrapay wallet. |
| refund\_wallet\_address<mark style="color:red;">\*</mark>     | String | this is the eusd wallet address of the seller                                                                                   |

{% tabs %}
{% tab title="200: OK successful response" %}

{% code overflow="wrap" %}

```json
Response {
    "message":"OK"
}

The actual response (Event Body) is sent to your callback URL. we send to your callback URL to make responses fast.
```

{% endcode %}
{% endtab %}

{% tab title="400: Bad Request failed responses" %}

```
{
     error: true,
     message: string,
     data: null
     }
```

{% endtab %}
{% endtabs %}

SELL EVENTS

{% tabs %}
{% tab title="event.sell.init (1)" %}

```json
{
  "event_name": "event.sell.init",
  "partner_order_id": "BETA-AXIS-SELL-NGN-0004001",
  "fuspay_order_ref": "BETA-AXIS-SELL-NGN-0004001_p176517",
  "fiat_amount_to_receive": 1000,
  "crypto_amount_to_sell": 100,
  "exchange_rate": 10,
  "pair": "USDT/NGN",
  "fiat_currency": "NGN",
  "pay_to_crypto_address": "TXLYE1yx8LyXfTY1utnXEm7DtzWsgvYBWB",
  "chain": "usdt-trc20",
  "fiat_payment_status": "PENDING",
  "crypto_payment_status": "PENDING",
  "seller_fiat_account": {
    "account_name": "",
    "account_number": "",
    "account_code": ""
  },
  "seller_crypto_txn_hash": null,
  "partner_callback_url": "https://webhook.site/7659f3d1-e7a1-4671-88c8-949e6850dbb7",
  "transactional_kyc": {
    "email": "",
    "phone": "",
    "first_name": "",
    "last_name": ""
  },
  "signature": "62f1665caaac7e1084d3100ba41cbc262ea71c5c15dcc329b1e5d13076027e8ad446eccd3f87e7fcd0af1459e8"
}
```

{% endtab %}

{% tab title="event.sell.received.crypto (2)" %}

```json
{
  "event_name": "event.sell.received.crypto",
  "partner_order_id": "BETA-AXIS-SELL-NGN-0004001",
  "fuspay_order_ref": "BETA-AXIS-SELL-NGN-0004001_p176517",
  "fiat_amount_to_receive": 1000,
  "crypto_amount_to_sell": 100,
  "exchange_rate": 10,
  "pair": "USDT/NGN",
  "fiat_currency": "NGN",
  "pay_to_crypto_address": "TXLYE1yx8LyXfTY1utnXEm7DtzWsgvYBWB",
  "chain": "usdt-trc20",
  "fiat_payment_status": "STARTED",
  "crypto_payment_status": "PAID",
  "seller_fiat_account": {
    "account_name": "",
    "account_number": "",
    "account_code": ""
  },
  "seller_crypto_txn_hash": "b9c4e6d87c6a38a43631c2c0a4f047d8038f7bf717723ea3c6346b1084438fa7",
  "partner_callback_url": "https://webhook.site/7659f3d1-e7a1-4671-88c8-949e6850dbb7",
  "transactional_kyc": {
    "email": "",
    "phone": "",
    "first_name": "",
    "last_name": ""
  },
  "signature": "ebc0a4b462b4c656bea4bd74b9cb1673979e991c413f139b7e00d6191c85fd3b3cc"
}
```

{% endtab %}

{% tab title="event.sell.received.fiat\_kyc\_error" %}

```json
{
    "event_name": "event.sell.received.fiat_kyc_error",
    "partner_order_id": "SENTZ-SELL-ORDER-TEST-MY-IP-7",
    "fuspay_order_ref": "SENTZ-SELL-ORDER-TEST-MY-IP-7_p533522",
    "fiat_amount_to_receive": 14700,
    "crypto_amount_to_sell": 10,
    "exchange_rate": 1490,
    "pair": "NGN/USDT",
    "fiat_currency": "NGN",
    "pay_to_crypto_address": "TMy5QkqNiad5VJdidfyg6gnMpuCD7jLEac",
    "chain": "usdt-trc20",
    "fiat_payment_status": "STARTED",
    "crypto_payment_status": "PAID",
    "seller_fiat_account": {
        "account_name": "",
        "account_number": "",
        "account_code": ""
    },
    "seller_crypto_txn_hash": "7c52f888bccdb9c12e88e57a08a8e993fdd578abe8413161be2cf9aaea",,
    "partner_callback_url": "https://ec0b-2600-1700-f90-55f0-494-231d-7b2c-17da.ngrok-free.app",
    "transactional_kyc": {
        "email": "",
        "phone": "",
        "first_name": "",
        "last_name": ""
    },
    "signature": "a52b53238fba0f487b3d0b19769bb4a691fda0f82b8e544c2c05ad66c0afa07e0a9cca8857a7ae7d5235927e88db33912bc",
    "default_kyc_url": "https://kyc.fuspay.finance",
    "message": "Seller needs to perform KYC",
    "kyc_error_type": "NO_KYC"
}
// The kyc_error_type message could either be "NO_KYC", for when user has not done KYC or "THIRD_PARTY_ERROR", for when the sellerfiat payment account name is different from the transctional kyc name. 
```

{% endtab %}

{% tab title="event.sell.credited.fiat (3)" %}

```json
{
  "event_name": "event.sell.received.crypto",
  "partner_order_id": "BETA-AXIS-SELL-NGN-0004001",
  "fuspay_order_ref": "BETA-AXIS-SELL-NGN-0004001_p176517",
  "fiat_amount_to_receive": 1000,
  "crypto_amount_to_sell": 100,
  "exchange_rate": 10,
  "pair": "USDT/NGN",
  "fiat_currency": "NGN",
  "pay_to_crypto_address": "TXLYE1yx8LyXfTY1utnXEm7DtzWsgvYBWB",
  "chain": "usdt-trc20",
  "fiat_payment_status": "STARTED",
  "crypto_payment_status": "PAID",
  "seller_fiat_account": {
    "account_name": "Avis Charles",
    "account_number": "",
    "account_code": "090405"
  },
  "seller_crypto_txn_hash": "b9c4e6d87c6a38a43631c2c0a4f047d8038f7bf717723ea3c6346b1084438fa7",
  "partner_callback_url": "https://webhook.site/7659f3d1-e7a1-4671-88c8-949e6850dbb7",
  "transactional_kyc": {
    "email": "",
    "phone": "",
    "first_name": "",
    "last_name": ""
  },
  "signature": "ebc0a4b462b4c9a4643201e6269994f6a9bf68cac41b52a44d4bd74b9cb1673979e991c522a388a2413f139b7e00d6191c85fd3b3cc"
}
```

{% endtab %}

{% tab title="sell.event.close" %}

```json5
{
  event_name: 'sell.event.close',
  partner_order_id: string,
  fuspay_order_ref: string,
  fiat_amount_to_receive: number,
  crypto_amount_to_sell: number,
  exchange_rate: number,
  pair: string,
  fiat_currency: string,
  pay_to_crypto_address: string,
  chain: string,
  fiat_payment_status: string,
  crypto_payment_status: string,
  seller_fiat_account: { 
    account_name: string, 
    account_number: string, 
    account_code: string 
    },
  seller_crypto_txn_hash: string,
  partner_callback_url: string,
  transactional_kyc: { 
    email: string, 
    phone: string,
    first_name: string, 
    last_name: string 
    },
  signature: string,
  meta_data: {
    status: 'refunded', // refunded 
    message: 'seller has been refunded',
    refund_account: string, // account number to refund
    amount_refunded: string,
    fee: number
  }
}

```

{% endtab %}
{% endtabs %}

### Event Body Description

<table><thead><tr><th width="171">Keys</th><th width="198">Description</th><th>Values</th></tr></thead><tbody><tr><td>event_name</td><td>This is the name of the buy event</td><td>event buy init, event buy received fiat, event buy credited crypto.</td></tr><tr><td>partner_order_id</td><td>Id of order generated on partner's system</td><td></td></tr><tr><td>fuspay_order_ref</td><td>Reference number of order generated on Fuspay system</td><td></td></tr><tr><td>fiat_amount_to_pay</td><td>The equivalent fiat amount user would pay based on exchange rate</td><td></td></tr><tr><td>crypto_amount_to_receive</td><td>This is the amount of cryptocurrency to be received</td><td></td></tr><tr><td>exchange_rate</td><td>This is the exchange rate</td><td></td></tr><tr><td>pair</td><td></td><td></td></tr><tr><td>fiat_currency</td><td>This is the amount of fiat currency to be bought</td><td></td></tr><tr><td>buyer_crypto_address</td><td>The buyer's crypto address </td><td></td></tr><tr><td>chain</td><td>e.g. usdt-trc20, usdc-matic</td><td></td></tr><tr><td>fiat_payment_status</td><td>This is the fiat payment status. </td><td>Pending (payment has not been fully processed yet) or Paid (payment is fully processed and successful)</td></tr><tr><td>crypto_payment_status</td><td>This is the crypto payment status. </td><td>Started (payment is in process), Completed (payment is fully processed and completed)</td></tr><tr><td></td><td></td><td></td></tr><tr><td>account_name</td><td>This is the name of the account holder</td><td></td></tr><tr><td>account_number</td><td>This is the bank account number or phone number if MOMO</td><td></td></tr><tr><td>bank_name</td><td>The name of the bank</td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><td>email</td><td>Email of the buyer</td><td></td></tr><tr><td>phone</td><td>Phone number of the buyer</td><td></td></tr><tr><td>first_name</td><td>First name of the buyer</td><td></td></tr><tr><td>last_name</td><td>Last name of the buyer</td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><td>payment_link</td><td>This is the payment link given to the buyer </td><td>Null (no value), //available for MOMO payments</td></tr><tr><td>crypto_txn_hash</td><td>This is the crypto transaction has given to the buyer</td><td>Null (no value)</td></tr><tr><td>partner_callback_url</td><td>The partner Id returned from the onboarding endpoint</td><td></td></tr><tr><td>signature</td><td>This is the buyer's signature</td><td>Null (no value), // sha512 signed with public key + secret key      }</td></tr><tr><td></td><td></td><td></td></tr></tbody></table>

Sample event for Sell Order

```javascript
Event body {
       event_name: "event.sell.init or ...",
       partner_order_id: "",
       fuspay_order_ref: "",
       fiat_amount_to_receive: "",
       crypto_amount_to_sell: "",
       exchange_rate: "",
       pair: "",
       fiat_currency: "",
       pay_to_crypto_address: "",
       chain: "usdt-trc20",
       fiat_payment_status: "", // PENDING, CANCELED, PAID
       crypto_payment_status: "", // PENDING, CANCELED, PAID

     seller_fiat_account: {
     account_name: "",
     account_number: "",
     account_code: ""
     },
     transactional_kyc: {
            email: "",
            phone: "",
            first_name: "",
            last_name: ""
        },
     seller_crypto_txn_hash: null,
     partner_callback_url: ""
     signature: string // sha512 signed with public key + secret key
     } 
```

### Event Body Description

<table><thead><tr><th width="171">Keys</th><th width="178">Description</th><th>Values</th></tr></thead><tbody><tr><td>event_name</td><td>This is the name of the event</td><td>event sell init, event sell received fiat, event sell credited crypto.</td></tr><tr><td>partner_order_id</td><td>Id of order generated on partner's system</td><td></td></tr><tr><td>fuspay_order_ref</td><td>Reference number of order generated on Fuspay system</td><td></td></tr><tr><td>fiat_amount_to_receive</td><td>The equivalent fiat amount user would receive based on exchange rate</td><td></td></tr><tr><td>crypto_amount_to_sell</td><td>This is the amount of cryptocurrency to be received</td><td></td></tr><tr><td>exchange_rate</td><td>This is the exchange rate</td><td></td></tr><tr><td>pair</td><td></td><td></td></tr><tr><td>fiat_currency</td><td>This is the amount of fiat currency to be sold</td><td></td></tr><tr><td>pay_to_crypto_address</td><td>This is the crypto address to pay too</td><td></td></tr><tr><td>chain</td><td>e.g. usdt-trc20, usdc-matic</td><td></td></tr><tr><td>fiat_payment_status</td><td>This is the fiat payment status. </td><td>Pending (payment has not been fully processed yet), Cancelled (payment transaction has been stopped) or Paid (payment is fully processed and successful)</td></tr><tr><td>crypto_payment_status</td><td>This is the crypto payment status. </td><td>Pending (payment has not been fully processed yet), Cancelled (payment transaction has been stopped) or Paid (payment is fully processed and successful)</td></tr><tr><td></td><td></td><td></td></tr><tr><td>account_name</td><td>This is the name of the account holder</td><td></td></tr><tr><td>account_number</td><td>This is the bank account number or phone number if MOMO</td><td></td></tr><tr><td>account_code</td><td>This is the bank code or MOMO provider (Mpesa, MTN) . A code that represents the bank where the fiat would be transferred to.</td><td></td></tr><tr><td>bank_name</td><td>The name of the bank</td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><td>email</td><td>Email of the seller</td><td></td></tr><tr><td>phone</td><td>Phone number of the seller</td><td></td></tr><tr><td>first_name</td><td>First name of the seller</td><td></td></tr><tr><td>last_name</td><td>Last name of the seller</td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><td>seller_crypto_txn_hash</td><td>This is the transaction hash given to the seller</td><td>Null (no value)</td></tr><tr><td>partner_callback_url</td><td>The partner Id returned from the onboarding endpoint</td><td></td></tr><tr><td>signature</td><td>This is the seller's signature</td><td>string // sha512 signed with public key + secret key</td></tr><tr><td></td><td></td><td></td></tr></tbody></table>


# Events

This page list all the events and their data structurees

The Axis API is event driven, and below is the definition and the event structure for buy or sell transactions&#x20;

### How the sell side works&#x20;

1. Get the exchange rate using the exchange rate endpoint&#x20;
2. Initiate & finalize a sell order using the create sell order endpoint.&#x20;
3. The <mark style="color:orange;">**event.sell.init**</mark> is sent to your callback URL . This shows you the crypto address to send the crypto asset being sold to.
4. The event,  "<mark style="color:orange;">**event.sell.received.crypto**</mark>" is sent back to your callback after the stable coin has been sent to the crypto address.
5. As we have received the recipients fiat account details a payout would be made to the account and another event, "<mark style="color:orange;">**event.sell.credited.fiat**</mark>" would be posted to your callback showing that the payout has being made to your user

### Sample Event for a Sell Order&#x20;

```json
Event body {
       event_name: "event.sell.init or ...",
       partner_order_id: "",
       fuspay_order_ref: "",
       fiat_amount_to_receive: "",
       crypto_amount_to_sell: "",
       exchange_rate: "",
       pair: "",
       fiat_currency: "",
       pay_to_crypto_address: "",
       chain: "usdt-trc20",
       fiat_payment_status: "", // PENDING, CANCELED, PAID
       crypto_payment_status: "", // PENDING, CANCELED, PAID

     seller_fiat_account: {
     account_name: "",
     account_number: "",
     account_code: ""
     },
     seller_crypto_txn_hash: null,
     partner_callback_url: ""
     signature: string // sha512 signed with public key + secret key
     }

```

<table><thead><tr><th width="196">key</th><th>Description</th></tr></thead><tbody><tr><td>event_name</td><td>This is the name of the event. Possible sell events are  </td></tr><tr><td>partner_order_id</td><td>The order ID generated from your system</td></tr><tr><td>fuspay_order_ref</td><td> A reference identifying the transaction on the fuspay system </td></tr><tr><td>fiat_amount_to_receive</td><td>This is the fiat amount to be received by your user </td></tr><tr><td>crypto_amount_to_sell</td><td>This is the crypto amount your user is trying to sell </td></tr><tr><td>exchange_rate</td><td>This is the exchange rate gotten from the exchange rate endpoint </td></tr><tr><td>pair</td><td></td></tr><tr><td>fiat_currency</td><td>This is the currency code for the fiat currency eg NGN</td></tr><tr><td>pay_to_crypto_address</td><td>This is the crypto address your users crypto should be sent to. eg. USDT to make payment to </td></tr><tr><td>chain</td><td>This is the blockchain or network where the crypto address lives e.g usdt-trc20</td></tr><tr><td>fiat_payment_status</td><td>This is the status of the fiat payment made to your user after USDT receipt as been confirmed </td></tr><tr><td>crypto_payment_status</td><td>This is the payment status or your crypto transfer to crypto address sent to you as an event to your callback URL </td></tr><tr><td>seller_fiat_account</td><td>This is an Object representing where the recipient of the FIAT</td></tr><tr><td>      account_name</td><td>This is the name of the fiat recipient </td></tr><tr><td>      account_number</td><td>This is the phone number or bank account number of the recipient </td></tr><tr><td>      account_code</td><td>This is the bank code (058)  or MOMO provider (MPESA, VOD, MTN)</td></tr><tr><td>seller_crypto_txn_hash</td><td>This is the hash of the crypo transfer made by the seller (your user)</td></tr><tr><td>partner_callback_url</td><td>This is a URL where events would be posted</td></tr><tr><td>signature</td><td>This is the signature of the event body. This is a SHA 512 signature signed with both your public and secret key. </td></tr><tr><td></td><td></td></tr></tbody></table>

1.


# Order History  & Status

This endpoint is used to get transactions within a date range and verify transaction status.

You can use this endpoint to make two types of query

* Query a single transaction: To know more about a transaction status, you can use the **"search\_partner\_order\_ref"** to query the transaction. If you are using this key, ignore the start and end date parameters
* Query using date range: If you want to see all the history of activities on your wallet between a date range use the "start\_date" & "end\_date". While using this key, ignore the **search\_partner\_order\_ref**

### Get Single Order Endpoint

## This is used to get the details of a single order

<mark style="color:blue;">`GET`</mark> `https://exchanger-api.fuspay.finance/api/v1/no-auth/Axis/GetOrder/`

#### Query Parameters

| Name                                          | Type   | Description                                 |
| --------------------------------------------- | ------ | ------------------------------------------- |
| order\_type<mark style="color:red;">\*</mark> | String | "buy or sell"                               |
| order\_no<mark style="color:red;">\*</mark>   | String | This is the order number of the transaction |

#### Headers

| Name                                            | Type   | Description                    |
| ----------------------------------------------- | ------ | ------------------------------ |
| Authorization<mark style="color:red;">\*</mark> | String | Bearer ${partner\_secret\_key} |
| x-partner-id<mark style="color:red;">\*</mark>  | String | "pxxxxxx"                      |

{% tabs %}
{% tab title="200: OK Successful Transfer or Failed Transfer" %}
{% code overflow="wrap" lineNumbers="true" fullWidth="true" %}

```javascript
{
     success: true,
     message: string,
     data: {
     .....
     }
     }
```

{% endcode %}
{% endtab %}
{% endtabs %}

### Get Multiple Order Endpoint

## This is used to get the details of multiple orders.

<mark style="color:blue;">`GET`</mark> `https://exchanger-api.fuspay.finance/api/v1/no-auth/Axis/OrderHistory/`

#### Query Parameters

| Name                                          | Type   | Description         |
| --------------------------------------------- | ------ | ------------------- |
| order\_type<mark style="color:red;">\*</mark> | String | "buy or sell"       |
| date\_from<mark style="color:red;">\*</mark>  | String | "2024-03-01 16:000" |
| date\_to<mark style="color:red;">\*</mark>    | String | "2024-03-02 16:000" |

#### Headers

| Name                                            | Type   | Description                      |
| ----------------------------------------------- | ------ | -------------------------------- |
| Authorization<mark style="color:red;">\*</mark> | String | "Bearer ${partner\_secret\_key}" |
| x-partner-id<mark style="color:red;">\*</mark>  | String | "pxxxxxx"                        |

{% tabs %}
{% tab title="200: OK Successful Transfer or Failed Transfer" %}
{% code overflow="wrap" lineNumbers="true" fullWidth="true" %}

```javascript
{
     success: true,
     message: string,
     data: {
     .....
     }
     }
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Pending Transactions&#x20;

### Transaction Pending KYC Endpoint

### This is used to get the orders (buy or sell) that are pending. &#x20;

<mark style="color:blue;">`GET`</mark> `https://exchanger-api.fuspay.finance/api/v1/no-auth/Axis/GetTransactionalPendingKYC`

#### Response Header

{% tabs %}
{% tab title="200: OK successful response" %}

```json
{ success: true,
message: String,
data: [ 
        {
        partner_order_id: "", 
        currency: "", 
        date_created: "", 
        txn_type: "BUY | SELL", 
        memo: "ON-RAMP | OFF-RAMP"
        } 
      ]
}
```

{% endtab %}
{% endtabs %}

### Types of Pending

&#x20;Pending transactions occur when either of the following incidents occur.

<table><thead><tr><th width="116">Types </th><th width="121">Causes</th><th width="131">Resolution </th><th>Timeline </th></tr></thead><tbody><tr><td>Sender's Name Mismatch </td><td>When user's sender's bank name doesn't match the existing KYC name on Axis </td><td>Such transactions will be reversed subject to Compliance</td><td>24-72 hours OR Subject to user's ability to provide evidence of ties with the originating account owner</td></tr><tr><td>Transaction Requiring Basic KYC </td><td>All on-ramp and off-ramp transactions with no KYC of the user will be pending </td><td>Such transactions are auto completed when the user completes KYC </td><td>Transactions auto-completes (10mins- 2 hours) after user KYC is approved.</td></tr><tr><td>Transaction Requiring E-KYC </td><td>Where a user's daily transaction exceeds $23, 000.  E-KYC will be triggered </td><td>Such transactions are auto-completed when the user completes E-KYC</td><td>Automatic after user completes E-KYC. (24-48 hours)</td></tr><tr><td>Banks &#x26; Network Issues </td><td>Local bank infrastructure network issue </td><td>Fuspay will escalate such transactions to Bank partners for processing </td><td>Subject to Bank resolution timeline.</td></tr><tr><td>Mis-matched payments </td><td>This is when the user pays above or below the order amount. </td><td>Fund is Auto reversed to the originating bank account </td><td>Auto reversal (10mins-24hrs) </td></tr></tbody></table>

## Dispute Resolution & Issues Handling

We have a dedicated technical and customer support team to help resolve any transaction-related issues within 24 hours.

[**Telegram Support:**](https://t.me/fuspay)  <https://t.me/+BP2Os0XbyxU5OWZk>

**Email Support:** <help@fuspay.us>


# Transaction Pending KYC Endpoint

This is used to get the orders (buy or sell) that are pending.

<mark style="color:blue;">`GET`</mark> `https://exchanger-api.fuspay.finance/api/v1/no-auth/Axis/GetTransactionalPendingKYC`

#### Request Headers

<table><thead><tr><th>Name</th><th width="118">Type</th><th>Description</th></tr></thead><tbody><tr><td>Authorization<mark style="color:red;">*</mark></td><td>String</td><td>"Bearer ${partner_secret_key}"</td></tr><tr><td>x-partner-id<mark style="color:red;">*</mark></td><td>String</td><td>"pxxxxxx"</td></tr></tbody></table>

Response body

{% tabs %}
{% tab title="200: OK successful response" %}

```json
{ success: true,
message: String,
data: [ 
        {
        partner_order_id: "", 
        currency: "", 
        date_created: "", 
        txn_type: "BUY | SELL", 
        memo: "ON-RAMP | OFF-RAMP"
        } 
      ]
}
```

{% endtab %}
{% endtabs %}


# Get Single Order Endpoint

This is used to get the details of a single order.

<mark style="color:blue;">`GET`</mark> `https://exchanger-api.fuspay.finance/api/v1/no-auth/Axis/GetOrder/`

#### Request Headers

| Name                                            | Type   | Description                    |
| ----------------------------------------------- | ------ | ------------------------------ |
| Authorization<mark style="color:red;">\*</mark> | String | Bearer ${partner\_secret\_key} |
| x-partner-id<mark style="color:red;">\*</mark>  | String | "pxxxxxx"                      |

Request Body

<table><thead><tr><th width="169">Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>order_type<mark style="color:red;">*</mark></td><td>String</td><td>"buy or sell"</td></tr><tr><td>order_no<mark style="color:red;">*</mark></td><td>String</td><td>This is the order number of the transaction </td></tr></tbody></table>

Sample code

```json
{
    "order_type":"buy",
    "order_no":"Ayomide_2"
}
```

Response Body

{% tabs %}
{% tab title="200: OK Successful Transfer or Failed Transfer" %}
{% code overflow="wrap" lineNumbers="true" fullWidth="true" %}

```json
{
     success: true,
     message: string,
     data: {
          ....
            }
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Get Multiple Order Endpoint

This is used to get the details of multiple orders.

<mark style="color:blue;">`GET`</mark> `https://exchanger-api.fuspay.finance/api/v1/no-auth/Axis/OrderHistory/`

#### Request Headers

| Name                                            | Type   | Description                      |
| ----------------------------------------------- | ------ | -------------------------------- |
| Authorization<mark style="color:red;">\*</mark> | String | "Bearer ${partner\_secret\_key}" |
| x-partner-id<mark style="color:red;">\*</mark>  | String | "pxxxxxx"                        |

Request Body

| Name                                          | Type   | Description         |
| --------------------------------------------- | ------ | ------------------- |
| order\_type<mark style="color:red;">\*</mark> | String | "buy or sell"       |
| date\_from<mark style="color:red;">\*</mark>  | String | "2024-03-01 16:000" |
| date\_to<mark style="color:red;">\*</mark>    | String | "2024-03-02 16:000" |

Sample code

```json
{
    "order_type":"buy",
    "date_from":"2024-10-01 16:000",
    "date_to":"2024-10-10 16:000"
}
```

Reponse Body

{% tabs %}
{% tab title="200: OK Successful Transfer or Failed Transfer" %}
{% code overflow="wrap" lineNumbers="true" fullWidth="true" %}

```json
{
     success: true,
     message: string,
     data: {
     ...
          }
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Sell/Payout Verification Endpoint

This is used to verify the payout status of sell transaction. This can be used to know if we have disbursed the fiat to the benefiacry  bank account provided during sell.

<mark style="color:blue;">`GET`</mark> `https://exchanger-api.fuspay.finance/api/v1/no-auth/Axis/FetchTransferStatus?partner_order_id=Ayomide_2`

#### Request Headers

| Name               | Type   | Description                              |
| ------------------ | ------ | ---------------------------------------- |
| partner\_order\_id | String | This is the id of the sell order created |

Response Body&#x20;

{% tabs %}
{% tab title="200: OK" %}
{% code overflow="wrap" lineNumbers="true" fullWidth="true" %}

```javascript
{
	"success": true,
	"message": "Payout Transfer Fetched ...",
	"data": {
		"status": "SUCCESSFUL",
		"message": "Transfer completed. No action needed",
		"full_name": "ALL BRAD",
		"account_number": "63*****884",
		"session_id": ""
	}
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

Response definition&#x20;

| Key             | Description                                                                                          | Possible values |
| --------------- | ---------------------------------------------------------------------------------------------------- | --------------- |
| success         | This shows the status of your API call                                                               |                 |
| message         |                                                                                                      |                 |
| data            | Object containing info about the status of the payout                                                |                 |
| status          | This shows the status of the payout. Possible values are "SUCCESFUL"                                 |                 |
| message         | This message gives instructions as to the next action required for transaction resolution            |                 |
| full\_name      | Beneficiary's full name                                                                              |                 |
| account\_number | Beneficary's account number                                                                          |                 |
| session\_id     | This is an identifier from the financial institution showing that the transaction has been processed |                 |

Possible Transaction Status

Statuses:

* COMPLETED OR SUCCESSFUL - Transfer completed and user have the money
* FAILED - Transfer failed
* PENDING - Transfer is pending on fuspay or upstream gateway
* INITIATED - Transfer initiated by fuspay or upstream gateway
* GATEWAY\_ERROR - Upstream payment gateway is having issues
* UPSTREAM\_GATEWAY\_ERROR - Transfer completed and user have the money
* GATEWAY\_ERROR - Transfer is processing or abandoned as a result of upstream gateway error or network
* GATEWAY\_NOT\_AVAILABLE - Upstream payment gateway is offline

\*\* Any other status may come up because of payment gateway upstream issues, however COMPLETED or SUCCESSFUL indicates the payment is good


# Post KYC Data

This page describes the KYC properties of the Axis system.

### KYC&#x20;

The Axis API is KYC dependent- meaning only orders from users who have done KYC will be fulfilled. If a user with no KYC creates an order, it will be "Pending" until the user performs KYC or their KYC data is posted to the B2CUpdateKYC endpoint.&#x20;

**There are 2 types of KYC for a user**&#x20;

1. Basic KYC&#x20;
2. Extended KYC (E-KYC)

With Each KYC category, there are transactional limits.

<table><thead><tr><th width="124"></th><th width="108">Basic KYC </th><th width="98">E-KYC</th><th>Note</th></tr></thead><tbody><tr><td>User's Limit per Transaction </td><td>$5,000</td><td>$23,000</td><td>All transactions greater than $5,000 per time will be denied. <br><br>All transactions greater than $23000 within 24 hours would trigger E-KYC </td></tr><tr><td>User's Limit per Day </td><td>$10,000</td><td>$100,000</td><td>All transactions greater than $10,000 per time will be denied. <br><br>All transactions per user per day greater than $100,000 would be denied</td></tr><tr><td></td><td></td><td></td><td></td></tr></tbody></table>

### Post KYC Data Endpoint&#x20;

### This is used by merchants to submit their user's KYC data.

Use the endpoint below if you have already done KYC for your users. use this endpoint to post their data to register them on Axis.  Kindly note that, KYC is a one-time event.

<mark style="color:green;">`POST`</mark> `https://exchanger-api.fuspay.finance/`api/v1/no-auth/Axis/B2cUpdateUserKyc

#### Headers

| Name                                            | Type   | Description                      |
| ----------------------------------------------- | ------ | -------------------------------- |
| Authorization<mark style="color:red;">\*</mark> | String | "Bearer ${partner\_secret\_key}" |
| x-partner-id<mark style="color:red;">\*</mark>  | String | "pxxxxxx"                        |

#### Basic KYC Request Body

| Name                                         | Type   | Description                                                                                          |
| -------------------------------------------- | ------ | ---------------------------------------------------------------------------------------------------- |
| kyc\_type<mark style="color:red;">\*</mark>  | String | basic                                                                                                |
| email<mark style="color:red;">\*</mark>      | String | email of the user                                                                                    |
| phone<mark style="color:red;">\*</mark>      | String | phone number of the user                                                                             |
| user\_data<mark style="color:red;">\*</mark> | Object | This is an object containing more data on the user                                                   |
| first\_name                                  | String | The users first name                                                                                 |
| last\_name<mark style="color:red;">\*</mark> | String | The user's last name                                                                                 |
| address\*                                    | String | The user's house address                                                                             |
| phone                                        | String | The user's phone number                                                                              |
| email                                        | String | The user's email                                                                                     |
| bvn                                          | String | The user's BVN (Bank Verification Number). <mark style="color:red;">Only required for Nigeria</mark> |
| country\_of\_residence                       |        | The country of residence for there user                                                              |
| govt\_id\_no                                 | String | The Number on a government approved ID like NIN                                                      |
| govt\_id\_photo                              | String | the url of the users government approved ID card                                                     |
| user\_facial\_images                         | Obejct | An object represeting the users series of facial images                                              |
| image\_1                                     | String | url of the users image                                                                               |
| image\_1                                     | String | URL of the users image                                                                               |

### Sample Request

```json
{
	"kyc_type": "basic",
	"email": "sample@gmail.com",
	"phone": "0900000000",
	"user_data": {
		
		"first_name": "John",
		"last_name": "Doe",
		"address": "John address",
		"phone": "0900000000",
		"email": "sample@gmail.com",
		"bvn": "123",
		"country_of_residence": "Nigeria",
		"govt_id_no": "A123",
		"govt_id_photo": "D-123",
		"user_facial_images": {
			"image_1": "url.png",
			"image_2": "url.png"
		}

		
	}
}
```

{% tabs %}
{% tab title="200: OK successful response" %}

```
{
	"success": true,
	"message": "User Kyc data updated successfully",
	"data": {
		"kyc_token": "N2E1NzZiOTdhMzk0NjY4MTg5MjgyYzk3MjM3NmY1OWNhMWYyMTM5Nzk1YjE3YjYzZDU1YmY1YjUxMTRmMDU4Mw=="
	}
}

```

{% endtab %}

{% tab title="400: Bad Request failed responses" %}

{% endtab %}
{% endtabs %}

#### Extended KYC Request Body

| Name                                                  | Type   | Description                                                            |
| ----------------------------------------------------- | ------ | ---------------------------------------------------------------------- |
| kyc\_type<mark style="color:red;">\*</mark>           | String | extended                                                               |
| email<mark style="color:red;">\*</mark>               | String | email of the user                                                      |
| phone<mark style="color:red;">\*</mark>               | String | phone number of the user                                               |
| extended\_kyc\_data<mark style="color:red;">\*</mark> | Object | This is an object containing more data on the user  for extended KYC   |
| proof\_of\_address<mark style="color:red;">\*</mark>  | String | Utility bills & Lease agreement                                        |
| bank\_statement<mark style="color:red;">\*</mark>     | String | Recent Bank statement generated in the last 6 months                   |
| user\_indemnity\*                                     | String | Duly signed Indemnity form. See below link to download Indemnity form  |
| guarantors\_form                                      | String | Duly Filled & signed guarantor's form. See below link to download form |
| id\_of\_guarantor                                     | String | Gov't issued ID (Passport, Driver's License or national ID)            |

{% hint style="info" %}
To download forms for Extended KYC Visit&#x20;

1. User Indemnity Form
2. Guanrator's Form
   {% endhint %}

### Sample of Request Body

```json
user_data = {
    "first_name": "",
    "last_name": "",
    "address": "",
    "phone": "",
    "email": "",
    "extended_kyc_data": {
        "proof_of_address": "",
        "bank_statement": "",
        "user_indemnity": "",
        "guarantors_form": "",
        "id_of_guarantor": "",
        "guarantors_proof_of_address": ""
    }

}

            
```

{% tabs %}
{% tab title="200: Ok Successful Response" %}

```
Response {

}

```

{% endtab %}

{% tab title="400: Bad Resquest " %}

```
Response {

}

```

{% endtab %}
{% endtabs %}


# Post KYC Data Endpoint

This is used by merchants to submit their user's KYC data.

Use the endpoint below if you have already done KYC for your users. This endpoint to post their data to register them on Axis.  Kindly note that, KYC is a one-time event.

<mark style="color:green;">`POST`</mark> `https://exchanger-api.fuspay.finance/`api/v1/no-auth/Axis/B2cUpdateUserKyc

#### Headers

| Name                                            | Type   | Description                      |
| ----------------------------------------------- | ------ | -------------------------------- |
| Authorization<mark style="color:red;">\*</mark> | String | "Bearer ${partner\_secret\_key}" |
| x-partner-id<mark style="color:red;">\*</mark>  | String | "pxxxxxx"                        |

#### Basic KYC Request Body

| Name                                         | Type   | Description                                                                                          |
| -------------------------------------------- | ------ | ---------------------------------------------------------------------------------------------------- |
| kyc\_type<mark style="color:red;">\*</mark>  | String | basic                                                                                                |
| email<mark style="color:red;">\*</mark>      | String | email of the user                                                                                    |
| phone<mark style="color:red;">\*</mark>      | String | phone number of the user                                                                             |
| user\_data<mark style="color:red;">\*</mark> | Object | This is an object containing more data on the user                                                   |
| first\_name                                  | String | The users first name                                                                                 |
| last\_name<mark style="color:red;">\*</mark> | String | The user's last name                                                                                 |
| address\*                                    | String | The user's house address                                                                             |
| phone                                        | String | The user's phone number                                                                              |
| email                                        | String | The user's email                                                                                     |
| bvn                                          | String | The user's BVN (Bank Verification Number). <mark style="color:red;">Only required for Nigeria</mark> |
| country\_of\_residence                       |        | The country of residence for there user                                                              |
| govt\_id\_no                                 | String | The Number on a government approved ID like NIN                                                      |
| govt\_id\_photo                              | String | the url of the users government approved ID card                                                     |
| user\_facial\_images                         | Obejct | An object represeting the users series of facial images                                              |
| image\_1                                     | String | url of the users image                                                                               |
| image\_1                                     | String | URL of the users image                                                                               |

### Sample Request

```json
{
	"kyc_type": "basic",
	"email": "sample@gmail.com",
	"phone": "0900000000",
	"user_data": {
		
		"first_name": "John",
		"last_name": "Doe",
		"address": "John address",
		"phone": "0900000000",
		"email": "sample@gmail.com",
		"bvn": "123",
		"country_of_residence": "Nigeria",
		"govt_id_no": "A123",
		"govt_id_photo": "D-123",
		"user_facial_images": {
			"image_1": "url.png",
			"image_2": "url.png"
		}

		
	}
}
```

{% tabs %}
{% tab title="200: OK successful response" %}

```
{
	"success": true,
	"message": "User Kyc data updated successfully",
	"data": {
		"kyc_token": "N2E1NzZiOTdhMzk0NjY4MTg5MjgyYzk3MjM3NmY1OWNhMWYyMTM5Nzk1YjE3YjYzZDU1YmY1YjUxMTRmMDU4Mw=="
	}
}

```

{% endtab %}

{% tab title="400: Bad Request failed responses" %}

{% endtab %}
{% endtabs %}

#### Extended KYC Request Body

| Name                                                  | Type   | Description                                                            |
| ----------------------------------------------------- | ------ | ---------------------------------------------------------------------- |
| kyc\_type<mark style="color:red;">\*</mark>           | String | extended                                                               |
| email<mark style="color:red;">\*</mark>               | String | email of the user                                                      |
| phone<mark style="color:red;">\*</mark>               | String | phone number of the user                                               |
| extended\_kyc\_data<mark style="color:red;">\*</mark> | Object | This is an object containing more data on the user  for extended KYC   |
| proof\_of\_address<mark style="color:red;">\*</mark>  | String | Utility bills & Lease agreement                                        |
| bank\_statement<mark style="color:red;">\*</mark>     | String | Recent Bank statement generated in the last 6 months                   |
| user\_indemnity\*                                     | String | Duly signed Indemnity form. See below link to download Indemnity form  |
| guarantors\_form                                      | String | Duly Filled & signed guarantor's form. See below link to download form |
| id\_of\_guarantor                                     | String | Gov't issued ID (Passport, Driver's License or national ID)            |

### Sample of Request Body

```json
user_data = {
    "kyc_type":"extended",
    "phone": "",
    "email": "",
    "extended_kyc_data": {
        "proof_of_address": "",
        "bank_statement": "",
        "user_indemnity": "",
        "guarantors_form": "",
        "id_of_guarantor": "",
        "guarantors_proof_of_address": ""
    }

}

            
```

{% tabs %}
{% tab title="200: Ok Successful Response" %}

```
Response {

}
```

{% endtab %}
{% endtabs %}


# Create KYC

The purpose of the endpoint is for the Axis user to Create KYC.

<mark style="color:green;">`POST`</mark> `https://exchanger-api.fuspay.finance/api/v1/no-auth/Axis/CreateUserKyc`

#### Request Headers

| Name                                            | Type   | Description                      |
| ----------------------------------------------- | ------ | -------------------------------- |
| Authorization<mark style="color:red;">\*</mark> | String | "Bearer ${partner\_secret\_key}" |
| x-partner-id<mark style="color:red;">\*</mark>  | String | "pxxxxxx"                        |

#### Request Body

<table><thead><tr><th width="181">Name</th><th width="135">Type</th><th>Description</th></tr></thead><tbody><tr><td>full_name</td><td>string</td><td>the full name of your user</td></tr><tr><td>email</td><td>String</td><td>your user's email address </td></tr><tr><td>phone</td><td>String</td><td> your user's phone number</td></tr><tr><td>callback</td><td>String</td><td>This is the URL where KYC status of your user would be posted after they have completed their KYC </td></tr><tr><td>reference</td><td>String</td><td>This is an identifier for your user from your end</td></tr><tr><td>type</td><td>String</td><td>This is the type of KYC (it is either Individual or Business)</td></tr></tbody></table>

Sample code

```json
{
    "full_name": "Balogun Emmanuel",
    "email": "toyeric902@gmail.com",
    "phone":"08062551247",
    "callback":"https://webhook.site/e93182e8-6412-351b7ebb682c",
    "reference":"1000000",
    "type":"Individual"
}
```

{% hint style="success" %}
Initiated Data is what was received via API Call while Verified Data is what the user eventually submitted.
{% endhint %}

{% tabs %}
{% tab title="200: OK successful response" %}
{% code overflow="wrap" %}

```json
{
    "success": true,
    "message": "CreateUserKyc",
    "data": {
        "_id": "67069ad9002d0b1ec",
        "email": "toyeric902@gmail.com",
        "full_name": "Balogun Emmanuel",
        "phone": "08012345678",
        "kyc_type": "Individual",
        "kyc_url": "https://kyc.fuspay.finance/verification/individual/67009002d0b1ec",
        "reference": "1000000",
        "callback": "https://webhook.site/e93182e8-6412-351b7ebb682c"
    }
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

| Key      | Type   | Description                                                                | Value |
| -------- | ------ | -------------------------------------------------------------------------- | ----- |
| kyc\_url | string | This is the url that is returned to you for your customer to do their kyc. |       |


# Verify KYC Status

This endpoint is to verify the KYC status of a user.

<mark style="color:green;">`GET`</mark> `https://exchanger-api.fuspay.finance/api/v1/no-auth/Axis/VerifyUserKyc`

#### Headers

| Name                                            | Type   | Description                      |
| ----------------------------------------------- | ------ | -------------------------------- |
| Authorization<mark style="color:red;">\*</mark> | String | "Bearer ${partner\_secret\_key}" |
| x-partner-id<mark style="color:red;">\*</mark>  | String | "pxxxxxx"                        |

#### Query Params

| Name      | Type   | Description                                       |
| --------- | ------ | ------------------------------------------------- |
| reference | string | This is an identifier for your user from your end |

{% hint style="success" %}
Initiated Data is what was received via API Call while Verified Data is what the user eventually submitted.
{% endhint %}

{% tabs %}
{% tab title="200: OK " %}

<pre class="language-json"><code class="lang-json"><strong>//(when the user has not completed KYC)
</strong><strong>{
</strong>"status": "started", //"pending", "complete"
"meta data": { }
} 

OR

//(when the user has completed KYC)
{
    "success": true,
    "message": "VerifyUserKyc",
    "data": {
        "status": "completed",
        "meta_data": {
            "initiated_name": "",
            "initiated_email": "",
            "initiated_phone": "",
            "verified_name": "",
            "verified_email": "",
            "verified_phone": ""
        }
    }
}
</code></pre>

{% endtab %}

{% tab title="Second Tab" %}

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="133">Key</th><th>Type</th><th>Description</th><th>Value</th></tr></thead><tbody><tr><td>status</td><td>String</td><td>This is the current state of a customer's identity verification process</td><td>"started", "pending", "complete"</td></tr><tr><td>meta_data</td><td>Object</td><td>This contains information about the KYC user. (Their initiated information and eventually verified data)</td><td>empty or "Initiated-name":"", "Initiated email":"", "Initiated phone":"", "Verified name":"", "Verified email":"", "Verified phone":""</td></tr></tbody></table>


# Release KYC Pending Transactions

This is the endpoint that is used to release pending KYC transactions due to mismatch in KYC data (initiated/verified data).

<mark style="color:green;">`POST`</mark> `https://exchanger-api.fuspay.finance/api/v1/no-auth/Axis/ReleaseKycPendingOrder`

#### Request Body

| Name               | Type   | Description                                              |
| ------------------ | ------ | -------------------------------------------------------- |
| verified\_email    | String | This is the user's verified email                        |
| verified\_phone    | String | This is the user's verified phone number                 |
| partner\_order\_id | String | This is the order id of the transaction from the partner |

{% hint style="success" %}
True means user's KYC is complete and initiated KYC corresponds with verified KYC&#x20;
{% endhint %}

{% tabs %}
{% tab title="200: OK " %}

{% code overflow="wrap" %}

```json
{
"release_order_status": "COMPLETED", //"PENDING"
"partner_order_id": ""
"KYC_status" : true/false
"Txn_status": "pending/completed" 
"Meta_data" : {"Message": "error mismatched email and phone or KYC awaiting approval"}
} 
```

{% endcode %}
{% endtab %}

{% tab title="Second Tab" %}

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="133">Key</th><th>Type</th><th>Description</th><th>Value</th></tr></thead><tbody><tr><td>release_order_status</td><td>String</td><td>This is the current state of a release order</td><td>completed, pending</td></tr><tr><td>partner_order_id</td><td>String</td><td>This is the order id of the transaction from the partner</td><td></td></tr><tr><td>kyc_status</td><td>Boolean</td><td>This is the current state of a customer's identity verification process. </td><td>true/false</td></tr><tr><td>txn_status</td><td>String</td><td>This refers to the current state of a financial transaction</td><td>pending/completed</td></tr><tr><td>meta_data</td><td>Object</td><td>This contains is information about the KYC process</td><td>Message: error mismatched email and phone or KYC awaiting approval</td></tr></tbody></table>


# Transaction Resolution

It is an asynchronous API that aims to auto fix transaction issues. It has two endpoints listed below


# Log Issue

This endpoint helps to get the issue log of a transaction

<mark style="color:yellow;">`POST`</mark> `https://exchanger-api.fuspay.finance/api/v1/no-auth/Axis/Fix`

### `Request Body`

|                        |        |                                           |
| ---------------------- | ------ | ----------------------------------------- |
| partner\_order\_id     | String | The partner order ID to get it issue log. |
| partner\_callback\_url | String | The callback url to get response.         |

### Request Body Sample

```json
{
	"partner_order_id": "xxx",
	"partner_callback_url": "https://xxxxx"
}
```

### Response Body

{% tabs %}
{% tab title="200:0K" %}

```json
{
  "success"
}
```

{% endtab %}

{% tab title="400: Error" %}

```json
{
  "Error"
}
```

{% endtab %}
{% endtabs %}


# Check Issue Status

This endpoint helps to get the status of a transaction issue

<mark style="color:yellow;">`POST`</mark> `https://exchanger-api.fuspay.finance/api/v1/no-auth/Axis/GetFix`

### `Query Parameter`

|                    |        |                                              |
| ------------------ | ------ | -------------------------------------------- |
| partner\_order\_id | String | The partner order ID to get it issue status. |

### Response Body

{% tabs %}
{% tab title="200:0K" %}

```json5
{
    ...
    data: {
         partner_order_id: string, 
         status: string - INIT | PENDING | COMPLETED
    }

}
```

{% endtab %}

{% tab title="400: Error" %}

```json
{
  "Error"
}
```

{% endtab %}
{% endtabs %}

### Callback Payload

```json5
{
         partner_order_id: string, 
         message: string,
         status: string - INIT | PENDING | COMPLETED
}
```


