skip to content

API - Add New Pro-Forma Invoice

URL: GenerateNewProFormaInvoice.php

JSON Option (recommended):

to use as JSON, append ?apiformat=json to the URL, then send through all variables as a JSON encoded string.

Required Fields:

username
password
data (array containing items) - should be in this format:

data[$i][0] - prod_code
data[$i][1] - qty
data[$i][2] - description
data[$i][3] - amount
data[$i][4] - currency
data[$i][5] - vat_applies //1 or 0
data[$i][6] - vat_percentage //decimal(20,2)
data[$i][7] - amount_includes_vat //1 or 0

ClientID or these client related fields:

client_invoice_name (255 characters max)
client_email (255 characters max)

Optional Client Related Fields (If no ClientID is supplied):

client_vat_nr (255 characters max)
client_phone_nr (20 characters max)
client_phone_nr2 (20 characters max)
client_fax_nr (20 characters max)
client_postal_address1 (255 characters max)
client_postal_address2 (255 characters max)
client_postal_address3 (255 characters max)
client_postal_address4 (255 characters max)

Optional Fields:

OrderNr (10 characters max)
AdditionalValue1 (32 characters max) //These are custom fields as specified under Settings -> Documents -> Pro-Forma Invoices -> Custom Fields. Note that the amount you can use is limited by your account type.
AdditionalValue2 (32 characters max)
AdditionalValue3 (32 characters max)
AdditionalValue4 (32 characters max)
AdditionalValue5 (32 characters max)
AdditionalValue6 (32 characters max)
AdditionalValue7 (32 characters max)
AdditionalValue8 (32 characters max)
AdditionalValue9 (32 characters max)
AdditionalValue10 (32 characters max)
DiscountAmount (decimal(20,2))
DiscountPercentage (decimal(20,2))
prepend_nr (9 characters max)
append_nr (9 characters max)
EmailToClient (true or false)
AutoConvertToInvoice (true or false)
AutoConvertToInvoiceOption (only if AutoConvertToInvoice is true. values are: 'days' or 'fixed'. 'days' are default.)
AutoConvertToInvoiceFixed (only if AutoConvertToInvoiceOption is 'fixed'. values are: 1-28 or 'last'. 1 is default.)
AutoConvertToInvoiceFixedWhen (values are 'this' or 'next'. Indicates which month in conjunction with AutoConvertToInvoiceFixed the conversion should take place. Must be on a valid future date for the conversion to happen.)
AutoConvertToInvoiceDays (only if AutoConvertToInvoiceOption is 'days'. values are: 1-60. default is 7. specifies the amount of days before conversion should take place.)
data[$i][8] - custom_line_item_1 //as defined under Settings -> Documents -> Pro-Forma Invoices -> Custom Line Items
data[$i][9] - custom_line_item_2
data[$i][10] - custom_line_item_3
data[$i][11] - cost_price //only used if applicable
data[$i][12] - //not implemented
data[$i][13] - discount_percentage //Discount percentage only applicable for this line item. Ignored if Document has a discount percentage specified.
data[$i][14] - custom_line_item_4
data[$i][15] - custom_line_item_5

Returns:

JSON array containing:

$array[url] - the url where the document can be downloaded
$array[invoice_nr] - the pro-forma invoice number
$array[document_nr] - the pro-forma invoice number
$array[document_id] - the global document id
$array[email_url] - url to open to have the document emailed to the client

Example PHP code with JSON

$param['username'] = '';
$param['password'] = '';
$param['ClientID'] = '';
$param['data'][0][0] = ''; //first product
$param['data'][0][1] = ''; 
$param['data'][0][2] = '';
$param['data'][0][3] = '';
$param['data'][0][4] = '';
$param['data'][0][5] = '';
$param['data'][0][6] = '';
$param['data'][0][7] = '';
$param['data'][1][0] = ''; //second product
$param['data'][1][1] = '';
$param['data'][1][2] = '';
$param['data'][1][3] = '';
$param['data'][1][4] = '';
$param['data'][1][5] = '';
$param['data'][1][6] = '';
$param['data'][1][7] = '';
$param['AutoConvertToInvoice'] = 'true';
$param['AutoConvertToInvoiceOption'] = 'fixed';
$param['AutoConvertToInvoiceFixed'] = '1';
$param['AutoConvertToInvoiceFixedWhen'] = 'next'; //will convert to invoice on the 1st day of next month.

$url = 'https://www.invoicesonline.co.za/api/GenerateNewProFormaInvoice.php?apiformat=json';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url); //set the url
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //return as a variable
curl_setopt($ch, CURLOPT_POST, 1); //set POST method
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($param)); //set the POST variables
$response = curl_exec($ch); //run the whole process and return the response

 

Updated: Sat, 30 May 2020