- KnowSystem
- Additional Data Transactions
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>&session_id=<merchant id><session ID>&m=1)"></p> <img src="https://h.online-metrix.net/fp/clear.png?org_id=<org ID>&session_ id=<merchant id><session ID>&m=2" alt="">
Flash Code
<object type="application/x-shockwave-flash" data="https://h.online-metrix.net/fp/ fp.swf?org_id=<org ID>&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>&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>&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.