> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vindicia.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Transaction Data Members

The following table describes the `Transaction` object data members.

**Note:** These data members are both input for the `[billTransactions](billTransactions)` call, and are returned with the `[fetchBillingResults](fetchBillingResults)` call.

When invoking `billTransactions` to report failed transactions to Retain, populate the `Transaction` object with the most current information available.

When Retain returns a processed `Transaction` object, it includes updated data member values.

For example: `billTransactions` is called with a `Transaction` object with `status = Failed`. After Retain completes processing, it returns a `Transaction` object with the following status values: `Status = Captured`, `Status = Failed` or `Status = Refunded`.

`fetchBillingResults` returns the final status of Retain processing. Note that the fields `authCode`, `avsCode`, and `timeStamp` contain responses from the payment processor.

| Data Member | Data Type | Description |
| - | - | - |
| `accountHolderName` | string | Name of the account holder as appears on the credit card. A free-form string of 255 or fewer characters. |
| `affiliateId` | string | Your unique identifier for the partner or affiliate who directed this transaction to you. To implement affiliate tracking, enter this attribute when reporting transactions to Vindicia Retain. |
| `affiliateSubId` | string | Your ID for the partner or sub-affiliate who directed this transaction to you. To implement sub-affiliate tracking, enter this attribute when reporting transactions to Vindicia Retain. |
| `amount` | decimal | **Required**. The amount of the transaction; must be a positive number. |
| `authCode` | string | **Required** when calling `billTransactions`: response code returned by the payment provider for the failed transaction. When provided by `fetchBillingResults`, the `authCode` of the payment provider. |
| `avsCode` | string | The AVS code returned by the payment processor for this transaction. To receive this code, enable AVS with the payment provider. The AVS response code returned by your payment provider. When reporting a transaction, if you receive the AVS code as a string along with its authorization code (i.e. Y:2341234234 or Y-2341234234), simply copy it into this field. If you receive the AVS code separate from its authorization code, concatenate them with a colon as a separator, as shown Y:2341234234. |
| `billingAddressCity` | string | The city of the customer address. |
| `billingAddressCountry` | string | The [ISO 3166-1 alpha-2 code](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes) for the country (for example, US, GB, or FR). |
| `billingAddressCounty` | string | The county of the customer address. |
| `billingAddressDistrict` | string | The district input for address such as a **state** or **province**. |
| `billingAddressLine1` | string | Customer address, first line. |
| `billingAddressLine2` | string | Customer address, second line. |
| `billingAddressLine3` | string | Customer address, third line. |
| `billingAddressPostalCode` | string | Customer address postal code.**Note:** Your payment provider may limit this field to 9 characters |
| `billingFrequency` | enum | The billing frequency. One of the following values can be used:- Non-recurring - Daily - Weekly - Monthly - Quarterly - Yearly |
| `billingStatementIdentifier` | string | String to display on customer billing statement when the transaction is captured. The format and value of this string depends on your payment provider. (This string can be used to override the default set by your payment provider. Work with Vindicia Client Services if you want to use this field.) |
| `creditCardAccount` | string | **Recommended** The credit card account number to use to charge this transaction. When calling the `reportTransactions` method, you need only provide a masked account that provides the 6 digit Bank Identifying Number (BIN), and the last 4 digits For example send account 4111111111111111 as 411111xxxxxx1111. When providing a masked account enter the SHA1 hash in the `creditCardAccountHash` field. If you use tokenization and your processor is Worldpay (formerly, Vantive or Litle) or Authorize.net, this field must contain the BIN, which is the first 6 digits of the card number. If you use tokenization and your processor is neither of the above, your Capture Rate may improve if you provide this value. |
| `creditCardAccountHash` | boolean | A SHA1 hash of the full account number. Any non-numeric characters should be removed prior to hashing. If the account number is provided, this can be left blank and the hash will be calculated and stored by Vindicia as a SHA512. For reference the SHA1 hash of 4111111111111111 is 68bfb396f35af3876fc509665b3dc23a0930aab1 If you use tokenization with your processor this field is optional. |
| `creditCardAccountUpdated` | boolean | Returned by Vindicia Retain, this data member indicates whether the Credit Card was updated. If Vindicia was able to retrieve an updated credit card through Account Updater, this field will be set to true, and the new account information will be returned in the `creditCardAccount` and `creditCardExpirationDate` fields. To enable this feature, work with Vindicia Client Services, and provide a valid PGP public key. You must also have completed an Attestation of Compliance (AOC) as a declaration of the results of the service provider's assessment with the Payment Card Industry Data Security Standards (PCI DSS). |
| `creditCardExpirationDate` | string | **Required** when using a credit card number, and not a tokenization. The `CreditCard` expiration date in YYYYMM format, where YYYY is the four-digit year and MM is the two-digit month. For example, the string for July 2007 is 200707. **Note:** No validation is performed to check that this date is in the future. **Optional** when using tokenization. |
| `currency` | string | **Required**. The ISO 4217 currency code for the transaction. See [ISO Currency List](https://www.xe.com/iso4217.php) |
| `customerId` | string | **Required**. A unique identifier for the customer associated with this transaction. |
| `cvnCode` | string | The CVN response code returned by your payment provider. When reporting a transaction, if you receive the CVN code as a string along with its authorization code (M:2341234234 or M-2341234234), simply copy it into this field. If you receive the CVN code separate from its authorization code, concatenate them with a colon as a separator, as such M:2341234234. |
| `divisionNumber` | string | **Required**. The division or group number your payment provider associates with this transaction. Chase Paymentech refers to this number as the Division ID; Litle calls it the Report Group; MeS calls it the Profile ID. **WorldPay Report Group**—A WorldPay transaction can also have a report group associated with it. This value must be conveyed in a name-value pair; see nameValues above. A WorldPay report group is not a division number. |
| `merchantTransactionId` | string | **Required**. A unique identifier for this Transaction. |
| `nameValues` | NameValuePair\[] | An array of name-value pairs, used to hold attribute values that are not otherwise contained in this object. Can be used to store custom data for your own internal tracking purposes. See [The NameValuePair Object](NameValuePair_Object). |
| `paymentMethodId` | string | **Required**. Your ID associated with the PaymentMethod for the transaction. **Note:** When this value is a token, the length (number of characters) must be within a range acceptable to your payment provider. For Worldpay, for example, limit this value to 25 characters. |
| `paymentMethodIsTokenized` | boolean | **Required**. If you use tokenization with your payment provider and have provided a token in the `paymentMethodId` field, then enter **1** (true). Otherwise enter **0**. The `creditCardAccount` and `creditCardExpirationDate` fields are optional; otherwise they are required. |
| `previousBillingCount` | integer | The number of times the customer has been successfully billed.**Note:** For merchants that have enabled Forced deposit, you can choose to avoid forced deposit of a specific Transaction (such as an initial Transaction on a new subscription) by setting this attribute value to **-1**. |
| `previousBillingDate` | dateTime | The date of the last successful billing associated with the subscription. |
| `selectTransactionId` | string | Read only. Returned by Vindicia Retain; this is the unique ID, assigned by Retain, used when billing the transaction after receiving a `[billTransactions](billTransactions)` call. |
| `status` | TransactionStatusType | **Required**. Defines the Transaction status upon reporting to Vindicia. This is a 255 byte string. For a list of possible values, see [TransactionStatusType Values](transactionstatustype_values). Typically this value is *Failed*. |
| `subscriptionId` | string | **Required**. Unique identifier of the subscription associated with this transaction. |
| `subscriptionStartDate` | dateTime | An ISO 8601 date with time indicating the date of the first successful billing associated with the subscription. If unspecified, the value defaults to today and the current time. See`timestamp` field below for Retain datetime handling rules. |
| `timestamp` | dateTime | **Required**. An ISO 8601 date with time specifying the date and time this transaction occurred. Be sure to include this attribute in submitted transactions. If not provided, `timestamp` defaults to the current time UTC. **Example**: '2022-03-07T00:00:00Z' is 6 March 2022, 4:00:00 PM in the US/Pacific timezone. **Note:** When omitted, the time zone designator defaults to UTC, that is, '2019-08-21T09:12:34' becomes US/Pacific, or '2019-08-21T09:12:34-07:00'. The -07:00 is the offset from UTC, for US/Pacific on this date. Note also that since the offset from UTC varies by locale-specific seasonal offsets, (US daylight savings or EU summer time, among other others) this value should not be hard coded but set programmatically when the time stamp is defined. |
| `VID` | string | The Vindicia Globally Unique Identifier (GUID) for this object. This field is created by Vindicia and is provided to serve as a unique ID for every transaction. The `merchantTransactionId` is generally used instead of the VID to identify a transaction. Do not specify this value when creating a new `Transaction` object. Vindicia Retain populates this field and returns it in `fetchBillingResults` calls. |

* **[TransactionStatusType Values](../topics/transactionstatustype_values)**

* **[TransactionValidationResponse Values](../topics/TransactionValidationResponse)**

**Parent topic:**[The Transaction Object](../topics/the_transaction_object)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.