Invoicing API Sandbox

About the Invoicing API

Using the VeLabs site as a point of entry, our Invoicing API enables our clients to view their customer’s invoice and transaction details using a range of different criteria.

The Invoicing API enables clients to filter their search based on information such as invoices for a given day, invoices specific to a certain customer or invoices for multiple clients.

This technology also allows the user to retrieve lists of transactions which can be defined by optional parameters; as well as providing the flexibility to update the status of certain transactions where necessary - primarily when cancelling or approving.


The Sandbox Tier

Every API call must be authorized using an API key. While you are testing the Invoicing API, you should use the sandbox and generate your keys from there. You will be working against our Production Environment, but all the data generated will be marked as test data. With this approach we make sure that you can play as much as you want with the API and, at the same time, we keep the consistency in our DBs. So that when you decide to go live, we'll enable you the Customer Tier to work with our production environment and level up the throttling limits.


The Sandbox Tier includes the following limits:

  • Request size limits: 0.5kb (double than the average request).
  • Requests per minute: 10(triple than the max. peak of 200 installations per hour found in our metrics).


For subscribing to the Customer Tier, click here.

GetInvoiceDetails

Provides the option to pull an additional list of details for a given invoice.

Request parameters:

  • invoiceId*: Ve’s internal ID for the invoice. This ID can be retrieved through a search with the GetInvoices endpoint.
  • domain: If you are an Agency, use the domain of your merchant. If you are an individual company with a single Ve account, you can leave this empty.
  • country: Allows you to specify the country in which a certain account is running – applicable for agencies where the customer has multiple accounts across a number of territories.

Try it

Request URL

Request parameters

number
(optional)
string
(optional)
string

Request headers

string
Subscription key which provides access to this API. Found in your Profile.

Request body

Response 200

Invoice details.

{
  "customerName": "string",
  "billingContactName": "string",
  "billingContactSurname": "string",
  "billingCompanyName": "string",
  "billingCompanyRegistrationNumber": "string",
  "billingAddressLine1": "string",
  "billingAddressLine2": "string",
  "billingCity": "string",
  "billingCountyStateProvince": "string",
  "billingZipPostalCode": "string",
  "billingCountryName": "string",
  "billingReference": "string",
  "billingInvoiceEmail": "string",
  "officeCultureInfo": "string",
  "officeCompanyLegalName": "string",
  "officeCompanyRegistrationNumber": "string",
  "officeTaxRegistrationNumber": "string",
  "officeAddressLine1": "string",
  "officeAddressLine2": "string",
  "officeCity": "string",
  "officeCountyStateProvince": "string",
  "officeZipPostalCode": "string",
  "officeCountryName": "string",
  "officeFinanceEmail": "string",
  "officeFinancePhoneNumber": "string",
  "officeBankName": "string",
  "officeBankAddress": "string",
  "officeBankIban": "string",
  "officeBankBicswift": "string",
  "officeStaticText": "string",
  "managerEmailAddress": "string",
  "managerTelephone": "string",
  "managerName": "string",
  "currencySymbol": "string",
  "startPeriodDate": "2016-12-09T10:43:04.378Z",
  "endPeriodDate": "2016-12-09T10:43:04.378Z",
  "internalInvoiceEmail": "string",
  "invoicePdf": "string"
}

Response 400

Invalid request data.

{
  "message": "The request is invalid.",
  "details": {
    "invoiceId": "The 'invoiceId' field is required."
  }
}

Response 401

You are unauthorised for this action.

Response 500

Internal server error.

Code samples

@ECHO OFF

curl -v -X GET "https://api.veinteractive.com/InvoicingApiSandbox/GetInvoiceDetails?invoiceId={number}&domain={string}&country={string}"
-H "Ocp-Apim-Subscription-Key: {subscription key}"

--data-ascii "{body}" 
using System;
using System.Net.Http.Headers;
using System.Text;
using System.Net.Http;
using System.Web;

namespace CSHttpClientSample
{
    static class Program
    {
        static void Main()
        {
            MakeRequest();
            Console.WriteLine("Hit ENTER to exit...");
            Console.ReadLine();
        }
        
        static async void MakeRequest()
        {
            var client = new HttpClient();
            var queryString = HttpUtility.ParseQueryString(string.Empty);

            // Request headers
            client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "{subscription key}");

            // Request parameters
            queryString["invoiceId"] = "{number}";
            queryString["domain"] = "{string}";
            queryString["country"] = "{string}";
            var uri = "https://api.veinteractive.com/InvoicingApiSandbox/GetInvoiceDetails?" + queryString;

            var response = await client.GetAsync(uri);
        }
    }
}	
// // This sample uses the Apache HTTP client from HTTP Components (http://hc.apache.org/httpcomponents-client-ga/)
import java.net.URI;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class JavaSample 
{
    public static void main(String[] args) 
    {
        HttpClient httpclient = HttpClients.createDefault();

        try
        {
            URIBuilder builder = new URIBuilder("https://api.veinteractive.com/InvoicingApiSandbox/GetInvoiceDetails");

            builder.setParameter("invoiceId", "{number}");
            builder.setParameter("domain", "{string}");
            builder.setParameter("country", "{string}");

            URI uri = builder.build();
            HttpGet request = new HttpGet(uri);
            request.setHeader("Ocp-Apim-Subscription-Key", "{subscription key}");


            // Request body
            StringEntity reqEntity = new StringEntity("{body}");
            request.setEntity(reqEntity);

            HttpResponse response = httpclient.execute(request);
            HttpEntity entity = response.getEntity();

            if (entity != null) 
            {
                System.out.println(EntityUtils.toString(entity));
            }
        }
        catch (Exception e)
        {
            System.out.println(e.getMessage());
        }
    }
}

<!DOCTYPE html>
<html>
<head>
    <title>JSSample</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
</head>
<body>

<script type="text/javascript">
    $(function() {
        var params = {
            // Request parameters
            "invoiceId": "{number}",
            "domain": "{string}",
            "country": "{string}",
        };
      
        $.ajax({
            url: "https://api.veinteractive.com/InvoicingApiSandbox/GetInvoiceDetails?" + $.param(params),
            beforeSend: function(xhrObj){
                // Request headers
                xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","{subscription key}");
            },
            type: "GET",
            // Request body
            data: "{body}",
        })
        .done(function(data) {
            alert("success");
        })
        .fail(function() {
            alert("error");
        });
    });
</script>
</body>
</html>
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    
    NSString* path = @"https://api.veinteractive.com/InvoicingApiSandbox/GetInvoiceDetails";
    NSArray* array = @[
                         // Request parameters
                         @"entities=true",
                         @"invoiceId={number}",
                         @"domain={string}",
                         @"country={string}",
                      ];
    
    NSString* string = [array componentsJoinedByString:@"&"];
    path = [path stringByAppendingFormat:@"?%@", string];

    NSLog(@"%@", path);

    NSMutableURLRequest* _request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:path]];
    [_request setHTTPMethod:@"GET"];
    // Request headers
    [_request setValue:@"{subscription key}" forHTTPHeaderField:@"Ocp-Apim-Subscription-Key"];
    // Request body
    [_request setHTTPBody:[@"{body}" dataUsingEncoding:NSUTF8StringEncoding]];
    
    NSURLResponse *response = nil;
    NSError *error = nil;
    NSData* _connectionData = [NSURLConnection sendSynchronousRequest:_request returningResponse:&response error:&error];

    if (nil != error)
    {
        NSLog(@"Error: %@", error);
    }
    else
    {
        NSError* error = nil;
        NSMutableDictionary* json = nil;
        NSString* dataString = [[NSString alloc] initWithData:_connectionData encoding:NSUTF8StringEncoding];
        NSLog(@"%@", dataString);
        
        if (nil != _connectionData)
        {
            json = [NSJSONSerialization JSONObjectWithData:_connectionData options:NSJSONReadingMutableContainers error:&error];
        }
        
        if (error || !json)
        {
            NSLog(@"Could not parse loaded json with error:%@", error);
        }
        
        NSLog(@"%@", json);
        _connectionData = nil;
    }
    
    [pool drain];

    return 0;
}
<?php
// This sample uses the Apache HTTP client from HTTP Components (http://hc.apache.org/httpcomponents-client-ga/)
require_once 'HTTP/Request2.php';

$request = new Http_Request2('https://api.veinteractive.com/InvoicingApiSandbox/GetInvoiceDetails');
$url = $request->getUrl();

$headers = array(
    // Request headers
    'Ocp-Apim-Subscription-Key' => '{subscription key}',
);

$request->setHeader($headers);

$parameters = array(
    // Request parameters
    'invoiceId' => '{number}',
    'domain' => '{string}',
    'country' => '{string}',
);

$url->setQueryVariables($parameters);

$request->setMethod(HTTP_Request2::METHOD_GET);

// Request body
$request->setBody("{body}");

try
{
    $response = $request->send();
    echo $response->getBody();
}
catch (HttpException $ex)
{
    echo $ex;
}

?>
########### Python 2.7 #############
import httplib, urllib, base64

headers = {
    # Request headers
    'Ocp-Apim-Subscription-Key': '{subscription key}',
}

params = urllib.urlencode({
    # Request parameters
    'invoiceId': '{number}',
    'domain': '{string}',
    'country': '{string}',
})

try:
    conn = httplib.HTTPSConnection('api.veinteractive.com')
    conn.request("GET", "/InvoicingApiSandbox/GetInvoiceDetails?%s" % params, "{body}", headers)
    response = conn.getresponse()
    data = response.read()
    print(data)
    conn.close()
except Exception as e:
    print("[Errno {0}] {1}".format(e.errno, e.strerror))

####################################

########### Python 3.2 #############
import http.client, urllib.request, urllib.parse, urllib.error, base64

headers = {
    # Request headers
    'Ocp-Apim-Subscription-Key': '{subscription key}',
}

params = urllib.parse.urlencode({
    # Request parameters
    'invoiceId': '{number}',
    'domain': '{string}',
    'country': '{string}',
})

try:
    conn = http.client.HTTPSConnection('api.veinteractive.com')
    conn.request("GET", "/InvoicingApiSandbox/GetInvoiceDetails?%s" % params, "{body}", headers)
    response = conn.getresponse()
    data = response.read()
    print(data)
    conn.close()
except Exception as e:
    print("[Errno {0}] {1}".format(e.errno, e.strerror))

####################################
require 'net/http'

uri = URI('https://api.veinteractive.com/InvoicingApiSandbox/GetInvoiceDetails')

query = URI.encode_www_form({
    # Request parameters
    'invoiceId' => '{number}',
    'domain' => '{string}',
    'country' => '{string}'
})

if uri.query && uri.query.length > 0
    uri.query += '&' + query
else
    uri.query = query
end

request = Net::HTTP::Get.new(uri.request_uri)
# Request headers
request['Ocp-Apim-Subscription-Key'] = '{subscription key}'
# Request body
request.body = "{body}"

response = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
    http.request(request)
end

puts response.body