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 buy order
  • Event Body Description
  1. Currency Swap
  2. Buy

Create Order

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

PreviousBuyNextEvents

Last updated 6 months ago

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

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)

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

The diagram below shows the complete flow of a buy order

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 your order

fiat_amount*

String

the FIAT amount to be paid by the buyer

chain*

String

e.g. "usdt-trc20", "usdc-matic"

buyer_crypto_address*

STring

The buyer's crypto address

partner_callback_url*

STring

your partner callback URL

fiat_currency*

String

the fiat currency of the crypto-fiat pair eg. NGN, KHS, GHS

buyer_phone*

String

The is the phone number of the buyer. This is collected for KYC purpose

buyer_email*

String

This is an email representing the buyer. Also for KYC

first_name*

String

The buyer's first name

last_name*

String

Seller's last name

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_bank*

String

this is bank code where the fiat will be refunded incase of an incomplete transaction

refund_account*

String

this is account number where the fiat will be refunded incase of an incomplete transaction

refund_fullname*

String

this is account name of the user where the refund will be sent to

Sample Request Body

{
  "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": "[email protected]",
  "first_name": "",
  "last_name": "",
  "intrapay_merchant_id":"",
  "markup_fee":"",
  "refund_bank": "", 
  "refund_account": "",
  "refund_fullname": ""
}

Response {
"message":"OK"
}

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

BUY EVENTS

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

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

available for MOMO payments

crypto_txn_hash

This is the crypto transaction has given to the buyer

the hash of your crypto payment

partner_callback_url

The partner Id returned from the onboarding endpoint

signature

This is the buyer's signature

sha512 signed with public key + secret key

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 side bar for more information

"Pending Transactions"
2MB
Axis Swap API Flow-BUY.pdf