Additional Data Transactions

Additional Data for Procurement Transactions

 

Procurement transactions refer to transactions that contain the line item (or order basket) details. If the line-item details are sent to iVeri within a transaction, then a procurement card holder get those details from their issuing bank (for example on their monthly statement). This is of assistance in tracking business to business transactions particularly in large corporations. Procurement transactions are currently only available within distributor Nedbank.


Coding for Procurement 


The following optional input parameters are Procurement specific per transaction: 

  • CustomerReferenceIdentifier 
  • CustomerVATRegistrationNumber 
  • DestinationCountry 
  • DestinationZIPCode 
  • NationalTax 
  • NationalTaxIndicator 
  • OrderDate 
  • PurchaseIdentifier 
  • ShipFromZIPCode 
  • ShippingAmount 
  • ShippingTaxRate 
  • TransactionDiscount 
  • UniqueVATInvoiceReferenceNumber 


The following optional input parameters are Procurement specific per Line item: 

  • Discount 
  • ItemCommodityCode 
  • ItemDescriptor 
  • ProductCode 
  • Quantity 
  • TaxRate 
  • Total 
  • UnitCost 
  • UnitOfMeasure 


Since Line items are repeated, the advanced Enterprise methods openElement and closeElement must be used.  


The following is a code snippet in https://vb.net/ 


enterprise.setTag("ShippingTaxRate", shippingTaxRate) 

enterprise.setTag("TransactionDiscount", transactionDiscount) 

enterprise.setTag("UniqueVATInvoiceReferenceNumber", vatReferenceNo) 

 

Dim dr As DataRow 

For Each dr In myTable.Rows 

enterprise.openElement("LineItem") 

enterprise.setTag("ItemCommodityCode", dr("Item Code")) 

enterprise.setTag("ItemDescriptor", dr("Description")) 

enterprise.setTag("ProductCode", dr("Product Code")) 

enterprise.setTag("Quantity", dr("Quantity")) 

enterprise.setTag("UnitOfMeasure", dr("Unit Of Measure")) 

enterprise.setTag("UnitCost", dr("Unit Cost")) 

enterprise.setTag("TaxRate", dr("Tax Rate")) 

enterprise.setTag("Discount", dr("Discount")) 

enterprise.setTag("Total", dr("Total")) 

enterprise.closeElement() 

 

 

Tax Calculation 


The calculations below show how the NationalTax is calculated. Note that rounding can be up or down since the resulting NationalTax value is allowed to fall in a precision tolerance interval based on the number of line items. Calculation when TransactionDiscount is zero 


NationalTax = (sum of (LineItem Total x LineItem TaxRate) / 10000) + (ShippingAmount x ShippingTaxRate) / 10000 


Calculation when TransactionDiscount is NOT zero 


The TransactionDiscount is spread across some or all the line items resulting in an additional discount for these line items. Let’s call the LineItem Total of the affected line items, reduced LineItem Total. Then, 


NationalTax = (sum of (reduced LineItem Total x LineItem TaxRate) / 10000) + (ShippingAmount x ShippingTaxRate) / 10000. 


For the above calculation, a maximum and minimum tax amount is obtained by sorting line items in ascending and descending order respectively according to LineItem TaxRate. 


Advanced Fraud Screening

 

The following optional input parameters are CyberSource specific per Line item:



  • Discount 
  • ItemCommodityCode 
  • ItemDescriptor 
  • ProductCode 
  • Quantity 
  • TaxRate 
  • Total 
  • UnitCost 
  • UnitOfMeasure 
  • PassengerFirstName 
  • PassengerLastName 
  • PassengerID 
  • PassengerStatus 
  • PassangerType 


Note: The fields in Blue will be used when doing Advanced Fraud Screening and is not recorded on the iVeri system. Since Line items are repeated, the advanced Enterprise methods openElement and closeElement must be used. The following is a code snippet in https://vb.net/

 

enterprise.setTag("ShippingTaxRate", shippingTaxRate) 

enterprise.setTag("TransactionDiscount", transactionDiscount) 

enterprise.setTag("UniqueVATInvoiceReferenceNumber", vatReferenceNo) 

 

Dim dr As DataRow 

For Each dr in myTable.Rows 

enterprise.openElement("LineItem") 

enterprise.setTag("UnitCost", dr("Unit Cost")) 

enterprise.setTag("Quantity", dr("Quantity")) 

enterprise.setTag("ItemDescriptor", dr("Description")) 

enterprise.setTag("ProductCode", dr("Product Code")) 

enterprise.setTag("PassengerFirstName", dr("Passenger FirstName")) 

enterprise.setTag("PassengerLastName", dr("Passenger LastName")) 

enterprise.setTag("PassengerID", dr("Passenger ID")) 

enterprise.setTag("PassengerStatus", dr("Passenger Status")) 

enterprise.setTag("PassengerType", dr("Passenger Type")) 

enterprise.closeElement() 

Next 

 

Fleet card transactions

 

Fleet cards facilitate the tracking of costs and managing statistical information of a fleet of vehicles.

  • A Fleet transaction refer to special processing for a Fleet card. 
  • Fleet transactions are currently only available within distributor Nedbank. 
  • If a fleet card is received with other distributors, then the fleet specific parameters are ignored. 

Coding for Fleetcards 


The following optional input parameters are Fleet specific per transaction: 


CustomerReferenceIdentifier 


The following optional input parameters are Fleet specific per Line item: 

  • ProductCode 
  • Quantity 
  • QuantityDecimalPlaces 
  • UnitCost 

     

The latest available values of the ProductCode field are obtained via the “Inventory” download command (See section 22). Only use the ProductCodes with Type='Fleet'. The list at the time of writing is given in 7.4 


Since Line items are repeated, the advanced Enterprise methods openElement and closeElement must be used. The following is a code snippet in C#:

 

enterprise.setTag("CustomerReferenceIdentifier", customerReferenceIdentifier); 

foreach (DataRow dr in myTable.Rows) 

enterprise.openElement("LineItem"); 

enterprise.setTag("ProductCode", dr["Product Code"]); 

enterprise.setTag("Quantity", dr["Quantity"]); 

enterprise.setTag("QuantityDecimalPlaces", dr["QuantityDecimalPlaces"]); 

enterprise.setTag("UnitCost", dr["Unit Cost"]); 

enterprise.closeElement(); 

Airline addendum data

 

Airline addendum data is additional transaction data which appear on a card holder's statement when buying a ticket from an airline merchant who include this data in a transaction request. Airline addendum data is currently only available for Nedbank. In addition, the airline addendum data is currently only supported for follow-up debit (pre-authorised debit) transactions.


Coding for Airline addendum data 


The following is a code snippet in C#:

 

enterprise.openElement("AirlineData"); 

enterprise.setTag("PassengerName", passengerName); 

enterprise.setTag("PrimaryTicketNumber", primaryTicketNumber); 

enterprise.setTag("FirstDepartureLocationCode", firstDepartureLocationCode); 

enterprise.setTag("FirstArrivalLocationCode", firstArrivalLocationCode); 

enterprise.setTag("PNRNumber", pnrNumber); 

enterprise.setTag("OfficeIATANumber", officeIATANumber); 

enterprise.setTag("OrderNumber", orderNumber); 

enterprise.setTag("PlaceOfIssue", placeOfIssue); 

enterprise.setTag("DepartureDate", departureDate); 


These following fields are not recorded on the iVeri system: 

enterprise.setTag("CompleteRoute", completeRoute); 

enterprise.setTag("DepartureTime", departureTime); 

enterprise.setTag("JourneyType", journeyType); 

enterprise.closeElement(); 


Note: The fields in Blue will be used when doing Advanced Fraud Screening.

 

CyberSource Fraud Management

 

CyberSource data is additional transaction data which iVeri Payment Technologies Ltd needs to process orders within CyberSource's fraud screening solution.


 

 Device Fingerprinting 


To successfully implement Device Fingerprinting, a 1-pixel image file (which cannot be seen) and two scripts need to be placed in the <body> tag of the merchant’s checkout page*. This will ensure a 3-5 second window in which the code segments can complete the data collection necessary to create a fingerprint for the device making the order. 


Below are the code segments for implementing Device Fingerprinting: 


PNG Image

<p style="background:url(https://h.online-metrix.net/fp/clear.png?org_id=<org ID>&amp;session_id=<merchant id><session ID>&amp;m=1)"></p> <img src="https://h.online-metrix.net/fp/clear.png?org_id=<org ID>&amp;session_ id=<merchant id><session ID>&amp;m=2" alt="">   

Flash Code

<object type="application/x-shockwave-flash" data="https://h.online-metrix.net/fp/ fp.swf?org_id=<org ID>&amp;session_id=<merchant id><session ID>" width="1" height="1" id="thm_fp"> <param name="movie" value="https://h.online-metrix.net/fp/fp.swf?org_id=<org ID>&amp;session_id=<merchant id><session ID>" /> <div></div> </object>  

JavaScript Code

<script src="https://h.online-metrix.net/fp/check.js?org_id=<org ID>&amp;session_ id=<merchant id><session ID>" type="text/javascript"> </script>  


Parameter 

Data Type 

Description 

Org ID 

AN 

Will be supplied by iVeri Payment Technologies Ltd to the merchant. 

Session ID 

AN 

The session ID is a string variable (letters and numbers only) that must be unique for each merchant ID. Any string that are already generating, such as an order number or Web session ID. However, do not use the same uppercase and lowercase letters to indicate different session IDs. 

This is the same value that must be send to iVeri in the DeviceFingerprintID field. 

Merchant id 

AN 

Will be supplied by iVeri Payment Technologies Ltd to the merchant. 


Coding for CyberSource data 


The following is a code snippet in C#:

enterprise.openElement("CyberSource"); 

enterprise.setTag("DeliveryMethod", Virtual); 

enterprise.setTag("DeviceFingerprintID", sessionId); 

enterprise.setTag("BillTo_FirstName", billTo_FirstName); 

enterprise.setTag("BillTo_LastName", billTo_LastName); 

enterprise.setTag("BillTo_Street", billTo_Street); 

enterprise.setTag("BillTo_City", billTo_City); 

enterprise.setTag("BillTo_Country", billTo_Country); 

enterprise.setTag("BillTo_Email", billTo_Email); 

enterprise.setTag("BillTo_IPAddress", billTo_IPAddress); 

enterprise.closeElement(); 

 

Authenticated Collections

 

Authenticated collections are intended to enable a merchant who wants to make regular direct debits to a customer’s account to authenticate the customer.   


This has two benefits: 

  • The merchant has proved that the customer has consented to these regular debits 
  • The customer has verified themselves by way of a pin validation so there is a higher level of comfort that the customer's account is a valid account and does belong to the customer. 

Authenticated Collections is currently only available from Nedbank. In addition, the Authenticated Collections provider parameter must be enabled otherwise the transaction will be declined. 


Coding for Authenticated Collection data 


The following is a code snippet in C#:

 

enterprise.openElement("AuthenticatedCollectionData"); 

enterprise.setTag("AccountNumber", accountNumber); 

enterprise.setTag("DebtorIdentification", debtorIdentification); 

enterprise.setTag("MaximumCollectionAmount", maximumCollectionAmount); 

enterprise.closeElement(); 

 

Note:  That MerchantReference must be set for Authenticated Collections AND the transaction must be PIN authenticated card present. The MerchantReference is used as the contract reference. An AuthorisationCode is returned if successful.