Request Payment via API

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

Sends a payment request to your customer and creates a pending transaction. The customer completes it on the checkout channel you choose.

Request:

FieldTypeRequiredDescription
amountNumberYesThe amount to collect. Must be greater than zero
msisdnStringOne of msisdn or emailCustomer phone number with country code, for example 2348012345678
emailStringOne of msisdn or emailCustomer email
channelEnum (String)NoHow the customer is asked to pay: whatsapp, ussd, telegram or web. Defaults to web. See checkout channels
currencyStringNoISO 4217 code, for example NGN. Defaults to your business currency
expiryStringNoISO 8601 date-time when the request expires, at least 2 minutes in the future, for example 2026-11-01T12:00:00Z
productEnum (String)NoWhat the customer is paying for: transactions, events, foods, retail, services, reservations or vendings. Defaults to transactions
walletIdIntegerNoWallet to credit. Its currency must match currency
refidStringNoYour own reference for this payment
messageStringNoMessage shown to the customer
deviceEnum (String)NoCustomer's device: android, ios or web
charge_customerBooleanNoAdd Vendy's fee to the amount the customer pays
channel_fee_charge_customerBooleanNoAdd the channel fee to the amount the customer pays. Only applies when charge_customer is also sent
metaJSON ObjectNoAny extra data to store with the transaction. It's returned in webhooks
businessIdIntegerNoIgnored when you use API keys. See Authentication

Example request

curl --location 'https://api.myvendy.com/transactions/initiate' \
--header 'Content-Type: application/json' \
--header "AccessKey: $VENDY_ACCESS_KEY" \
--header "SecretKey: $VENDY_SECRET_KEY" \
--data '{
    "amount": 100,
    "msisdn": "2348012345678",
    "channel": "whatsapp",
    "meta": {
        "email": "[email protected]",
        "narration": "Order 1042",
        "custom_field": "custom field"
    }
}'

Response:

FieldTypeDescription
statusBooleanStates if request was successfully executed or not
codeIntegerInternal code, success if 200
msgStringA description of the status of the request
dataTransactionNewly initiated transaction details

Example response

{
    "status": true,
    "code": 200,
    "msg": "Transaction Sent",
    "error": "Transaction Sent",
    "data": {
        "vended": "-1",
        "reversed": "-1",
        "debited": "-1",
        "isreversing": "-1",
        "processing": "-1",
        "flag": "-1",
        "id": 605513775,
        "uid": 1,
        "businessId": "1",
        "msisdn": "2348012345678",
        "requestamount": 100,
        "amount": 100,
        "method": "whatsapp",
        "currency": "NGN",
        "refid": "4930517800770623045",
        "failed": -1,
        "delivered": -1,
        "meta": {
            "email": "[email protected]",
            "custom_field": "custom field",
            "narration": "Order 1042",
            "fee": 0,
            "commission": 0,
            "charge_customer": false,
            "total": 100
        },
        "walletId": 1689,
        "commissionWallet": 1690,
        "staffId": null,
        "updated_on": "2026-10-20T15:37:50.523Z",
        "created_on": "2026-10-20T15:37:50.523Z"
    }
}

Possible errors

Error codeDescription
204Input is invalid. data lists each field, for example msisdn or email must be specified
217Wallet not supported. You have no wallet in this currency
306Transaction failed. Please try again later
326Business not found
338Amount above or below your transaction limit
360Wallet blocked no inflow activity allowed
361Service is currently unavailable
438The customer is no longer allowed to transact
Body Params
double
required
Defaults to 10

Amount to be paid in currency

string
enum
Defaults to web

How the customer is asked to pay. Defaults to web.

Allowed:
json
Defaults to {"email":"[email protected]", "your-reference":"reference"}

Object containing any extra information you want recorded with the transaction. Fields within the custom_field object will show up on merchant receipt.

string
Defaults to NGN

ISO 4217 three-letter code. Defaults to the currency for the business

string

ISO 8601 date-time when the request expires, at least 2 minutes in the future, for example 2026-11-01T12:00:00Z.

string
Defaults to 2348112345678

Customer phone number with country code. Send msisdn or email; at least one is required.

string
Defaults to Payment for order
string
string
boolean
boolean
string

Customer email. Send msisdn or email; at least one is required.

string
enum
Defaults to transactions

What the customer is paying for. Defaults to transactions.

Allowed:
integer

Wallet to credit. Its currency must match currency.

string
enum

Customer's device, if known.

Allowed:
Responses

Language
Credentials
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json