IMTO Payment

Overview

Our IMTO service provides businesses with a comprehensive set of endpoints for managing International Money Transfer Operations . It covers authentication, partner management, wallet operations, FX rates, fees, user management, reporting, and more. Use this service to test, integrate, and automate workflows for IMTO-related business processes.

Key Features

Authentication: Secure access for partners. Partner Management: Onboard, update, and manage business partners. Wallet Operations: Create, fund, and manage partner wallets. FX Rate Management: Retrieve currency exchange rates. User Management: Invite, activate, and manage users. Reporting: Generate transaction and operational reports.

Getting Integration Credentials

To call our IMTO service, you need to get your Client Id and Client Secret from the business portal. You can find the guide here Getting Integration Credentials.

You can create your wallet on the business portal and pick the wallet ID from there under the wallets menu.

Funding your Wallet

You can create and fund your wallet position on the portal as shown below.

IMTO Status

We currently have 3 main statuses:

StatusDescription
PROCESSINGTransactions is currently being processed
SUCCESSFULTransaction is successful, value has been given
FAILEDTransaction has failed. Funds have been reversed if they were originally debited.

IMTO API Documentation

IMTO Channels

The following IMTO channels for payment are available:

  • BANK_TRANSFER: Standard bank transfer

You can view the individual nuances for the different IMTO channels here

Order Creation

This endpoint generates a payment order using the current FX rate and includes an expiration window, allowing the business to review the rate and authorise the payment if they’re comfortable with it.

Endpoint: POST /api/v1/order

Request

{
    "senderCurrencyCode":"USD",
    "destinationCurrencyCode":"NGN",
    "senderAmount":"2"
}

Response

{
    "responseCode": "00",
    "responseMessage": "Successful",
    "data": {
        "createdOn": "2025-12-03 08:32:14",
        "createdBy": "[email protected]",
        "id": 20246,
        "senderAmountBeforeCharge": 2.00,
        "senderAmountAfterCharge": 2.00,
        "orderId": "55b73cce-14e2-4f8e-b3d7-22e830d56695",
        "charge": 0.00,
        "orderValidityPeriodInSeconds": 3600,
        "senderCurrency": "USD",
        "beneficiaryCurrency": "NGN",
        "fxRate": 1488.00,
        "businessId": 40135,
        "status": "NEW",
        "beneficiaryAmount": 2976.00,
        "fxReference": "0d23065a-4d1e-4e66-b48f-6ae6e785762c"
    }
}

Authorise Order

This allows the partner to authorise the order using the order ID generated by the create-order endpoint.

Endpoint: POST /api/v1/order/authorize

Request

{
    "orderId": "55b73cce-14e2-4f8e-b3d7-22e830d56695",
    "senderWalletId": "3570003235",
    "senderWalletPin": "1111",
    "recipientBank": "HAK",
    "recipientAccount": "0037320662",
    "partnerReference": "TESTREFERENCE107",
    "payoutChannel": "BANK_TRANSFER",
    "narration": "TestRef101"
}

Note: payoutChannel should be one of the available IMTO Channels listed above.

Response

{
    "responseCode": "00",
    "responseMessage": "SUCCESS",
    "data": {
        "id": 72822,
        "reference": "b09e0e59-3451-4d18-896f-f7d479629be3",
        "transactionReference": "IMTO20251203083240441000955",
        "clientId": "MX192446",
        "recipientAccount": "0037320662",
        "recipientBank": "HAK",
        "recipientName": "ROTIMI MODUPE AKINRIMISI",
        "sourceAccount": "3570003369",
        "provider": "TS",
        "channel": "BANK_TRANSFER",
        "amount": 2976.00,
        "fee": 13.20,
        "commission": 0.00,
        "currencyCode": "NGN",
        "retryCount": 0,
        "status": "SUCCESSFUL",
        "narration": "TestRef101",
        "reversed": false,
        "walletDebit": true,
        "createdOn": "2025-12-03T08:32:43.77",
        "lastUpdatedOn": "2025-12-03T08:32:53.429307",
        "processingReference": "CR|AFZ|HAK|031225083241|049691"
    }
}

Get Transaction

Retrieves an IMTO transaction using orderId.

Endpoint: GET /api/v1/order/transaction/{orderId}

Response

{
    "responseCode": "00",
    "responseMessage": "Successful",
    "data": [
        {
            "createdOn": "2025-12-03 08:32:53",
            "updatedOn": "2025-12-03 08:32:53",
            "lastUpdatedBy": "[email protected]",
            "id": 15137,
            "transactionReference": "IMTO20251203083240441000955",
            "clientId": "MX192446",
            "channel": "BANK_TRANSFER",
            "amount": 2976.00,
            "fee": 13.20,
            "responseCode": "00",
            "responseDescription": "SUCCESS",
            "status": "SUCCESSFUL",
            "narration": "TestRef101",
            "processingReference": "CR|AFZ|HAK|031225083241|049691",
            "walletDebitReference": "357000323580AJDFR0FFZL7WF",
            "orderId": 20246,
            "action": "DEBIT",
            "commission": 0.00
        }
    ]
}

Get Wallet Balance

Retrieve the balance on a wallet.

curl --location 'https://imto-service.k8.isw.la/imto/api/v1/wallet/balance?partnerWalletId={insert wallet id here}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer xx

The response contains the relevant balance(s) tied to the wallet

{
    "responseCode": "00",
    "responseMessage": "Balance retrieved successfully!",
    "data": {
        "ledgerBalance": 25600,
        "availableBalance": 25600
    }
}