skip to content

API - Add New Recurring Invoice

URL: GenerateNewRecurringInvoice.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
Recurrs - valid values are: daily,weekly,bi-weekly,monthly,bi-monthly,quarterly,semesterly,annually,bi-annually
paused //1 or 0
limit_recurrances //1 (enable limit) or 0 (disable limit)
recurrances_limit //integer, how many times the invoice should recur
add_increase //1 or 0 - enable or disable automatic increase
IncreasePercentage //percentage to increase with
IncreaseInterval //integer, every how many generations should it increase. e.g. for monthly recurring invoice with annual increase it must be 12
recurring_start_date //date of first recurrance format must be YYYY-MM-DD, and date must be valid
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 //As indicated under Settings -> Currencies. ZAR usually for SA businesses.
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 -> 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)
data[$i][8] - custom_line_item_1 //as defined under Settings -> Documents -> 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[type] - success or error
$array[document_id] - the global document id
$array[message] - description of type

Example PHP code with JSON

$param['username'] = '';
$param['password'] = '';
$param['ClientID'] = '';
$param['Recurrs'] = '';
$param['paused'] = '';
$param['limit_recurrances'] = '';
$param['recurrances_limit'] = '';
$param['add_increase'] = '';
$param['IncreasePercentage'] = '';
$param['IncreaseInterval'] = '';
$param['recurring_start_date'] = '';
$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] = '';

	
$url = 'https://www.invoicesonline.co.za/api/GenerateNewRecurringInvoice.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