LogoLogo
  • GET STARTED
    • Integration Guide
    • Quick Start
  • Webhooks
    • Webhooks
      • Register a webhook
      • Webhook notification
      • Verify webhook
  • Payment APIs
    • Collect Payments
      • Virtual Accounts
        • Create a single-use virtual account
        • Create a multi-use virtual account
        • Update a virtual account
        • Delete a virtual account
        • List all virtual accounts
        • Get details of a virtual account
      • Digital Wallets
        • Create a wallet
        • List all wallets
        • Get details of a wallet
        • Transfer between wallets
        • Transfer to business
        • Sweep wallet balances
        • Get wallet balance
      • Customers
        • Create a customer
        • List all customers
        • Get customer details
      • Invoices
        • Create an invoice
        • Edit invoice
        • Resend invoice
        • List all invoices
        • Get invoice details
    • Make Payments
      • Request OTP to initiate payout
      • Get a list of registered banks
      • Get Wallet Balance
      • Verify account number
      • Initiate a payout
      • Get all transactions
      • Get details of a transaction
      • Recipients
        • Create a recipient
        • List all recipient
        • Get a recipient's details
        • Delete a recipient
        • Get recipients summary
    • Duplo Checkout
      • Checkout Redirect
        • Generate a checkout URL
      • Checkout SDK
      • Verify checkout transaction
    • Make Payments v2
      • Initiate a Payout v2
      • Resend OTP
      • Process Payout
      • Get details of a Transaction v2
Powered by GitBook
On this page
  • URI
  • Parameters
  • Sample request
  • Duplo Response

Was this helpful?

  1. Payment APIs
  2. Collect Payments
  3. Digital Wallets

Create a wallet

Create a digital wallet.

Every digital wallet has a virtual account number attached

When you create a digital wallet via the API, we automatically create a Customer using the same information and attach a wallet.

URI

POST

https://api.tryduplo.com/v1/wallets

Parameters

Header

Authorization string

set value to Bearer SECRET_KEY

Body Param

business_id string required

Business 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

preferred_banks array

List of customer's preferred banks

Sample request

curl --location --request POST 'https://api.tryduplo.com/v1/wallets' \
--header 'Authorization: Bearer SECRET_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
   "business_id": {YOUR_VALUE},
   "first_name": "John",
   "last_name": "Bellion",
   "email": "john@gmail.com",
   "bvn": "23835759875",
   "phone_number":"08010940168",
   "metadata": "{'invoice_id': '11973600964773'}",
   "preferred_banks": [
       {
           "bank_code": "111",
           "bank_name": "Wema Bank",
           "id": "wema"
       }
   ]
}'
var axios = require("axios");
var data = JSON.stringify({
  business_id: {YOUR_VALUE},
  first_name: "John",
  last_name: "Bellion",
  email: "john@gmail.com",
  bvn: "23835759875",
  phone_number: "08010940168",
  metadata: "{'invoice_id': '11973600964773'}",
  preferred_banks: [
    {
      bank_code: "111",
      bank_name: "Wema Bank",
      id: "wema",
    },
  ],
});

var config = {
  method: "post",
  url: "https://api.tryduplo.com/v1/wallets",
  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/wallets',
 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": {YOUR_VALUE},
   "first_name": "John",
   "last_name": "Bellion",
   "email": "john@gmail.com",
   "bvn": "23835759875",
   "phone_number":"08010940168",
   "metadata": "{\'invoice_id\': \'11973600964773\'}",
   "preferred_banks": [
       {
           "bank_code": "111",
           "bank_name": "Wema Bank",
           "id": "wema"
       }
   ]
}',
 CURLOPT_HTTPHEADER => array(
   'Authorization: Bearer SECRET_KEY',
   'Content-Type: application/json'
 ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

Duplo Response

{
  "data": {
    "wallet_ref": "wal_7sdgewehe8",
    "first_name": "Manny",
    "last_name": "Norte",
    "email": "alindavidsisn@gmail.co",
    "created_at": "2021-09-28T20:28:47.000Z",
    "currency": "NGN",
    "status": "active",
    "is_master": true,
    "available_balance": "0.00",
    "legder_balance": "0.00",
    "opening_balance": "0.00",
    "closing_balance": "0.00",
    "bank_accounts": [
      {
        "account_ref": "act_gd53hs7enw3",
        "account_number": "9977658661",
        "created_at": "2021-09-28T20:28:47.000Z",
        "account_name": "MERCHANT(Manny Norte)",
        "provider": {
          "bank_code": "022",
          "bank_name": "wema",
          "id": "wema",
          "default": true
        }
      }
    ]
  },
  "errors": {},
  "message": "Wallet created successfully"
}
PreviousDigital WalletsNextList all wallets

Last updated 1 year ago

Was this helpful?