Clients who received their api-credentials can use this endpoint to login. They will then receive an access-token that will allow them to access all the endpoints within the API.
phoneNumber required | string The phoneNumber used by the partner during registration |
countryCode required | string The residence country of the partner i.e KEN/GH |
password required | string The password used by the partner during signup |
{- "phoneNumber": "string",
- "countryCode": "string",
- "password": "string"
}
{- "status": 201,
- "accessToken": "string"
}
This endpoint is used to create an order and generate a checkout link or a qr code that will be used to pay for the order created.
amount required | integer Default: 10 |
goodsName required | string |
goodsDetail required | string |
currency required | string Currencies currently accepted are BUSD and USDT |
returnUrl required | string The URL to redirect to when the payment is successful |
cancelUrl required | string The URL to redirect to when payment is failed |
{- "amount": 10,
- "goodsName": "string",
- "goodsDetail": "string",
- "currency": "string",
- "returnUrl": "string",
- "cancelUrl": "string"
}
{- "result": { }
}
This endpoint is used to close an order generated before it has been paid. Please not that an order will be automatically closed after 1 hour if the order is not paid.
prepayId required | string |
{- "prepayId": "string"
}
{- "result": { }
}
This endpoint is used to query an order generated to view its current status. Although this is can be used to do a payout, the payout is initiated immediately after a payput is successfull.
prepayId required | string |
{- "prepayId": "string"
}
{- "result": { }
}
This endpoint is used by partners who have API credentials and desire to purchase Celo stablecoins. The phone numbers are used to verify the existence of the user with their wallet address and is also used to purchase Celo tokens.
phoneNumber required | string |
celoAmount required | string |
{- "phoneNumber": "string",
- "celoAmount": "string"
}
{- "status": 201,
- "details": { }
}
This end point sends converted stablecoins that are onchain into fiat via mobile money. (Mpesa)
phoneNumber required | string Phone number of the recipient |
txhash required | string The transactionHash of the USD tokens sent to Kotani Escrow wallet |
{- "phoneNumber": "string",
- "txhash": "string"
}
{- "status": 200,
- "desc": "string",
- "cusdDetails": {
- "blockNumber": 0,
- "value": "string",
- "from": "string",
- "to": "string",
- "date": "string",
- "MpesaDetails": { }
}
}
This end point places a request to authorize sending of a certain amount to their mobile
money wallet through a specified phone number .
The funds are retrieved from the mobile money wallet and sent to Kotani Pay’s
main wallet which the user can use for different reasons such as converting to
stablecoin and sending it to another via the onchain network.
N/B: Kindly note that all callback urls are required to start with a protocol, i.e 'https'/'http'
amount required | integer Default: 10 |
phoneNumber required | string Default: "254*********" |
callback | string |
externalId | string |
{- "amount": 10,
- "phoneNumber": "254*********",
- "callback": "string",
- "externalId": "string"
}
{- "result": { }
}
This end point places a request to authorize sending of a certain amount that was approved in
a previous quote to their mobile
money wallet through a specified phone number .
The funds are retrieved from the mobile money wallet and sent to Kotani Pay’s
main wallet which the user can use for different reasons such as converting to
stablecoin and sending it to another via the onchain network.
N/B: Kindly note that all callback urls are required to start with a protocol, i.e 'https'/'http'
acceptedQuoteId required | string Default: "hiwurhr" |
phoneNumber required | string Default: "254*********" |
callback | string |
externalId | string |
{- "acceptedQuoteId": "hiwurhr",
- "phoneNumber": "254*********",
- "callback": "string",
- "externalId": "string"
}
{- "result": { }
}
This endpoint is used by users and partners to inquire the status of a transaction; whether it failed or was successful. The requestId is retrieved from the response of a transaction that already occurred.
requestId required | any |
{- "result": { }
}
This endpoint is used when a partner or a user wants to inquire on a single transaction. The externalId containing the response is retrieved from a transaction that already happened.
externalId required | any |
transactionalType required | string Transaction type could be either Collections or Payouts |
{- "result": { }
}
This endpoint is used by a partner to withdraw fiat via mobile money. A partner transacting onchain may disburse the funds to their customers by hitting the withdrawal endpoint which will allow the converted funds to be sent directly to the recipients.
amount required | integer Default: 20 |
phoneNumber required | string Default: 254722222222 |
callback | string |
externalId | string |
{- "amount": 20,
- "phoneNumber": 254722222222,
- "callback": "string",
- "externalId": "string"
}
{- "id": 0,
- "phoneNumber": "string",
- "message": "string",
- "amount": "string",
- "externalId": "string"
}
Get all transactions made by a partner including those done during depositing fiat through mobile money, or those done by withdrawing fiat through mobile money.
{- "transactionType": "string",
- "limit": "string",
- "orderBy": "string"
}
This endpoint is used by a partner who desires to pay a business or a merchant for goods sold via paybill. This endpoint is currently only used in Kenya Kindly note that all transactions done through paybill number are subjected to incur a transactional fee that varies per the amount transacted.
merchantNumber required | string |
accountNumber required | string |
amount required | string |
callback | string |
{- "merchantNumber": "string",
- "accountNumber": "string",
- "amount": "string",
- "callback": "string"
}
{- "result": { }
}
This endpoint is used by a partner who desires to pay a business or a merchant for goods sold via till number. This endpoint is currently only used in Kenya Transactions done through a till number are free of charge.
merchantTill required | string |
amount required | string |
callback | string |
{- "merchantTill": "string",
- "amount": "string",
- "callback": "string"
}
{- "result": { }
}
This endpoint is used by a partner to withdraw fiat to a bank account A partner transacting onchain may disburse the funds to their customers by hitting the withdrawal endpoint which will allow the converted funds to be sent directly to the recipients' bank accounts.
Name | Code |
---|---|
Kenya Commercial Bank | 01 |
Standard Chartered | 02 |
Absa Bank Kenya | 03 |
Ncba Bank Kenya | 07 |
Prime Bank | 10 |
Cooperative Bank | 11 |
National Bank of Kenya 12 | 12 |
Citibank N.A Kenya | 16 |
Middle East Bank Kenya | 18 |
Bank of Africa Kenya | 19 |
Credit Bank Limited | 25 |
CFC Stanbic Kenya | 31 |
Paramount Bank | 50 |
Jamii Bora Bank | 51 |
Guaranty Trust Bank | 53 |
Guardian Bank | 55 |
I&M Bank | 57 |
Diamond Trust Bank | 63 |
Sidian Bank | 66 |
Equity Bank Kenya | 68 |
Family Bank Limited | 70 |
Gulf African Bank | 72 |
First Community Bank | 74 |
Kenya Women's Finance Trust | 78 |
amount required | integer Default: 20 |
accountNumber required | string Default: 123456789 |
accountName required | string Default: "Jane Doe" The user's bank account name |
serviceProviderId required | string The serviceProviderId is the BankCode of the accepted banks. See the table above |
callback | string |
externalId | string |
{- "amount": 20,
- "accountNumber": 123456789,
- "accountName": "Jane Doe",
- "serviceProviderId": "string",
- "callback": "string",
- "externalId": "string"
}
{- "id": 0,
- "accountNumber": "string",
- "accountName": "string",
- "serviceProviderId": "string",
- "message": "string",
- "amount": "string",
- "externalId": "string"
}
Log in with a SIWE message and get a session cookie
message required | string The plaintext SIWE message |
signature required | string An EIP-191 (for EOA) or EIP-1271 (for contract-owned accounts) signature for the SIWE message |
{- "message": "string",
- "signature": "string"
}
{- "error": "InvalidSignature"
}
Regeister Fiat Connect client Webhooks and get API key Credentials
webhook required | string Default: "string" |
{- "webhook": "string"
}
{- "apiKey": "string",
- "webhook": "string",
- "webhookSecret": "string"
}
The endpoint is used to create quotes for transfers from fiat to crypto
cryptoType required | string |
fiatAmount required | string |
fiatType required | string |
country required | string |
{- "cryptoType": "string",
- "fiatAmount": "string",
- "fiatType": "string",
- "country": "string"
}
{- "quote": { },
- "kyc": { },
- "fiatAccount": { }
}
The endpoint is used to create quotes for transfers from crypto to fiat
cryptoType required | string |
cryptoAmount required | string |
fiatType required | string |
country required | string |
{- "cryptoType": "string",
- "cryptoAmount": "string",
- "fiatType": "string",
- "country": "string"
}
{- "quote": { },
- "kyc": { },
- "fiatAccount": { }
}
The endpoint is used to create KYC info for a particular user
firstName required | string |
lastName required | string |
phoneNumber required | string |
localCurrency required | string |
celoPublicAddress required | string |
address required | object |
dateOfBirth required | object |
{- "firstName": "string",
- "lastName": "string",
- "phoneNumber": "string",
- "localCurrency": "string",
- "celoPublicAddress": "string",
- "address": { },
- "dateOfBirth": { }
}
{- "kycStatus": "KycApproved",
- "kycData": { }
}
The endpoint is used to create fiat accounts used for transfers
fiatAccountSchema required | string |
data required | object |
{- "fiatAccountSchema": "string",
- "data": { }
}
{- "fiatAccountId": "string",
- "accountName": "string",
- "institutionName": "string",
- "fiatAccountType": "string",
- "fiatAccountSchema": "string"
}
The endpoint is used to initiate a new transfer from fiat to crypto
Idempotency-Key required | any An idempotency key generated by the client |
fiatAccountId required | string |
quoteId required | string |
{- "fiatAccountId": "string",
- "quoteId": "string"
}
{- "transferId": "string",
- "transferStatus": "TransferStarted",
- "transferAddress": "string"
}
The endpoint is used to initiate a new transfer from crypto to fiat
Idempotency-Key required | any An idempotency key generated by the client |
fiatAccountId required | string |
quoteId required | string |
{- "fiatAccountId": "string",
- "quoteId": "string"
}
{- "transferId": "string",
- "transferStatus": "TransferStarted",
- "transferAddress": "string"
}
transferId required | any The id of the tranfer being requested |
{- "status": "TransferStarted",
- "transferType": "string",
- "fiatType": "string",
- "cryptoType": "string",
- "amountProvided": "string",
- "amountReceived": "string",
- "fee": "string",
- "fiatAccountId": "string",
- "transferId": "string",
- "transferAddress": "string"
}
This endpoint creates an account for a user who will be able to use a chain for their own transactions.
phoneNumber required | string |
{- "phoneNumber": "string"
}
{- "userId": "string"
}
This endpoint is used to check whether a user exists in the system, and if their details have been verified.
phoneNumber required | string |
{- "phoneNumber": "string"
}
{- "status": "string"
}
The endpoint is used to gather more details about a user. The details are used to verify the identity of the user which will help to prevent fraud in the form of fake profiles or stolen identities.
phoneNumber required | string Phone number used when user was being created |
lastname required | string User's last name |
firstname required | string User's first name |
email required | string User's email address |
{- "phoneNumber": "string",
- "lastname": "string",
- "firstname": "string",
- "email": "string"
}
{- "status": "string",
- "desc": "string",
- "details": { }
}
This is an internal API endpoint that is used to retrieve the details of a single user using their phone number.
phoneNumber required | string |
{- "phoneNumber": "string"
}
{- "userRecord": { }
}
This is an internal APIused to find the onchain address of a user using their phone number.
publicAddress required | string |
{- "publicAddress": "string"
}
{- "phoneNumber": "string"
}
Get user account balance on the onchain. This endpoint only requires the phone number of the user which is linked to their address. The retrieved address will then be used to check their balance in the network.
phoneNumber required | string PhoneNumber used to transact on chain |
chain required | string The onchain network a user uses. Can either be tron, arbitrum, celo, avalanche, or stellar |
{- "phoneNumber": "string",
- "chain": "string"
}
{- "status": 201,
- "address": "string",
- "balance": {
- "currency": "CUSD",
- "amount": 0
}
}
This endpoint is used by a client who desires to convert their Stellar USDC to fiat currency and send it to a recipient via mobile money. The endpoint currently only supports the sending of funds to Kenya and Ghanaian recipients.
countryCode required | string Country codes supported include KE (Kenya) and GH (Ghana) |
phoneNumber required | string Default: 254712345678 |
txHash required | string |
callback | string |
name | string |
string | |
description | string |
{- "phoneNumber": 254712345678,
- "txHash": "string",
- "callback": "string",
- "name": "string",
- "email": "string",
- "description": "string"
}
{ }
Get user a quote on how much a recipient will get if you deposit a certain amount of fiat.
fiatAmount required | string The amount a user desires to deposit |
currency required | string The currency of the fiat to be deposited |
cryptoType required | string The type of crypto the fiat will be converted to |
{- "fiatAmount": "string",
- "currency": "string",
- "cryptoType": "string"
}
{ }
Get user a quote on how much a recipient will get if you desire to send a certain amount of crypto.
cryptoAmount required | string The amount of crypto a user desires to send |
currency required | string The currency of the fiat to be received by the recipient |
cryptoType required | string The type of crypto the user intends to send |
{- "cryptoAmount": "string",
- "currency": "string",
- "cryptoType": "string"
}
{ }
This endpoint is used by a client who desires to convert their TRON USDT to fiat currency and send it to a recipient via mobile money. The endpoint currently only supports the sending of funds to Kenya and Ghanaian recipients.
countryCode required | string Country codes supported include KE (Kenya) and GH (Ghana) |
phoneNumber required | string |
txHash required | string |
callback | string |
name | string |
string |
{- "phoneNumber": "string",
- "txHash": "string",
- "callback": "string",
- "name": "string",
- "email": "string"
}
{ }
This endpoint is used by a client who desires to convert their mobile money(FIAT) to TRON USDT. The endpoint currently only supports phone numbers in Kenya(+254).
countryCode required | string Country codes supported include KE (Kenya) and GH (Ghana) |
This endpoint can only be accessed by UBI beneficiaries through the USSD code and is used to request and affirm that the beneficiary is the rightful owner of the funds sent to their addresses.
phoneNumber required | string |
programId required | string |
{- "phoneNumber": "string",
- "programId": "string"
}
{- "status": 201,
- "desc": "string",
- "txid": "string"
}
This endpoint is used by existing Kotani Pay users to inquire if they are UBI beneficiaries.
phoneNumber required | string |
programId required | string |
{- "phoneNumber": "string",
- "programId": "string"
}
{- "status": 201,
- "desc": "string",
- "result": { }
}
This endpoint is used by UBI partners who want to add beneficiaries to their program.
phoneNumber required | string |
programId required | string |
{- "phoneNumber": "string",
- "programId": "string"
}
{- "desc": "string",
- "result": { }
}