# Field Definitions

## account\_no

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | -          |

The account number, used for bank transfers.

## address

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 255        |

The customers address. e.g. 123 Customer Street.

## affiliateid

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 30         |

Used in special cases.&#x20;

## amount

| data type | min length | max length |
| --------- | ---------- | ---------- |
| decimal   | 0          | 9          |

The amount processed in the system for this transaction against this sid.

## amount\_coupon

| data type | min length | max length |
| --------- | ---------- | ---------- |
| decimal   | 0          | 9          |

Any discounts that you want recorded in the system, this . This will be deducted from the total of the transaction. Refer to [amounttotal ](#amounttotal)for calculation details.

## amount\_shipping

| data type | min length | max length |
| --------- | ---------- | ---------- |
| decimal   | 0          | 9          |

Any amount being charged for shipping, that you want recorded in the system. This will be added to the total of the transaction. Refer to [amounttotal ](#amounttotal)for calculation details.

## amount\_tax

| data type | min length | max length |
| --------- | ---------- | ---------- |
| decimal   | 0          | 9          |

Any amount of tax being charged that you want recorded in the system. This will be added to the transaction. Refer to [amounttotal ](#amounttotal)for calculation details.

## Amounttotal

| data type | min length | max length |
| --------- | ---------- | ---------- |
| decimal   | 0          | -          |

The amounttotal field is the calculated total of the transaction based on all information sent in, the total value of the cart items, shipping, tax minus any coupon amount.

The amounttotal is always used displaying any all minor units. \
e.g.\
USD$17  is used as 17.00 \
JPY¥17 is used as 17&#x20;

Calculating the amounttotal follows this pseudocode:&#x20;

```
amounttotal = 0;

for each item in the cart {
    amounttotal = amounttotal + ( item.quantity * item.amount_unit);
}

amounttotal = amounttotal + (amount_shipping + amount_tax - amount_coupon);
```

## campaignid

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | -          |

This is a campaign code as provided by the associated affiliate system. Only use if information is provided.

## card\_ccv

| data type | min length | max length |
| --------- | ---------- | ---------- |
| integer   | 3          | 6          |

The  security code on the customers cards. Also known as, CCV, CVV, CVC and CSC. This is not the Card PIN.&#x20;

## card\_exp\_month

| data type | min length | max length |
| --------- | ---------- | ---------- |
| integer   | 2          | 2          |

The expiry month for the customers card. Should be 0 filled. \
e.g. 1 (January) should be sent as 01. 2 should be sent as 02.

## card\_exp\_year

| data type | min length | max length |
| --------- | ---------- | ---------- |
| integer   | 2          | 2          |

The expiry year for the customers card. Should be 0 filled.  And is only 2 digits long.\
e.g. 2001 should be 01. 2022 should be 22..

## card\_no

| data type | min length | max length |
| --------- | ---------- | ---------- |
| integer   | 13         | 20         |

Also known as the PAN. This is the full credit card number. It should **not** have any punctuation or separators when sent. The system will not filter for any punctuation or separators and will just fail the transaction.

## card\_type

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 255        |

This is the payment method. It should be indicative of the payment type.&#x20;

e.g.&#x20;

* visa
* &#x20;mastercard
* bank

They paymethod should be provided to you at onboarding time. The payment methods available for your sid can also be retrieved using the [rawfee ](https://docs.payshield.ai/transaction-processing/rest-api/site-sid-payments#soap-rawfeeapi.php)API.&#x20;

## country

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 3          | 3          |

The country code that belongs to the customers credit card. This should be the [Alpha 3 ISO 3166](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes) country code.&#x20;

## currency

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 3          | 3          |

The 3 Alpha character [ISO 4217 code ](https://en.wikipedia.org/wiki/ISO_4217)for the currency.

## descriptor

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 1          | 50         |

The name of the payment descriptor that was used on the SID to complete the payment.  This should be indicative of the Name / Title that will appear on the customers Bank Statement.

## email

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 150        |

The customers email address.

## error\_code

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | -          |

If the error is generated by TxProcess this is a 3 character integer number corresponding to our internal error code list.\
\
If created by an external system this can be of any length.

## error\_info

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | -          |

Where possible, an extended explanation of what caused the error / details about it.

## error\_msg

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | -          |

The raw error message generated.

## error\_sys

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | -          |

Where possible, the module that generated the error.

## error\_type

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | -          |

## firstname

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 100        |

The customers first name.

## Hash

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 32         | 32         |

The hash is a secure signature that is generated when you communicate with TxProcess.\
\
Every time you communicate with TxProcess and will create a Payment Record / Transaction in the system you will be required to create a hash to verify the contents of the transaction it self, and to complete your authentication with the system.

### Generating the Hash

The hash is the md5 of

* sid
* [timestamp](#timestamp)
* [amounttotal](#amounttotal)
* [currency](#currency)
* [rcode](#rcode)

i.e. `md5('22'.'1234568995265421'.'17.00'.'USD'.'222b6c')`

## institution\_number

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 3          | 3          |

Required for ACH transactions.

## item\_desc

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 255        |

A short text description of the item being purchase. \
e.g. A shiny Red Delicious

## item\_amount\_unit

| data type | min length | max length |
| --------- | ---------- | ---------- |
| decimal   | 0          | 9          |

The cost of the item, per each unit. This is used in the [amounttotal ](#amounttotal)calculation.\
If you are selling 1 bag of apples, then it's the price per bag.\
If you are charging for each individual apple, it's the price per apple.

## item\_name

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 255        |

The item name. E.g. Apple\_Red

## item\_no

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 255        |

The identification number  / stock number for the item.

## item\_quantity

| data type | min length | max length |
| --------- | ---------- | ---------- |
| integer   | 0          | 10         |

How many of the item was bought.  This is used in the [amounttotal ](#amounttotal)calculation.

## lastname

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 100        |

The customers lastname.

## mobile

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 25         |

The customers mobile number.

## parent\_txid

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 16         | 16         |

The parent transaction id of the transaction. If this transaction is part of a series of transactions (Asynchronous transactions for e.g.) this is the parent transaction id that can be used to link all transactions together.

## phone

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 25         |

The customers land line phone number. Not their mobile phone number. For mobile phone number see [mobile](#mobile).

## postcode

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 16         |

The postcode / zip code of the customer.

## postback\_url

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 255        |

The URL to POST data to, when a transaction type has finished, or receives an update. \
\
For e.g. if an transaction has a status of PENDING and a final status is determined, you should receive a postback notification of both states. First the PENDING state, and then when a final status is determined a second notification.\
\
Handling this endpoint on the merchants end is very important, particularly for Asynchronous transactions that will have no other way to communicate the final result to the merchant.

## rcode

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 40         |

The rcode will be provided to you at onboarding. The rcode should never be sent in as plain text with the payment data. It is the equivalent to your password and should never be accessible / viewable online.

## redirect\_url

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 255        |

A complete URL of the page that you want the customer redirected too, after the transaction has completed processing. They will be redirected with the data from the corresponding responses section.

## ref1

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 255        |

An extra reference field on top of the [tid ](#tid)field that the merchant can use to store a reference. Note, that this does not replace the tid.

## ref2

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 255        |

An extra reference field on top of the [tid ](#tid)field that the merchant can use to store a reference. Note, that this does not replace the tid.

## ref3

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 255        |

An extra reference field on top of the [tid ](#tid)field that the merchant can use to store a reference. Note, that this does not replace the tid.

## ref4

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 2048       |

An extra reference field on top of the [tid ](#tid)field that the merchant can use to store a reference. Note, that this does not replace the tid.

## routing\_no

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 14         |

The routing or transit number, used for bank transfers.

## shipping\_address

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 255        |

The shipping address. e.g. 123 Customer Street.

## shipping\_country

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 3          | 3          |

The shipping country code. This should be the [Alpha 3 ISO 3166](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes) country code.&#x20;

## shipping\_firstname

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 100        |

The first name of the person receiving the parcel.

## shipping\_lastname

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 100        |

The first name of the person receiving the parcel.

## shipping\_postcode

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 16         |

The shipping postcode / zip code of the customer.

## shipping\_state

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 32         |

The shipping state for the transaction.

## shipping\_suburb\_city

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 60         |

The shipping suburb or city of the transaction.

## sid

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 11         |

The sid (Site ID) will be provided to you at onboarding.

## state

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 32         |

The customers billing state.

## status

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 10         |

The result of the transaction

## suburb\_city

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 60         |

The billing suburb or city of the customer.

## threeDSecure

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | -          |

Expects be a JSON object with a collection of ThreeDSecure(3DS) fields and their values. This is for the Authorization transaction, after a 3DS Authentication transaction has already occurred. To complete a 3DS Authentication, please contact support and they will help guide you for your specific integration. The particular fields and their naming can be different depending on how the Authentication is done, and the payment processor being used.

## tid

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 255        |

The txid (transaction id) that the system generated for this transaction.

## timestamp

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 10         | 10         |

The timestamp is to be a Unix timestamp&#x20;

## tx\_action

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 0          | 15         |

the transaction type. e.g. `PAYMENT` or `SETTLEMENT`

## txid

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 16         | 16         |

The transaction id for this transaction. If this is the first in a series of transactions, this could be the same as the [parent\_txid ](#parent_txid). If it is not the first, there will be a parent\_txid that will be used to group all of the series together.

## Vrfy

| data type | min length | max length |
| --------- | ---------- | ---------- |
| string    | 256        | 256        |

Some response form TxProcess, in particular in response to a call that generated a transaction, will return a vrfy field, so that you can validate the response hasn't been tampered with before receiving it. All the values except the rcode will be in the response returned. \
\
Note that the vrfy string in contrast to the hash string has a separator(;) in between the values.<br>

The vrfy is the sha256 of

* sid
* [rcode](#rcode)
* [txid](#txid)
* [status](#status)
* [amount](#amount)
* [currency](#currency)
* [tx\_action](#tx_action)\
  `sha256(sid;rcode;txid;status;amount;currency;txaction)`


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.payshield.ai/transaction-processing/integrations-and-apis/field-definitions.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
