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. Invoices

Create an invoice

Create a new invoice for a customer

URI

POST

https://api.tryduplo.com/v1/merchants/invoice

Parameters

Header

Authorization string

set value to Bearer SECRET_KEY

Body Param

recipient_ref string required

Recipient reference

due_date string required

Invoice due dare

items array required

The items array specifies the content in the invoice e.g:

shipping_fee string required

Shipping fee

business_id string required

Bussiness id

discount objectrequired

The discount contains the offered discount(s) for the invoice. e.g:

tax objectrequired

Tax object. e.g:

note string

Invoice notes

status string

Invoice status, this can either be invoice or draft the default value invoice

invoice_number string

Invoice number

Sample request

curl --location --request POST 'https://api.tryduplo.com/v1/merchants/invoice' \
--header 'Authorization: Bearer dp_live_856879df3e6ecdb14a918e24bba6d480e0564a4eabfdba938fc23b820ac905e54bac25a71dbcdef66c97b8c72ca7e16cf03a576857261f2f35ca5024620b14268823a7d78922cfdd97cefc61050139fd92a7a0c5840e016050552ccadbbec642d2ff8d35a09225c7ec4fd1e347b' \
--header 'Content-Type: application/json' \
--data-raw '{
    "business_id": "45ee9f61-dd52-4f51-bccb-8ea711760", 
    "recipient": "cus_GnXkWlEOtw",
    "due_date": "2022-06-12",
    "items": [
        {
            "name": "Banana",
            "quantity": "50",
            "unit_price": "100"
        },
        {
            "name": "Apple",
            "quantity": "20",
            "unit_price": "100"
        }
    ],
    "shipping_fee": "100",
    "discount": {
        "type": "amount",
        "value": "500"
    },
    "tax": {
        "type": "percentage",
        "value": 10,
        "description": "sample description t"
    },
    "note": "sample note for creating this invoice for another test",
    "status": "invoice"
}'
var axios = require('axios');
var data = JSON.stringify({
  "business_id": "45ee9f61-dd52-4f51-bccb-8e5711760",
  "recipient": "cus_GnXkWKAlOtw",
  "due_date": "2022-06-12",
  "items": [
    {
      "name": "kofo Onalaja dr",
      "quantity": "50",
      "unit_price": "100"
    },
    {
      "name": "sample name 55",
      "quantity": "20",
      "unit_price": "100"
    }
  ],
  "shipping_fee": "100",
  "discount": {
    "type": "amount",
    "value": "500"
  },
  "tax": {
    "type": "percentage",
    "value": 10,
    "description": "sample description t"
  },
  "note": "sample note for creating this invoice for another test",
  "status": "invoice"
});

var config = {
  method: 'post',
  url: 'https://api.tryduplo.com/v1/merchants/invoice',
  headers: { 
    'Authorization': 'Bearer dp_live_856879df3e6ecdb14a918e24bba6d480e4eabfdba938fc23b820ac905e54bac25a71dbcdef66c97b8c72ca7e16cf03a576857261f2f16f5335ca5024620b14268823a7d78922cfdd97cefc61050139fd92a7a0c5840e016050552ccadbbec642d2ff8d35a09225c7ec4fd1e347b', 
    '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/merchants/invoice',
  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": "45e9f61-dd52-4f51-bccb-8e59a711760", 
    "recipient": "cus_GnXkWKEOtw",
    "due_date": "2022-06-12",
    "items": [
        {
            "name": "kofo Onalaja dr",
            "quantity": "50",
            "unit_price": "100"
        },
        {
            "name": "sample name 55",
            "quantity": "20",
            "unit_price": "100"
        }
    ],
    "shipping_fee": "100",
    "discount": {
        "type": "amount",
        "value": "500"
    },
    "tax": {
        "type": "percentage",
        "value": 10,
        "description": "sample description t"
    },
    "note": "sample note for creating this invoice for another test",
    "status": "invoice"
}',
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer dp_live_856879df3e6ecdb14a918e24bba6d480e0564a4eabfdba938fc23b820ac905e54bac25a71dbcdef66c97b8c72ca7e16cf03a576857261f2f16f5335ca5024620b14268823a7d78922cfdd97cefc61050139fd92a7a0c5840e0160cadbbec642d2ff8d35a09225c7ec4fd1e347b',
    'Content-Type: application/json'
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

Duplo Response

{
    "data": {
        "id": "c1f9df9b-8dd3-4b43-aee9-ecc55257a2",
        "invoice_number": "7868993647",
        "title": "Invoice for Mwenda Deno",
        "recipient": "wal_ZKmo7StVZMrZ",
        "due_date": "2022-05-25T00:00:00.000Z",
        "items": [
            {
                "name": "Bananna",
                "total": 7510.5,
                "quantity": 15,
                "unit_price": 500.7
            },
            {
                "name": "Apple",
                "total": 3118.6,
                "quantity": 31,
                "unit_price": 100.6
            }
        ],
        "shipping_fee": 670.9,
        "discount": {
            "type": "amount",
            "value": 400.5
        },
        "tax": {
            "type": "percentage",
            "value": 10.2,
            "description": "sample description"
        },
        "note": "sample note",
        "status": "draft",
        "public_id": "oXFpXwUQIwoF8zOabzKLjEHv4kZTydNb",
        "account": {
            "provider": {
                "id": "wema",
                "default": true,
                "prefixes": [
                    "222",
                    "919",
                    "888"
                ],
                "bank_code": "111",
                "bank_name": "Wema Bank",
                "is_prefix": true,
                "credentials": {}
            },
            "account_ref": "act_MR1sJ8bh2YlK",
            "account_number": "8880000363"
        },
        "payment": null,
        "created_at": "2022-05-25T15:19:05.650Z",
        "update_at": "2022-05-25T15:19:05.651Z",
        "business_id": "80efed51-96fc-43c7-9075-9f78877d26bc"
    },
    "errors": {},
    "message": "Request successful"
}
PreviousInvoicesNextEdit invoice

Last updated 2 years ago

Was this helpful?

"items": [
        {
            "name": "Bananas",
            "quantity": "50",
            "unit_price": "100"
        },
        {
            "name": "Apple",
            "quantity": "20",
            "unit_price": "100"
        }
    ]
"discount": {
        "type": "amount",
        "value": "500"
    }
"tax": {
        "type": "percentage",
        "value": 10,
        "description": "sample description"
    }