Create a single-use virtual account
Create a single-use virtual account to accept one-time payment.
Depending on the partner bank you choose, we may require more information. These requirements are at the request of our partnering banks.
URI
POST
https://api.tryduplo.com/v1/virtual-accountsParameters
Header
Authorization
string
set value to Bearer SECRET_KEY
Body Param
business_id
string required
Buisness ID
first_name
string required
Customer's first name
last_name
string required
Customer's last name
phone_number
string required
Customer's phone number
email
string required
Customer's email address
bvn
string
Customer's bank verification number
metadata
string
Customer's specific data - Stringified JSON
is_permanent
boolean required
Flags a virtual account as temporary
preferred_banks
array
List of Customer's preferred banks
purpose
string required
Customer's purpose for creating a virtual account
amount
number
Specifies the exact amount a virtual account should receive
single_use
boolean required
Flag for a single use virtual account, should be set to true
Sample request
curl --location --request POST 'https://api.tryduplo.com/v1/virtual-accounts' \
--header 'Authorization: Bearer SECRET_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"first_name": "Pat",
"last_name": "Daniel",
"phone_number": "08085279945",
"email": "[email protected]",
"bvn": "39372746283",
"is_permanent": false,
"purpose": "Testing purpose",
"preferred_banks": [
{
"bank_code": "111",
"bank_name": "Wema Bank",
"id": "wema"
}
],
"single_use": true,
"metadata": "{'invocie': '10093743'}"
}'var axios = require('axios');
var data = JSON.stringify({
"first_name": "Pat",
"last_name": "Daniel",
"phone_number": "08012345678",
"email": "[email protected]",
"bvn": "39372746283",
"is_permanent": false,
"purpose": "Testing purpose",
"preferred_banks": [
{
"bank_code": "111",
"bank_name": "Wema Bank",
"id": "wema"
}
],
"single_use": true,
"metadata": '{}'
});
var config = {
method: 'post',
url: 'https://api.tryduplo.com/v1/virtual-accounts',
headers: {
'Authorization': 'Bearer SECRET_KEY',
'Content-Type': 'application/json'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.tryduplo.com/v1/virtual-accounts',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"business_id": BUSINESS_ID,
"first_name": "Pat",
"last_name": "Daniel",
"phone_number": "08085279945",
"email": "[email protected]",
"bvn": "39372746283",
"is_permanent": false,
"purpose": "Testing purpose",
"preferred_banks": [
{
"bank_code": "111",
"bank_name": "Wema Bank",
"id": "wema"
}
],
"fallback_bank": true,
"single_use": true,
"amount": 3000,
"metadata": {}
}',
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer SECRET_KEY',
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;Duplo Response
{
"data": {
"account_ref": "act_jR8TvmZgiIHV",
"account_number": "9190000023",
"is_permanent": false,
"email": "[email protected]",
"status": "active",
"provider": {
"bank_code": "111",
"bank_name": "Wema Bank",
"id": "wema",
"credentials": {}
},
"created_at": "2022-02-01T18:20:19.000Z",
"account_name": "David Daniel"
},
"errors": {},
"message": "Account created successfully"
}Last updated
Was this helpful?