{
"investmentAmount": 100000,
"currency": "NGN",
"redirectUrl": "https://google.com",
"paymentMethod": "card",
"customer": {
"name": "Jude Dike",
"email": "dikejude49@gmail.com"
},
"meta": {
"orderId": "…"
}
}
{
"investmentAmount": 100000,
"currency": "NGN",
"paymentMethod": "bank_transfer",
"customer": {
"name": "Jude Dike",
"email": "dikejude49@gmail.com"
},
"meta": {
"orderId": "…"
}
}
{
"status": "success",
"message": "Payment initiated successfully. Complete payment to buy tokens.",
"data": {
"paymentLink": "https://checkout-v2.dev-flutterwave.com/v3/hosted/pay/926e0cc3e67ebbd9fb57",
"reference": "GETXN_FI_WFMSVRKW2X6CUJ",
"investmentAmount": 100000,
"currency": "NGN",
"token": {
"_id": "683ef69f70457700022e091b",
"symbol": "FDNE",
"name": "FCMB Debt Note",
"price": 10000
},
"tokensToCredit": 10,
"creditAmount": 100500,
"fees": {
"getequity": 500,
"getequityPercent": 0.5,
"flutterwave": 1407,
"total": 1907
},
"totalCharge": 101907
}
}
{
"status": "success",
"message": "Payment initiated successfully. Complete payment to buy tokens.",
"data": {
"paymentMethod": "bank_transfer",
"reference": "GETXN_FI_GRKXXJ40NUH39P_PMCKDU_1",
"email": "wilpat45677@yopmail.com",
"virtualAccount": {
"bankName": "Mock Bank",
"accountNumber": "0067100155",
"amount": "101907.00",
"note": "Mock note",
"expiresAt": "2026-07-21 11:56:16 PM"
},
"amountToPay": 101907,
"investmentAmount": 100000,
"currency": "NGN",
"token": {
"_id": "683ef69f70457700022e091b",
"symbol": "FDNE",
"name": "FCMB Debt Note",
"price": 10000
},
"tokensToCredit": 10,
"creditAmount": 100500,
"fees": {
"getequity": 500,
"getequityPercent": 0.5,
"flutterwave": 1407,
"total": 1907
},
"totalCharge": 101907
}
}
Trade
Fund and Buy
Initiates a fund-and-buy transaction for an api client. This creates a payment (card or bank transfer) that funds the wallet and buys a token in a single flow.
POST
api
/
token
/
{id}
/
fund-buy
{
"investmentAmount": 100000,
"currency": "NGN",
"redirectUrl": "https://google.com",
"paymentMethod": "card",
"customer": {
"name": "Jude Dike",
"email": "dikejude49@gmail.com"
},
"meta": {
"orderId": "…"
}
}
{
"investmentAmount": 100000,
"currency": "NGN",
"paymentMethod": "bank_transfer",
"customer": {
"name": "Jude Dike",
"email": "dikejude49@gmail.com"
},
"meta": {
"orderId": "…"
}
}
{
"status": "success",
"message": "Payment initiated successfully. Complete payment to buy tokens.",
"data": {
"paymentLink": "https://checkout-v2.dev-flutterwave.com/v3/hosted/pay/926e0cc3e67ebbd9fb57",
"reference": "GETXN_FI_WFMSVRKW2X6CUJ",
"investmentAmount": 100000,
"currency": "NGN",
"token": {
"_id": "683ef69f70457700022e091b",
"symbol": "FDNE",
"name": "FCMB Debt Note",
"price": 10000
},
"tokensToCredit": 10,
"creditAmount": 100500,
"fees": {
"getequity": 500,
"getequityPercent": 0.5,
"flutterwave": 1407,
"total": 1907
},
"totalCharge": 101907
}
}
{
"status": "success",
"message": "Payment initiated successfully. Complete payment to buy tokens.",
"data": {
"paymentMethod": "bank_transfer",
"reference": "GETXN_FI_GRKXXJ40NUH39P_PMCKDU_1",
"email": "wilpat45677@yopmail.com",
"virtualAccount": {
"bankName": "Mock Bank",
"accountNumber": "0067100155",
"amount": "101907.00",
"note": "Mock note",
"expiresAt": "2026-07-21 11:56:16 PM"
},
"amountToPay": 101907,
"investmentAmount": 100000,
"currency": "NGN",
"token": {
"_id": "683ef69f70457700022e091b",
"symbol": "FDNE",
"name": "FCMB Debt Note",
"price": 10000
},
"tokensToCredit": 10,
"creditAmount": 100500,
"fees": {
"getequity": 500,
"getequityPercent": 0.5,
"flutterwave": 1407,
"total": 1907
},
"totalCharge": 101907
}
}
string
required
The token ID to buy
number
required
The amount to invest
string
required
The currency code (e.g.,
NGN, USD)string
URL to redirect after payment completion. Required when
paymentMethod is card. Not needed for bank_transfer.string
Preferred payment method. Supported values:
card, bank_transfer. When bank_transfer is used, virtual account details are returned instead of a payment link.object
required
Object containing customer details (
name and email).object
Object containing additional information like
orderId.{
"investmentAmount": 100000,
"currency": "NGN",
"redirectUrl": "https://google.com",
"paymentMethod": "card",
"customer": {
"name": "Jude Dike",
"email": "dikejude49@gmail.com"
},
"meta": {
"orderId": "…"
}
}
{
"investmentAmount": 100000,
"currency": "NGN",
"paymentMethod": "bank_transfer",
"customer": {
"name": "Jude Dike",
"email": "dikejude49@gmail.com"
},
"meta": {
"orderId": "…"
}
}
{
"status": "success",
"message": "Payment initiated successfully. Complete payment to buy tokens.",
"data": {
"paymentLink": "https://checkout-v2.dev-flutterwave.com/v3/hosted/pay/926e0cc3e67ebbd9fb57",
"reference": "GETXN_FI_WFMSVRKW2X6CUJ",
"investmentAmount": 100000,
"currency": "NGN",
"token": {
"_id": "683ef69f70457700022e091b",
"symbol": "FDNE",
"name": "FCMB Debt Note",
"price": 10000
},
"tokensToCredit": 10,
"creditAmount": 100500,
"fees": {
"getequity": 500,
"getequityPercent": 0.5,
"flutterwave": 1407,
"total": 1907
},
"totalCharge": 101907
}
}
{
"status": "success",
"message": "Payment initiated successfully. Complete payment to buy tokens.",
"data": {
"paymentMethod": "bank_transfer",
"reference": "GETXN_FI_GRKXXJ40NUH39P_PMCKDU_1",
"email": "wilpat45677@yopmail.com",
"virtualAccount": {
"bankName": "Mock Bank",
"accountNumber": "0067100155",
"amount": "101907.00",
"note": "Mock note",
"expiresAt": "2026-07-21 11:56:16 PM"
},
"amountToPay": 101907,
"investmentAmount": 100000,
"currency": "NGN",
"token": {
"_id": "683ef69f70457700022e091b",
"symbol": "FDNE",
"name": "FCMB Debt Note",
"price": 10000
},
"tokensToCredit": 10,
"creditAmount": 100500,
"fees": {
"getequity": 500,
"getequityPercent": 0.5,
"flutterwave": 1407,
"total": 1907
},
"totalCharge": 101907
}
}
After the payment
The payer comes back to yourredirectUrl with the outcome appended as query parameters:
?status=successful&tx_ref=GETXN_FI_WFMSVRKW2X6CUJ&transaction_id=10459445
?status=cancelled&tx_ref=GETXN_FI_KGBW0Y3O2W2GNN
status travels through the browser, so treat it as a hint. Take the tx_ref and call
GET api/transactions/{reference} for the
real outcome, and to know whether the wallet has been credited yet.
Error Codes
| Code | HTTP Status | Description |
|---|---|---|
| TOKEN_ACCESS_DENIED_ERROR | 403 | User doesn’t have access to this token |
| DEAL_ACCESS_DENIED_ERROR | 403 | User doesn’t have access to this deal |
| TOKEN_CLOSED_ERROR | 400 | Token is closed for investment |
| TOKEN_EXITED_ERROR | 400 | Token has exited |
| AMOUNT_TOO_LOW_ERROR | 400 | Investment amount is below minimum |
| BELOW_MIN_TRADE_ERROR | 400 | Amount below minimum trade limit |
| ABOVE_MAX_TRADE_ERROR | 400 | Amount above maximum trade limit |
| INVALID_AMOUNT_ERROR | 400 | Invalid investment amount |
| PAYMENT_INITIATION_ERROR | 502 | Failed to initiate payment with provider |
| TOKEN_NOT_FOUND_ERROR | 404 | Token not found |
Was this page helpful?
