2.3 Data Types

This section describes the data types used in both GetTransaction Messages and Cut_Off WSDL messages.

For information on fields in the EHI JSON message and their data type, see JSON Data Types and EHI Fields.

Data Type

Minimum Length

Maximum Length

Description

Examples

N(min,max)

min

max

Numeric digits only (‘0’ to ‘9’.)

Variable length of at least minimum digits up to a maximum of digits.

N(1,11) could contain any of:

1

0001

12345678901

N(3,3) could contain:

123

467

009

010

A(min,max)

min

max

Alpha characters: ‘a’-‘z’, ‘A’-Z’ only.

Variable length of at least minimum characters up to a maximum of characters.

A(1,11) could contain any of:

a

azBC

FFeRRtsD

A(3,3) could contain:

Abc

GBX

NzA

zzA

HEX(min,max)

min

max

Hexadecimal digits only, where letters are in upper case only.

i.e ‘0’ to ‘9’ and ‘A’-‘F’.

Note that ‘A’-‘F’ will only be in upper case.

Lower case ‘a’-‘f’ are not permitted.

 

Variable length of at least minimum hexdigits up to a maximum of hexdigits

HEX(1,11) could contain any of:

1

ABF34AD2

0001

ABC45678901

 

HEX(3,3) could contain:

000

FFF

01A

AN(min,max)

min

max

Alphanumeric characters only (‘0’ to ‘9’, ‘a’-‘z’ and ‘A’-‘Z’)

Variable length of at least minimum characters up to a maximum of characters

AN(1,11) could contain any of:

1

Abf34ZaD2

0001

ABC45678901

 

Decimal(3,3) could contain:

123

467

009

010

ANP(min,max)

min

max

Alpha-numeric and Pad (space) characters only.

i.e.’ ‘ (Space), ‘a’-‘z’, ‘A’-‘Z’, ‘0’-‘9’.

Variable length of at least minimum characters up to a maximum of characters

ANS(1,11) could contain any of:

A

0001

A B 00 5D

 

 

ANS(min,max)

min

max

Alphanumeric and Special Characters.

Variable length of at least minimum characters up to a maximum of characters

ANS(1,11) could contain any of:

A

0001

A B $ % & *

 

 

AmountUnsigned(a,f)

3

a+1+f

Numeric unsigned amount field, as a real number with ‘.’ as decimal separator. It cannot be negative.

(e.g., 123.4567)

Where:

a = maximum number of digits before decimal point

f = maximum number of digits after decimal point

Note: realtime authorisation message fields of type AmountUnsigned can contain numbers with up to four decimal places. Clearing message fields contain numbers with up to two decimal places; Thredd recommend supporting up to four decimal places to allow for future updates to the number of supported digits.

AmountUnsigned(19,4) field could contain:

12345.6780

99999.9999

1.001

1.0

6.72

AmountSigned (a,f)

3

1+a+1+f

Numeric signed amount field, as a real number with optional leading ‘-‘ (negative sign), with ‘.’ as decimal separator.

(e.g., -123.4567 or 0.09000)

Where:

‘-‘ = optional leading negative sign (ASCII code 45)

a = maximum number of digits before decimal point

‘.’ = decimal point  (ASCII code 46)

f = maximum number of digits after decimal point

Note: realtime authorisation message fields of type AmountSigned can contain numbers with up to four decimal places. Clearing message fields contain numbers with up to two decimal places; Thredd recommend supporting up to four decimal places to allow for future updates to the number of supported digits.

AmountSigned(19,4) field could contain:

 

12345.6780

-99999.999

-1.001

1.0

-6.72

Datetime (Y_to_nnn)

23

23

Date time field, Year (y) to millisecond (nnn).

Format “YYYY-MM-DD hh:mm:ss.nnn”

Where:

YYYY = 4 digit year 0001-9999

‘-‘ = literal ‘-‘ character (ASCII 0x2D)

MM = Month of year, 01 – 12

‘-‘ = literal ‘-‘ character (ASCII 0x2D)

DD = Day of month, 01-31

‘ ‘ = literal space character (ASCII 0x20)

hh = hour, 00 – 23

‘:’ = literal colon character (ASCII 0x3A)

mm = minute of hour, 00 – 59

‘:’ = literal colon character (ASCII 0x3A)

ss = second, 00-59

‘.’ = literal decimal point (ASCII 0x2E)

nnn = milliseconds, 000- 999

Examples:

2099-12-31 23:59:59.999

 

1872-01-01 00:00:00.000

 

Datetime(Y_to_ss)

19

19

Date time field, Year (Y) to second (ss).

Format “YYYY-MM-DD hh:mm:ss”

Where:

YYYY = 4 digit year 0001-9999

‘-‘ = literal ‘-‘ character (ASCII 0x2D)

MM = Month of year, 01 – 12

‘-‘ = literal ‘-‘ character (ASCII 0x2D)

DD = Day of month, 01-31

‘ ‘ = literal space character (ASCII 0x20)

hh = hour, 00 – 23

‘:’ = literal colon character (ASCII 0x3A)

mm = minute of hour, 00 – 59

‘:’ = literal colon character (ASCII 0x3A)

ss = second, 00-59

2099-12-31 23:59:59

 

1872-01-01 00:00:00

 

Datetime(Y_to_D)

10

10

Date time field, Year (y) to day (d).

Format “YYYY-MM-DD”

Where:

YYYY = 4 digit year 0001-9999

‘-‘ = literal ‘-‘ character (ASCII 0x2D)

MM = Month of year, 01 – 12

‘-‘ = literal ‘-‘ character (ASCII 0x2D)

DD = Day of month, 01-31

1999-12-31

DatetimeRaw(Y_to_D)

10

10

As Datetime (Y_to_D) but any of YYYY, MM or DD might contain invalid characters, such as space, letters or other.

If YYYY is generated by Thredd, it will be set to ‘0000’ if the month/day information it is based on does not represent a valid date.

1999-12-31

0000-00-00

0000-x#-99

0000-pp-pp   (where p indicates a space character)

Traceid

15

40

Thredd ‘traceid’ format:

“nnnn-YYYYMMDD-i”

Where:

nnnn = 4 character network id, identifying the originating network: (‘BNET’ = Mastercard Banknet, ‘VIS1’ = Visa Base 1)

‘-‘ = literal minus sign

YYYYMMDD = network trace date (YYYY=year), (MM=month of year, 01 to 12), (DD=day of month, 01 to 31)

‘-‘ = literal minus sign

i = network reference (alphanumeric, 1 to 26)

BNET-19991231-MCC1234XY

VIS1-19991231-489365567890123

 

TraceidRaw

15

40

As Traceid, except that the raw information received from the network will be passed as-is, without validation.

As a result of passing the raw information:

  • the date YYYYMMDD inside it might contain invalid characters such as spaces, or might be an invalid date such as ‘00000000’.

  • the network reference ‘i’ inside it might be invalid in whole or in part, including containing spaces.

If YYYY is generated by Thredd based on MMDD from the network, YYYY will be set to ‘0000’ if MMDD is not a valid date.)

If YYYYMMDD is generated by Thredd based on YDDD (last digit of year and day-of-year) from the network, YYYYMMDD will be set to ‘00000000’ if YDDD was not a valid date.

BNET-20191231-MCC999999

BNET-0000pppp-000000000   (where p is the space character)

VIS1-00000000-000000000000000

Rate

5

50

A conversion rate consisting of two parts separated by ‘:’ (colon.)

The RateDigits are provided separately so it is clear how many significant figures are in the rate value.

Format:

RateDigits:DecimalPointOffset

Format of each part:

RateDigits = N(1,10) format
DecimalPointOffset = N(1,2) format (values from 0 to 12 only).

 

Meaning of each part:

The rate value = RateDigits / 10DecimalPointOffet

Examples:

 

Rate

Decimal value

1234567:03

1234.567

123456:0

123456

1234567:12

0.000001234567

 

000001:12

1234567:0

1234567:1

1234567:2

1234567:03

1234567:6

1234567:7

1234567:8

123456:09

1234567:12

0:0

1:0

1000000:6

TLV10

14

999

A concatenation of many sets of the following:

 

Type

Format

Tag

AN(10,10)

Length

N(4,4)

Value

ANS(length,length)

 

Where:

Tag = 10 character identifier. For tag meanings, see Misc_TLV_Data Field.

Length = Length of the Value field (number of UTF-8 characters) as 4 decimal digits with leading zeros.

Value = Value (‘Length’ characters long.) Usage of non ASCII-7-bit characters will be kept to a minimum.

Notes:

Tags are not in any particular order. Tags may repeat if stated in the field description.

Tags might not all be defined in the specification – ignore any you do not recognise.

Value will only contain printable characters (no binary data.)

M1234567890001XM2222222220002YYTTTTTTTTTT0003abc

(the above means there are three items as follows:

Tag: “M123456789”

Value “X”

Tag: “M222222222”

Value: “YY”

Tag: “TTTTTTTTTT”

Value: “abc”)

DECIMAL (p,s)

1

p + s + 1

Numeric data type with fixed precision and scale.

  • Precision (p) is the maximum total number of decimal digits that can be stored, both to the left and to the right of the decimal point.

  • Scale (s) is the maximum number of decimal digits that can be stored to the right of the decimal point. Scale must be a value from 0 through p. Scale can be specified only if precision is specified. The default scale is 0; therefore, 0 <= s <= p. Maximum storage sizes vary, based on the precision.

Example:

If p=5 and s=2, then "12345.00" is the maximum. if p=5 and s=5, then "0.12345" is the maximum.

1234567890123456789

1234567890.123456789

 

An empty field is permitted when usage is ‘Optional’ even though the Data Type does not permit an empty value (min length = 0.)