# TransactionResponseData

A model the API reference uses in a request or a response. The operation pages link every field typed as this model here.

Represents the response data for a transaction, containing various details about the transaction outcome.

## Fields
- `cardValidationData` ([CardValidationData](https://devportal.signapay-sbx.winkpg.io/docs/api/models/CardValidationData.md)): The card validation data associated with the transaction.
  Fields:
  - `avsResponse` (string): The Address Verification System (AVS) response code. (nullable)
  - `cvResponse` (string): The Card Verification (CV) response code. (nullable)
  - `avsResponseText` (string): The textual description of the AVS response. (nullable)
  - `cvResultText` (string): The textual description of the CV result. (nullable)
  - `streetMatchText` (string): The textual description of the street address match result. (nullable)
  - `zipMatchText` (string): The textual description of the ZIP/postal code match result. (nullable)
- `resultCode` ([ResultCode](https://devportal.signapay-sbx.winkpg.io/docs/api/models/ResultCode.md)): The result code of the transaction. Defaults to ResultCode.Undefined.
  Values:
  - `Ok`: Indicates a successful operation.
  - `UserAuthenticationFailed`: Indicates that user authentication has failed.
  - `InvalidTransaction`: Indicates that the transaction is invalid.
  - `InvalidTransactionType`: Indicates that the transaction type is invalid.
  - `InvalidAmount`: Indicates that the amount specified in the transaction is invalid.
  - `InvalidMerchantInfo`: Indicates that the merchant information provided is invalid.
  - `InvalidRegisterInfo`: Indicates that the register information provided is invalid.
  - `FieldFormatError`: Indicates an error in the format of a field.
  - `NotATransactionServer`: Indicates that the server is not a transaction server.
  - `InvalidParameterStream`: Indicates that the parameter stream is invalid.
  - `TooManyLineItems`: Indicates that there are too many line items in the transaction.
  - `ClientTimeoutWaitingForResponse`: Indicates that the client timed out while waiting for a response.
  - `Decline`: Indicates that the transaction was declined.
  - `Referral`: Indicates that the transaction requires a referral.
  - `TransactionTypeNotSupportedInThisVersion`: Indicates that the transaction type is not supported in the current version.
  - `Partial`: Indicates a partial completion of the transaction.
  - `DuplicateBatchProcessed`: Indicates that a duplicate batch has been processed.
  - `IndeterminateBatchState`: Indicates that the batch state is indeterminate.
  - `Reject`: Indicates that the transaction was rejected.
  - `OriginalTransactionIdNotFound`: Indicates that the original transaction ID was not found.
  - `CustomerReferenceNumberNotFound`: Indicates that the customer reference number was not found.
  - `AccountNumberTruncated`: Indicates that the account number was truncated.
  - `InvalidAbaNumber`: Indicates that the ABA (American Bankers Association) number is invalid.
  - `InvalidAccountNumber`: Indicates that the account number is invalid.
  - `InvalidExpirationDate`: Indicates that the expiration date is invalid.
  - `TransactionTypeNotSupportedByHost`: Indicates that the transaction type is not supported by the host.
  - `InvalidReferenceNumber`: Indicates that the reference number is invalid.
  - `InvalidReceiptInformation`: Indicates that the receipt information is invalid.
  - `InvalidCheckHolderName`: Indicates that the check holder name is invalid.
  - `InvalidCheckNumber`: Indicates that the check number is invalid.
  - `CheckDlVerificationRequiresDlState`: Indicates that check DL verification requires a DL state.
  - `PaymentTypesDoNotMatch`: Indicates that the payment types do not match.
  - `InvalidVNumber`: Indicates that the V number is invalid.
  - `Submit`: Indicates that the transaction should be submitted.
  - `Pend`: Indicates that the transaction is pending: nothing was created and nothing went wrong, the outcome is simply not final yet.
  - `InsufficientFundsAvailable`: Indicates that there are insufficient funds available for the transaction.
  - `GeneralError`: Indicates a general error has occurred.
  - `TimeoutValueTooSmall`: Indicates that the timeout value is too small.
  - `ProcessorNotAvailable`: Indicates that the processor is not available.
  - `ErrorReadingResponseFromHost`: Indicates an error occurred while reading the response from the host.
  - `TimeoutWaitingForProcessorResponse`: Indicates a timeout occurred while waiting for the processor response.
  - `CreditError`: Indicates a credit error has occurred.
  - `HostNotAvailable`: Indicates that the host is not available.
  - `DuplicateSuppressionTimeout`: Indicates a timeout occurred during duplicate suppression.
  - `VoidError`: Indicates an error occurred during a void operation.
  - `TimeoutWaitingForHostResponse`: Indicates a timeout occurred while waiting for the host response.
  - `DuplicateTransaction`: Indicates that the transaction is a duplicate.
  - `CaptureError`: Indicates an error occurred during capture.
  - `FailedAvsCheck`: Indicates that the AVS (Address Verification System) check failed.
  - `CannotExceedSalesCap`: Indicates that the transaction cannot exceed the sales cap.
  - `NetworkNotFound`: Indicates that the network was not found.
  - `ReversalError`: Indicates an error occurred during reversal.
  - `InvalidIssuer`: Indicates that the issuer is invalid.
  - `InvalidIndustry`: Indicates that the industry is invalid.
  - `InvalidCompliance`: Indicates that the compliance is invalid.
  - `RegisterNotAuthenticated`: Indicates that the register is not authenticated.
  - `RegisterAuthenticationFailed`: Indicates that register authentication failed.
  - `RegisterAlreadyAuthenticated`: Indicates that the register is already authenticated.
  - `ProcessorNotConfigured`: Indicates that no active processor profile is configured for the transaction's payment method. This is a merchant configuration issue, not a communications failure.
  - `PinDebitNotSupportedOnCreditBin`: Indicates that the request carried PIN data while the resolved BIN funding source is Credit. A credit BIN cannot take a PIN debit authorization, so the request contradicts itself rather than merely being underspecified, and the gateway rejects it before the processor sees it.
  - `CardNotAcceptedByMerchantPolicy`: Indicates that the merchant's card acceptance policy refuses this card. The card was judged from its BIN by funding source, issued entity and issuer country, and one of those axes is one the merchant has configured itself not to take.
  - `ThreeDSecureAuthenticationRequired`: Indicates that the merchant requires 3-D Secure authentication on this kind of transaction and the transaction arrived without a usable authentication: none ran, the issuer did not authenticate the cardholder, or the result the pipeline was handed failed validation.
  - `CashAmountExceedsMerchantPolicy`: Indicates that a cash sale is above the largest cash sale the merchant's cash policy allows.
  - `CashRegisterRequiredByMerchantPolicy`: Indicates that a cash sale names no register (till) and the merchant's cash policy requires one.
  - `CashSourceNotAllowedByMerchantPolicy`: Indicates that a cash sale came from a source other than the Virtual Terminal and the merchant's cash policy takes cash at the Virtual Terminal only.
  - `GenericHostError`: Indicates a generic host error.
  - `InvalidLogin`: Indicates that the login is invalid.
  - `InsufficientPrivilege`: Indicates insufficient privileges for the operation.
  - `InvalidLoginBlocked`: Indicates that the invalid login has been blocked.
  - `InvalidLoginDeactivated`: Indicates that the invalid login has been deactivated.
  - `TransactionTypeNotAllowed`: Indicates that the transaction type is not allowed.
  - `UnsupportedProcessor`: Indicates that the processor is not supported.
  - `InvalidRequestMsg`: Indicates that the request message is invalid.
  - `InvalidVersion`: Indicates that the version is invalid.
  - `PaymentTypeNotSupported`: Indicates that the payment type is not supported.
  - `ErrorStartingTransaction`: Indicates an error occurred while starting the transaction.
  - `ErrorFinishingTransaction`: Indicates an error occurred while finishing the transaction.
  - `ErrorCheckingDuplicate`: Indicates an error occurred while checking for duplicates.
  - `NoRecordsToSettle`: Indicates that there are no records to settle.
  - `NoRecordsToProcess`: Indicates that there are no records to process.
  - `MustSettleAllPaymentTypes`: Indicates that all payment types must be settled.
  - `InvalidPoNumber`: Indicates that the PO (Purchase Order) number is invalid.
  - `FraudControlDecline`: Indicates a fraud control decline.
  - `FraudControlAuthAndHold`: Indicates a fraud control authorization and hold.
  - `FraudControlNoAuthAndHold`: Indicates a fraud control with no authorization and hold.
  - `FraudControlAudit`: Indicates a fraud control audit.
  - `PolicyRejected`: The transaction was rejected by the merchant's own address verification (AVS) or security code (CVV) policy rather than by the issuer. Not an error: the request was answered, and the answer is on the transaction. responseData.declineReasonCode says which of two shapes it took, using the published decline reason vocabulary (/docs/decline-reason-codes on the developer portal): CV_REJECTED when the processor approved and the platform then released the hold with a reversal or void, and CV_NATIVE_DECLINE when the processor applied the rule itself and declined outright, so no hold was ever placed.
  - `Undefined`: Indicates an undefined or unspecified result.
- `resultMessage` (string): The result message of the transaction. For successful (Ok) transactions this is normalized against a case-insensitive allow-list of canonical approved messages ("Approved", "Card OK", "Partial Approval"); when the trimmed processor text matches the allow-list its original casing is preserved, otherwise the message is rewritten to "Approved" so the UI/transaction explorer does not surface processor-specific AVS/CVV chatter (e.g. TSYS host text like "NO MATCH") as if it were a transaction-level outcome. For non-Ok results the trimmed processor text passes through verbatim so decline/error reasons remain actionable. The processor's original message (leading/trailing whitespace trimmed but otherwise untouched) is preserved on `originalProcessorMessage` for audit/diagnostics. (nullable)
- `originalProcessorMessage` (string): The processor's result text as returned by the processor handler, prior to approved-message normalization. Trimmed of leading/trailing whitespace but otherwise unmodified: preserves processor context (e.g. "APPROVED - {host text}", "NO MATCH") that `resultMessage` may have collapsed to a generic "Approved" for UI consumption. Null when the processor supplied no text or only whitespace. (nullable)
- `debitTraceNumber` (string): The debit trace number for the transaction. (nullable)
- `resultDetail` (string): Gets or sets additional details about the transaction result. (nullable)
- `authorizationCode` (string): The authorization code for the transaction. (nullable)
- `responseDate` (string(date-time)): The date and time when the response was received. (nullable)
- `authorizingNetworkId` (string): Identifies <b>which network authorized</b> the transaction, as the processor labelled it. A short code from the processor's own vocabulary (Fiserv sends one to three alphanumerics; Paymentech sends a name-like token such as "VISA"), constant across every transaction that routed the same way. It is not a per-transaction identifier: to match a single authorization back to the network, read `networkReferenceId` instead. Fiserv sends this and `authorizingNetworkName`; Paymentech sends this alone. Null when the processor supplied no network identification. (nullable)
- `authorizingNetworkName` (string): The authorizing network's name, when the processor sends one alongside `authorizingNetworkId`. Fiserv sends it; Paymentech sends no name, so this stays null there. Like the id, it identifies the routing, not the transaction. (nullable)
- `routingIndicator` ([RoutingIndicator](https://devportal.signapay-sbx.winkpg.io/docs/api/models/RoutingIndicator.md)): The routing indicator for the transaction. (nullable)
  Values:
  - `ProcessedAsCredit`: Indicates that the transaction was processed as a credit transaction.
  - `ProcessedAsDebit`: Indicates that the transaction was processed as a debit transaction.
  - `ProcessedAsStarSignatureDebit`: Indicates that the transaction was processed as a Star Signature debit transaction.
- `customerSignatureRecommended` (boolean): Value indicating whether a customer signature is recommended.
- `processorResponseDetail` ([ProcessorResponseDetail](https://devportal.signapay-sbx.winkpg.io/docs/api/models/ProcessorResponseDetail.md)): Gets or sets detailed response information from the processor.
  Fields:
  - `result` (integer(int32)): Gets or sets the result code for the processing operation.
  - `resultText` (string): Gets or sets the textual result associated with this response detail. (nullable)
  - `approvalCode` (string): Gets or sets the approval code associated with the processor response. (nullable)
  - `hostReferenceNum` (string): Gets or sets the host reference number carried on this response detail. This copy is not the one to read: no processor rail populates it, because the whole `ProcessorResponseDetail` object is null on every processor response. The object is built only by the gateway's own non-processor response builders (the loopback card simulator, the loopback ACH simulator, the cash tender, and internal ACH account verification), and of those only the loopback ACH builder puts a value here: the ACH trace number it generated. The other three set the empty string. Read `responseData.hostReferenceNumber` instead, which is populated on every processor rail and carries the per-processor definition. (nullable)
  - `hostDate` (string): Gets or sets the host date associated with the processor response detail. (nullable)
  - `hostTime` (string): Gets or sets the host time associated with the processor response detail. (nullable)
  - `avsResponse` (string): Gets or sets the Address Verification Service (AVS) response code returned by the payment processor. (nullable)
  - `avsResponseText` (string): Gets or sets the Address Verification Service (AVS) response text returned by the payment processor. (nullable)
  - `cvResponse` (string): Gets or sets the CV response associated with this processor response detail. (nullable)
  - `cvResponseText` (string): Gets or sets the response text associated with the processor response detail. (nullable)
  - `isCommercialCard` (boolean): Gets or sets a value indicating whether the payment card is identified as a commercial card.
  - `extendedErrorData` (string): Gets or sets additional error data provided by the processor. (nullable)
- `associationResponseCode` ([AssociationResponseCode](https://devportal.signapay-sbx.winkpg.io/docs/api/models/AssociationResponseCode.md)): The association response code for the transaction. (nullable)
  Values:
  - `ExpiredCard`
  - `AccountUpgrade`
  - `PortfolioSale`
  - `Conversion`
  - `NewAccountInfoAvailable`
  - `AccountClosedFraudulent`
  - `RetryWith3ds`
  - `OverCreditLimit`
  - `InsufficientFunds`
- `responseCategoryCode` ([ResponseCategoryCode](https://devportal.signapay-sbx.winkpg.io/docs/api/models/ResponseCategoryCode.md)): The response category code for the transaction. (nullable)
  Values:
  - `IssuerNeverApproves`: Indicates that the issuer never approves this type of transaction.
  - `IssuerCannotApprove`: Indicates that the issuer cannot approve this transaction at this time.
  - `DataQualityRevalidate`: Indicates that the data quality needs to be revalidated.
- `cardIndicator` (string): The card indicator for the transaction. (nullable)
- `detailedProductId` (string): The detailed product ID associated with the transaction. (nullable)
- `clientIpAddress` (string): The client's IP address for the transaction. (nullable)
- `amounts` ([ResponseAmounts](https://devportal.signapay-sbx.winkpg.io/docs/api/models/ResponseAmounts.md)): The response amounts for the transaction.
  Fields:
  - `beginningBalance` (number(double)): The beginning balance of the account. (nullable)
  - `availableBalance` (number(double)): The available balance of the account. (nullable)
  - `cashback` (number(double)): The cashback amount for the transaction. (nullable)
  - `requested` (number(double)): The requested amount for the transaction. (nullable)
  - `preauthorized` (number(double)): The preauthorized amount for the transaction. (nullable)
  - `openToBuy` (number(double)): The open to buy amount. (nullable)
  - `ewicDiscount` (number(double)): The EWIC (Electronic Women, Infants, and Children) discount amount. (nullable)
  - `transactionFee` (number(double)): The transaction fee amount. (nullable)
  - `approved` (number(double)): The approved amount for the transaction. (nullable)
  - `balanceDue` (number(double)): The balance due after the transaction. (nullable)
- `settlementXmlData` (string): Settlement data received from the processor. The stored value is a masked sentinel (`"****"`) that indicates settlement data was received and processed, without exposing the original content. (nullable)
- `processorResponseCode` (string): Processor-specific response code (e.g., "00" for approved). (nullable)
- `processorTraceNumber` (string): Retrieval reference number / trace number from processor. (nullable)
- `networkReferenceId` (string): The <b>per-transaction</b> reference the card network assigned at authorization: the Visa Transaction Identifier, the Mastercard BankNet reference, or the equivalent on another network. It identifies this one authorization and is the value to quote when matching a single transaction back to the network or anchoring a stored-credential chain to it. Null when the processor returned no such reference.  It is not the name or code of the network that authorized: that is `authorizingNetworkId` and `authorizingNetworkName`. Fiserv and Paymentech return no per-transaction reference at all, so this is null on those rails. (nullable)
- `processorTransactionId` (string): Processor transaction identifier. (nullable)
- `transactionNumber` (string): Transaction number from processor. (nullable)
- `batchNumber` (string): Batch number from processor. (nullable)
- `authorizationSource` (string): Authorization source indicator. (nullable)
- `declineReasonCode` (string): Why the transaction did not go through, as one value from the platform's processor-agnostic decline reason vocabulary (for example `DO_NOT_HONOR`, `INSUFFICIENT_FUNDS`, `CV_REJECTED`). Populated on a declined, failed, or policy-rejected result and absent on an approval. The vocabulary is the same whichever processor handled the authorization: the processor's own code is on `processorResponseCode`. Every value, its meaning, and whether an authorization hold was placed and released, is published on the developer portal at `/docs/decline-reason-codes`. Branch on this field rather than on `declineReasonDescription`. (nullable)
- `declineReasonDescription` (string): A readable description of the decline that goes with `declineReasonCode`, in the processor's or the platform's own words (for example `Insufficient Funds`). Wording can change without notice; the stable value to branch on is `declineReasonCode`, whose vocabulary is published on the developer portal at `/docs/decline-reason-codes`. (nullable)
- `settlementAmount` (number(double)): Settlement amount from processor. (nullable)
- `settlementDate` (string(date-time)): Settlement date from processor. (nullable)
- `cardLevelResults` (string): Card level results (A/B/C for Visa/MC card levels). (nullable)
- `returnedAci` (string): The Returned ACI (Authorization Characteristics Indicator) the network echoed back on the authorization response, stored as the raw single-character code. It reports how the transaction actually qualified (for CPS and related programs), which can differ from the ACI the gateway requested. Meanings are processor-specific, so the friendly description is resolved at display time from the transaction's processor key via `ReturnedAciCatalog` rather than persisted here. Null when the processor returned no ACI (blank / space-filled) and on every non-card flow. Non-sensitive protocol metadata. (nullable)
- `posDataCode` (string): POS data code. (nullable)
- `validationCode` (string): Validation code from processor. (nullable)
- `additionalProcessorData` (object): Additional processor-specific response data, keyed by merchant-facing display label. Populated by the per-processor detail-extraction registry (`ProcessorDetailExtractionExecutor`) from the processor's settlement/detail aggregate at authorization time.  Every key is governed by the registry's PCI allowlist (`ProcessorDetailPciPolicy`), which is what makes this dictionary safe on all three surfaces it reaches: the merchant-facing transaction DTO, outbound webhook projection, and the transaction history `DetailsJson` copy of the `/ResponseData` patch. Card number, track, EMV, CVV, and expiration can never land here. Size is capped by `ProcessorDetailBudget` because the history copy duplicates this value per entry.  Not queryable: `/ResponseData/AdditionalProcessorData/*` is index-excluded. A field that needs server-side filtering or reporting must be promoted to a typed property instead. (nullable)
- `eci` (string): Electronic Commerce Indicator returned by the network, canonicalized by the processor's detail adapter (upper-cased, whitespace-trimmed, leading zeros preserved: `05` and `5` are distinct ECI values). Promoted to a typed property because it is network-defined, normalizable across processors, and used for interchange-qualification reporting. `null` when the processor returned none. (nullable)
- `entryDataSource` (string): Entry data source indicator describing how the card data reached the terminal (keyed, swiped, contactless, stored credential), canonicalized by the processor's detail adapter. Promoted because entry mode is semantically common across processors and drives downgrade/qualification analysis. `null` when the processor returned none. (nullable)
- `requestedAci` (string): Authorization Characteristics Indicator the gateway <em>requested</em> for this authorization, extracted from the processor's settlement/detail aggregate. Promoted to a typed, queryable property rather than left in `additionalProcessorData`, because dictionary values can never be queried server-side. `null` when the processor returned none.  <b>What a difference from `returnedAci` means depends on the processor.</b> On a processor whose requested value is an interchange qualification tier, a returned value differing from the requested one means the transaction downgraded to a costlier tier. On Fiserv it does not: the requested value there is a participation request drawn from P, I, Y, R rather than a tier, and the gateway sends Y on every Visa credit authorization and sale, so a requested Y against a returned A, E or W is the normal qualified outcome. On that rail the not-qualified signal is a returned N or T. Read the pair per processor; a single cross-processor comparison rule would report Fiserv downgrades that did not happen. (nullable)
- `effectiveCardholderPresence` ([CardholderPresence](https://devportal.signapay-sbx.winkpg.io/docs/api/models/CardholderPresence.md)): The cardholder presence the gateway used when it built this processor call: the declared presence when the request carried one, otherwise the value the gateway inferred from the initiation type, the transaction source and the card entry mode. Recorded with the processor response so that the response to the call that created the transaction can report it. `null` when the call was made without a classification. The transaction's top-level `effectiveCardholderPresence` reports the value recorded when the transaction was authorized and is the one to read. (nullable)
  Values:
  - `Unknown`: Presence not specified by the request. Handlers fall back to entry-mode and industry-type inference, then to the legacy default for the merchant's profile.
  - `CardPresent`: Cardholder physically present at the point of sale (retail/in-store flow).
  - `MOTO`: Mail-order / telephone-order: cardholder not present and the merchant captured the account number through a non-electronic channel (fax, phone, paper form).
  - `ECommerce`: E-commerce: cardholder not present and the transaction was originated through a website, mobile application, or other electronic channel.
  - `Recurring`: Recurring / subscription: cardholder is not contemporaneously present; the merchant is charging a stored credential against a prior cardholder authorization.
- `hostReferenceNumber` (string): An opaque, processor-assigned reference for this transaction that the gateway quotes back to the same processor on a follow-up operation. Which processor identifier it holds depends on the processor, and on TSYS on the product path as well, so neither its format nor its meaning is stable across processors. It is not a retrieval reference number on every processor, it is not an acquirer reference number, and it is not a network reference: an integrator wanting a standard identifier should read `processorTraceNumber` (the retrieval reference / trace number) or `networkReferenceId` (the network transaction reference) instead of this property. Per processor: on Fiserv it is the authorization network trace id, and the same value is also reported in `processorTraceNumber`, so the two are equal. On Paymentech it is the host retrieval reference number, which is likewise also reported in `processorTraceNumber`. On TSYS it is the host transaction id for ecommerce, retail, retail card-not-present, EMV retail, healthcare, non-EMV PIN debit and the partially approved EBT branch, and the retrieval reference number for the approved EBT branch, for EMV PIN debit and on the reversal path. On MagTek DAF it is the Magensa transaction id. On VeriCheck and VeriCheck v2 it is the provider's payment uuid. On the loopback simulator it is `null`. (nullable)
- `achTraceNumber` (string): NACHA-format ACH trace number echoed back by the ACH processor (15 characters: 8-digit Originating Depository Financial Institution identifier + 7-digit sequence). Stable for the logical transaction lifecycle: capture, refund, reversal, and return responses repeat the trace assigned at authorization so downstream consumers can correlate the lifecycle to a single ACH entry. Null on card flows. (nullable)
- `nachaReturnCode` (string): NACHA return code (e.g. `R01`, `R02`, `R10`) when the ACH transaction was returned by the receiving bank. `null` on approved/pending entries and on all card flows. The full canonical list is R01 through R85 per the NACHA Operating Rules. (nullable)
- `nachaReturnReason` (string): Human-readable reason text paired with `nachaReturnCode` (for example "Insufficient Funds" for R01, "Account Closed" for R02). Surfaced verbatim in the audit log and transaction explorer to spare consumers from maintaining their own code-to-reason mapping. Null when `nachaReturnCode` is null. (nullable)
- `effectiveEntryDate` (string(date)): The effective entry date the ACH entry will post to the receiving account, in the originator's local processing window. After the daily NACHA cutoff this rolls forward to the next banking day. Null on card flows. (nullable)
- `originatingDfi` (string): ABA routing number of the Originating Depository Financial Institution that transmitted the entry on behalf of the gateway/merchant. Null on card flows. (nullable)
- `secCode` (string): Standard Entry Class code echoed from the request: for example `PPD`, `CCD`, `WEB`, `TEL`, `ARC`. Mirrors `secCode` as a string so the response shape matches raw NACHA carrier fields rather than the gateway's enum representation. Null on card flows. (nullable)
- `micrEcho` (string): Verbatim echo of the inbound MICR line when the request carried check-image data (POP, ARC, BOC). Null for non-image ACH flows (PPD, CCD, WEB, TEL) and on all card flows. (nullable)
- `tokenResult` ([TransactionTokenResult](https://devportal.signapay-sbx.winkpg.io/docs/api/models/TransactionTokenResult.md)): When the card on this transaction was vaulted (HPP / VT save-card-on-payment), the  merchant-facing token the gateway generated, so it can be retrieved from the  transaction response / HPP callback / webhook and charged later. `null` when the  card was not tokenized. Server-produced; never accepted on a create request. The  internal vault id is on `Transaction.PaymentTokenId` and is not emitted here. .
  Fields:
  - `numericToken` (integer(int64)): The numeric token identifier. (nullable)
  - `cardFormatToken` (string): The card-format token identifier. (nullable)
  - `publicReference` (string): Stable, URL-safe opaque external reference for the token. This is the identifier surfaced in the transaction-completed event and the HPP postMessage envelope for integrators to correlate the saved credential: never the internal vault Guid (PAN-correlated). (nullable)
- `processorTokenId` (string): Reusable processor token captured from the processor at authorization time (TSYS wire path first). Populated only on a successful tokenizing auth: an auth the gateway gated on (SaveCardRequested AND the routed processor advertises tokenization AND the merchant preference), otherwise `null`.  This identifier is PAN-correlating. It is encrypted at rest, is never returned on the merchant-facing transaction, and is never included in an outbound webhook. (nullable)
- `processorTokenStatus` (string): The processor's status for the token minted on this auth (e.g. active / provisioned). Non-sensitive processor metadata; `null` on non-tokenizing auths. (nullable)
- `tokenRequestorId` (string): The network Token Requestor ID the token was minted under, echoed back by the processor. Non-sensitive scheme/config identifier; `null` when not applicable. (nullable)
- `processorTokenProfileId` (string(uuid)): The processor profile id the token was minted under, so a later stored-credential charge can be routed through the same processor profile. `null` on non-tokenizing auths. (nullable)
- `isPartialApproval` (boolean): Whether the issuer approved less than the amount requested (a partial approval). `amounts.requested` and `amounts.approved` give the two amounts, and `amounts.balanceDue` the shortfall. Absent when the issuer approved the full amount. (nullable)
- `emv` ([EmvIssuerResponseData](https://devportal.signapay-sbx.winkpg.io/docs/api/models/EmvIssuerResponseData.md)): The issuer's EMV response to an online chip authorization: issuer authentication data (tag `91`), issuer scripts (tags `71` and `72`), the authorization response code (tag `8A`), and the complete response as returned, all as hexadecimal. A terminal passes these to the card to complete the transaction, on an approval and on a decline alike.
  Fields:
  - `issuerAuthenticationData` (string): Issuer authentication data, EMV tag `91`: the value only, as hexadecimal. The terminal passes it to the card so the card can authenticate the issuer's response. Null when the issuer returned none. (nullable)
  - `issuerScriptTemplate1` (string): Issuer script template 1, EMV tag `71`: every template of this kind the issuer returned, each with its tag and length, concatenated in the order received, as hexadecimal. The terminal runs these scripts before the final GENERATE AC. Null when the issuer returned none. (nullable)
  - `issuerScriptTemplate2` (string): Issuer script template 2, EMV tag `72`: every template of this kind the issuer returned, each with its tag and length, concatenated in the order received, as hexadecimal. The terminal runs these scripts after the final GENERATE AC. Null when the issuer returned none. (nullable)
  - `authorizationResponseCode` (string): Authorization response code, EMV tag `8A`: the value only, as hexadecimal (two ASCII characters, so an approval reads `3030`). Null when the processor didn't return the tag. (nullable)
  - `rawTlv` (string): The complete EMV response data the processor returned, as hexadecimal TLV. It includes the tags above and any other tag the processor sent. (nullable)
- `cardholderPresenceProfileMismatch` (boolean): Whether the cardholder presence the charge request declared differs from the channel the merchant's processor profile sends. `true` means the processor received the profile's channel, not the declared one: for example, a charge declared `MOTO` on a profile set up for electronic commerce went to the processor as an electronic commerce transaction. `false` means the two agree. (nullable)

## See also

- [All documentation](https://devportal.signapay-sbx.winkpg.io/llms.txt): the machine-readable index of every public page on this site.
