Fuspay
WebsiteSupportDemo Meeting
  • Overview
    • Welcome
  • API ONBOARDING
    • Introduction
    • Partner Onboarding
    • Regenerate Partner Keys
    • IP Check & Whitelisting
  • API Onboarding
  • Authentication
    • Swap, Collection, & P2P Automation
  • Webhook Validation & Request Integrity
  • Currency Swap
    • Introduction
    • Authentication
      • Partner Onboarding Endpoints
      • Partner Activate Endpoint
      • Regenerate Partners Public & Private Keys
      • Digital Signature
    • User KYC
      • Create KYC
      • Verify KYC Status
      • Reconciliation
      • Post KYC Data
    • Exchange Rate
    • Buy
      • Create Order
      • Events
    • Sell
      • Create Order
      • Events
    • Transaction Resolution
      • Overview
      • Log Issue
      • Check Issue Status
    • Transaction Records
      • Pending Transaction
      • Get Single Order Endpoint
      • Get Multiple Order Endpoint
      • Sell/Payout Verification Endpoint
    • Provider/Bank Codes
  • Virtual card
    • Introduction
      • Getting Started
        • Partner Onboarding
        • Partner Activate Endpoint
    • Authentication
    • Partner
      • Create Merchant
      • List of Merchants
    • Merchant
      • Create User
      • Verify User KYC Status
      • List Users
    • User
      • Create Card
      • Fetch Cards
      • Get Card Details
    • Card
      • Fund Card
      • Freeze Card
      • Delete Card
    • Payments
      • Withdraw From Card
      • Withdrawal History
    • Transactions
      • Card Transactions
      • Export Card Transactions
      • Filter Card Transactions
    • Wallet
      • Merchant Wallet Balance
      • Card Wallet Balance
  • Collection and payout
    • Introduction
    • Onboarding
    • Getting Started for Partner
      • Partner Onboarding Endpoints
      • IP Capture & Whitelisting
      • Regenerate Partners Pub/Priv Keys
    • Getting Started for Merchant
    • Collection
      • Digital Signatures
      • Collection (GHS, KHS, ZAR)
      • Collection (Virtual Account-NGN )
      • Fetch Order
      • Assigning Virtual Accounts
        • Get Available Assignable Virtual Account
        • Check if specific account is available for use
        • Create Order- using Available Virtual Account from your Account Pool
        • Cancel Order
      • Get Mobile Money Providers
    • Payout
      • Account verification
      • Payout
      • Payout Status
      • Crypto Withdrawal
        • Wallet Balance
        • Withdrawal Payout
        • Get Withdrawal Payout Fee
      • Bank and Bank Codes
    • Transaction History
      • Get Transaction Records
  • P2p Automation
    • Integration Journey (API-Dashboard)
  • Payment and Utilities
    • Introduction
      • Sign Up
      • Compliance
      • Create an App
      • Configure App
    • Authentication
    • User Onboarding
    • Error Handling
    • Plugin (Frontend)
      • Integrating Finswich checkout via NPM or Yarn
      • Integrating the Finswich Checkout on your Vanilla Javascript app
      • Steps for integrating Finswich Checkout via Flutter
      • Pseudocode for Integrating Finswich Checkout in Application (Native iOS & Android)
    • Services (Backend)
      • Inter-wallet Transfer
      • Bank Transfer
      • Wallet Funding
      • Utility Purchases
  • KYC As A Service
    • Introduction
    • App Registration Endpoint
    • App Activate/Verify Endpoint
    • Request Verification Token
    • KYC (Individual)
      • Get KYC Types
      • Create KYC Request
      • Get Verification Status and User's Data
      • Create order with meta data
      • Migrate
    • KYC (Business)
      • Get KYC Types
      • Create KYC Request
      • Get Verification Status and User's Data
    • Face Stamp
      • Create Facestamp Order
      • Create OTP
      • Verify OTP
      • Post Transaction Data
    • KYC(Transactional)
    • Callbacks (Webhook Responses)
Powered by GitBook
On this page
  • The diagram below shows the complete flow of a sell order
  • Event Body Description
  • Event Body Description
  1. Currency Swap
  2. Sell

Create Order

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

PreviousSellNextEvents

Last updated 2 months ago

POST 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:

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

d. event.sell.error // error occured

Event body is signed with sha 512. sha512(body, public_key+secret_key)

The diagram below shows the complete flow of a sell order

Sample of the Event body would be posted below after the endpoints description

Headers

Name
Type
Description

Authorization*

String

"Bearer ${partner_secret_key}"

x-partner-id*

String

"pxxxxxx"

Request Body

Name
Type
Description

partner_order_id*

String

Id of order generated on partners's system

chain*

String

e.g usdt-trc20, usdc-matic

crypto_amount*

String

the amount of USDT to be exchanged

fiat_currency_to_receive*

String

equivalent fiat user would receive based on exchange rate

partner_callback_url*

String

The partner Id returned from the onboarding endpoint

seller_phone*

String

phone number of the seller

seller_email*

String

Email of the seller

first_name*

String

First name of the seller

last_name*

String

last name of the seller

account_name*

String

The name of the account holder.

account_number*

String

This is the bank account number or phone number if MOMO

account_code*

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*

String

Intrapay Merchant ID is a unique identification number gotten by signing up and setting up your wallet on Intrapay.

markup_fee*

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*

String

this is the wallet address of the seller

Response {
    "message":"OK"
}

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

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

SELL EVENTS

{
  "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"
}
{
  "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"
}
{
    "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. 
{
  "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"
}
{
  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
  }
}

Event Body Description

Keys
Description
Values

event_name

This is the name of the buy event

event buy init, event buy received fiat, event buy credited crypto.

partner_order_id

Id of order generated on partner's system

fuspay_order_ref

Reference number of order generated on Fuspay system

fiat_amount_to_pay

The equivalent fiat amount user would pay based on exchange rate

crypto_amount_to_receive

This is the amount of cryptocurrency to be received

exchange_rate

This is the exchange rate

pair

fiat_currency

This is the amount of fiat currency to be bought

buyer_crypto_address

The buyer's crypto address

chain

e.g. usdt-trc20, usdc-matic

fiat_payment_status

This is the fiat payment status.

Pending (payment has not been fully processed yet) or Paid (payment is fully processed and successful)

crypto_payment_status

This is the crypto payment status.

Started (payment is in process), Completed (payment is fully processed and completed)

account_name

This is the name of the account holder

account_number

This is the bank account number or phone number if MOMO

bank_name

The name of the bank

email

Email of the buyer

phone

Phone number of the buyer

first_name

First name of the buyer

last_name

Last name of the buyer

payment_link

This is the payment link given to the buyer

Null (no value), //available for MOMO payments

crypto_txn_hash

This is the crypto transaction has given to the buyer

Null (no value)

partner_callback_url

The partner Id returned from the onboarding endpoint

signature

This is the buyer's signature

Null (no value), // sha512 signed with public key + secret key }

Sample event for Sell Order

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

Keys
Description
Values

event_name

This is the name of the event

event sell init, event sell received fiat, event sell credited crypto.

partner_order_id

Id of order generated on partner's system

fuspay_order_ref

Reference number of order generated on Fuspay system

fiat_amount_to_receive

The equivalent fiat amount user would receive based on exchange rate

crypto_amount_to_sell

This is the amount of cryptocurrency to be received

exchange_rate

This is the exchange rate

pair

fiat_currency

This is the amount of fiat currency to be sold

pay_to_crypto_address

This is the crypto address to pay too

chain

e.g. usdt-trc20, usdc-matic

fiat_payment_status

This is the fiat payment status.

Pending (payment has not been fully processed yet), Cancelled (payment transaction has been stopped) or Paid (payment is fully processed and successful)

crypto_payment_status

This is the crypto payment status.

Pending (payment has not been fully processed yet), Cancelled (payment transaction has been stopped) or Paid (payment is fully processed and successful)

account_name

This is the name of the account holder

account_number

This is the bank account number or phone number if MOMO

account_code

This is the bank code or MOMO provider (Mpesa, MTN) . A code that represents the bank where the fiat would be transferred to.

bank_name

The name of the bank

email

Email of the seller

phone

Phone number of the seller

first_name

First name of the seller

last_name

Last name of the seller

seller_crypto_txn_hash

This is the transaction hash given to the seller

Null (no value)

partner_callback_url

The partner Id returned from the onboarding endpoint

signature

This is the seller's signature

string // sha512 signed with public key + secret key

2MB
Axis Swap API Flow-SELL.pdf