# PaymentDetailSnapshot

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

## Fields
- `cardData` ([CardData](https://devportal.signapay-sbx.winkpg.io/docs/api/models/CardData.md)): Conditional: When CardData is not null.
  Fields:
  - `cardNumber` (string): The card account number. Conditional: When IsStoredPayment is not true. (nullable)
  - `last4CardNumber` (integer(int32)): The last 4 digits of the card number as an integer. (nullable, read only)
  - `expirationMonth` (integer(int32)): The expiration month of the card as an integer in the range `1` to `12`.
  - `expirationYear` (integer(int32)): The expiration year of the card. Either a two-digit year (e.g. `29`) or a four-digit year (e.g. `2029`); two-digit years resolve to the 2000s.
  - `expirationDate` (string(date-time)): The expiration date of the card. Conditional: When IsStoredPayment is not true. (nullable)
  - `binData` ([BinData](https://devportal.signapay-sbx.winkpg.io/docs/api/models/BinData.md)): The BIN (Bank Identification Number) data associated with the card.
  - `cvv` (integer(int32)): Deprecated: send `cardVerificationValue` instead. The CVV (Card Verification Value) of the card as an integer. Conditional: When IsStoredPayment is not true. Range: 100 to 9999. (nullable, deprecated)
  - `cardVerificationValue` (string): The card verification value (CVV, CVC or CID) exactly as printed on the card: three digits, or four for American Express. Send it as a string so a leading zero is kept. Conditional: When IsStoredPayment is not true. (nullable)
  - `nameOnCard` (string): The name on the card. Conditional: When IsStoredPayment is not true. Max length: 25. (nullable, min length 0, max length 25)
  - `pin` (string): The PIN (Personal Identification Number) of the card. (nullable)
  - `keySerialNumber` (string): The Key Serial Number associated with the card. (nullable)
  - `pinKeySerialNumber` (string): The DUKPT key serial number the reader encrypted the PIN block under, when it differs from `keySerialNumber`. (nullable, max length 24, pattern ^(?:[0-9A-Fa-f]{10,24})?$)
  - `emvData` (string): The EMV (Europay, Mastercard, and Visa) data associated with the card. (nullable)
  - `trackData` (string): The track data of the card. (nullable)
  - `encryptedTrack1Data` (string): The encrypted track 1 data of the card. (nullable)
  - `encryptedTrack2Data` (string): The encrypted track 2 data of the card. (nullable)
  - `encryptedTrack3Data` (string): The encrypted track 3 data of the card. (nullable)
  - `dynamicCardVerificationData` (string): A reader-generated dynamic card verification value captured at the moment the card was read. Card readers that support it derive this value from physical characteristics of the magnetic stripe, which differ between an original card and a copy, so the decryption service that fronts the processor can score whether the presented card is genuine. (nullable)
  - `dynamicCardVerificationStatus` (string): Status metadata the reader reported alongside `dynamicCardVerificationData` (for example whether the reader considered the dynamic verification read successful). Non-secret: it describes the read, it is not the verification value itself, so it is persisted as submitted. (nullable)
  - `iin` (string): The IIN (Issuer Identification Number) of the card. (nullable)
  - `arqc` (string): The ARQC (Authorization Request Cryptogram) of the card. (nullable)
  - `entryMode` ([EntryModes](https://devportal.signapay-sbx.winkpg.io/docs/api/models/EntryModes.md)): The entry mode of the card.
    Values:
    - `Unknown`: The entry mode is unknown.
    - `NotApplicable`: The entry mode is not applicable for this transaction.
    - `Manual`: The transaction details were entered manually.
    - `UnencryptedCardReaderSwipe`: The card was swiped through an unencrypted card reader.
    - `EncryptedCardReaderSwipe`: The card was swiped through an encrypted card reader.
    - `Icc`: The transaction was processed using an ICC (Integrated Circuit Card) or chip card.
    - `Proximity`: The transaction was processed using a proximity or contactless payment method.
    - `Fallback`: The transaction was processed using a fallback method when the primary method failed.
    - `TechnicalFallback`: The transaction was processed using a fallback method when the primary method failed.
    - `EmptyCandidateFallback`: The transaction was processed using a fallback method when the primary method failed.
    - `DigitalWallet`: The transaction was processed using a digital wallet.
  - `cvPresence` ([CvPresence](https://devportal.signapay-sbx.winkpg.io/docs/api/models/CvPresence.md)): The CV (Card Verification) presence status.
    Values:
    - `None`: The CV status is not specified or unknown.
    - `NotSubmitted`: The CV has not been submitted.
    - `Submitted`: The CV has been successfully submitted.
    - `Illegible`: The submitted CV is illegible or cannot be read.
    - `NotPresent`: The CV is not present or missing from the submission.
  - `billingAddress` ([Address](https://devportal.signapay-sbx.winkpg.io/docs/api/models/Address.md)): The billing address associated with the card. Optional by default (no nested validation enforced). Conditional: When IsStoredPayment is not true.
  - `phone` (string): The phone number associated with the card. Conditional: When IsStoredPayment is not true. Max length: 15. Pattern: ^[0-9+()\-\s]*$. (nullable, min length 0, max length 15)
  - `email` (string): The email address associated with the card. Conditional: When IsStoredPayment is not true. Must be a valid email. Max length: 50. (nullable, min length 0, max length 50)
  - `hasEmvData` (boolean): Indicates whether EMV data was provided in the original request. The raw `emvData` value is not stored. (nullable)
  - `hasTrackData` (boolean): Indicates whether track data was provided in the original request. The raw `trackData` value is not stored. (nullable)
  - `hasEncryptedTrackData` (boolean): Indicates whether any encrypted track data (track 1, 2, or 3) was provided in the original request. The raw encrypted track values are not stored. (nullable)
  - `hasCvv` (boolean): Indicates whether a CVV was provided in the original request, in either `cardVerificationValue` or `cvv`. The raw value is not stored. (nullable)
  - `hasPin` (boolean): Indicates whether a PIN was provided in the original request. The raw `pin` value is not stored. (nullable)
  - `hasDynamicCardVerificationData` (boolean): Indicates whether reader-generated dynamic card verification data was provided in the original request. The raw `dynamicCardVerificationData` value is not stored. (nullable)
  - `emvAid` (string): (nullable)
  - `isDebitRouting` (boolean): (nullable)
  - `tenderType` ([CardTenderType](https://devportal.signapay-sbx.winkpg.io/docs/api/models/CardTenderType.md)): The card-rail tender the caller is attempting to use. Drives deterministic processor routing. `null` (or absent JSON) is treated as `CreditDebit` for backward compatibility: see `EffectiveTenderType`. (nullable)
    Values:
    - `CreditDebit`: Standard credit/debit card. The current card-rail behaviour. isDebitRouting modulates whether the request prefers debit-network routing within this rail.
    - `EbtSnap`: EBT SNAP (food benefits). Routes through the EBT SNAP processor lane and requires PIN + card-present per program rules.
    - `EbtCash`: EBT Cash (cash benefits). Distinct rail from SNAP; supports cashback where SNAP does not. PIN + card-present required.
    - `Ewic`: eWIC (Women, Infants, and Children). Distinct rail from EBT, with item-level eligibility / voucher-select flow handled in the eWIC follow-up epic.
  - `isStoredPayment` (boolean): When `true`, this card data originates from a stored payment method and client-side field validation is not applicable. The server resolves actual card data from the payment token. (nullable)
  - `terminalCapability` ([TerminalCapability](https://devportal.signapay-sbx.winkpg.io/docs/api/models/TerminalCapability.md)): The static hardware capability of the terminal. Selects the POS capability subfields on the processor wire message. Resolved once in `ProcessorSelectionApplier`: request value wins over the processor-profile default, which wins over `Unspecified`. (nullable)
    Values:
    - `Unspecified`: No capability declared. The handler emits its current default POS capability fields, preserving existing wire behavior exactly.
    - `MagneticStripe`: Magnetic stripe reader only (implies keyed entry).
    - `MagneticStripeWithPin`: Magnetic stripe reader with PIN pad (implies keyed entry).
    - `Chip`: Contact chip reader (EMV ICC).
    - `ChipWithPin`: Contact chip reader with PIN pad.
    - `ChipContactless`: Contactless chip reader (EMV contactless / NFC).
    - `ChipContactlessWithPin`: Contactless chip reader with PIN pad.
  - `cryptogram` (string): The payment network cryptogram recovered from wallet-token decryption (the online payment cryptogram for Apple Pay / Google Pay DPAN transactions). Sensitive: masked from logs. (nullable)
  - `eciIndicator` (string): The Electronic Commerce Indicator (ECI) describing the authentication context of a tokenized / wallet transaction (e.g. `"05"` for a 3DS-authenticated transaction). Drives the liability-shift indicators processors include in the network message. (nullable)
  - `isTokenized` (boolean): Indicates the credential is a tokenized account number (DPAN / network token) rather than a raw PAN. `null` means unknown, which is treated the same as not tokenized. (nullable)
  - `tokenTransactionId` (string): The provider-specific transaction identifier returned alongside a wallet token (Apple Pay `transactionIdentifier`, network-token transaction id). Used for dispute matching against the wallet provider. (nullable)
- `checkData` ([CheckData](https://devportal.signapay-sbx.winkpg.io/docs/api/models/CheckData.md)): Conditional: When CheckData is not null.
  Fields:
  - `nameOnCheck` (string): The name printed on the check. Required: When IsStoredPayment is not true. (nullable)
  - `routingNumber` (string): The routing number of the bank. Required: When IsStoredPayment is not true. Conditional: When IsStoredPayment is true. (nullable)
  - `routingNumberLast4` (string): The last 4 digits of `routingNumber` as a string, preserving leading zeros, or `null` when no digits are available. (nullable, read only)
  - `accountNumber` (string): The account number associated with the check. Required: When IsStoredPayment is not true. Conditional: When IsStoredPayment is true. (nullable)
  - `accountNumberLast4` (string): The last 4 digits of `accountNumber` as a string, preserving leading zeros, or `null` when no digits are available. (nullable, read only)
  - `checkNumber` (string): The check number. (nullable)
  - `micr` (string): The Magnetic Ink Character Recognition (MICR) data. (nullable)
  - `driversLicense` (string): The driver's license number of the check writer. (nullable)
  - `state` (string): The state of issuance for the driver's license. (nullable)
  - `ssn` (string): The Social Security Number of the check writer. (nullable)
  - `dateOfBirth` (string): The date of birth of the check writer. (nullable)
  - `checkType` ([CheckType](https://devportal.signapay-sbx.winkpg.io/docs/api/models/CheckType.md)): The type of check.
    Values:
    - `Personal`: Represents a personal check. This is typically issued by an individual from their personal account.
    - `Business`: Represents a business check. This is typically issued by a company or organization from their business account.
  - `accountType` ([CheckAccountType](https://devportal.signapay-sbx.winkpg.io/docs/api/models/CheckAccountType.md)): The type of account associated with the check. Conditional: When IsStoredPayment is not true.
    Values:
    - `Checking`: Represents a checking account.
    - `Savings`: Represents a savings account.
  - `rawMicr` (string): The raw MICR data. (nullable)
  - `branchCity` (string): The city of the bank branch. (nullable)
  - `emailAddress` (string): The email address of the check writer. Conditional: When IsStoredPayment is not true. Must be a valid email. (nullable)
  - `telephoneNumber` (string): The telephone number of the check writer. Conditional: When IsStoredPayment is not true. Pattern: ^[0-9+()\-\s]*$. (nullable)
  - `address` ([Address](https://devportal.signapay-sbx.winkpg.io/docs/api/models/Address.md)): The address associated with the check. Optional by default (no nested validation enforced). Conditional: When IsStoredPayment is not true.
  - `secCode` ([SecCode](https://devportal.signapay-sbx.winkpg.io/docs/api/models/SecCode.md)): The Standard Entry Class (SEC) code for the transaction. (nullable)
    Values:
    - `Ccd`: Corporate Credit or Debit (CCD) - Used for business-to-business transactions.
    - `Ppd`: Prearranged Payment and Deposit (PPD) - Used for consumer transactions.
    - `Web`: Internet-Initiated/Mobile Entry (WEB) - Used for internet or mobile-initiated transactions.
    - `Arc`: Accounts Receivable Conversion (ARC) - Used for converting eligible checks to ACH debits.
    - `Tel`: Telephone-Initiated Entry (TEL) - Used for telephone-initiated transactions.
  - `isStoredPayment` (boolean): When `true`, this check data originates from a stored payment method and client-side field validation is not applicable. The server resolves actual account data from the payment token. (nullable)
- `tokenData` ([TokenData](https://devportal.signapay-sbx.winkpg.io/docs/api/models/TokenData.md)): Conditional: When TokenData is not null.
  Fields:
  - `token` (string): A secure token representing a stored payment method, charged in place of raw card data. Required: When ProviderType is null or ProviderType == Internal. (nullable)
  - `tokenSharing` (boolean): The sharing status of the token. (nullable)
  - `merchantOriginalId` (string(uuid)): The original merchant identifier associated with the token, typically used when token sharing is enabled. (nullable)
  - `providerType` ([TokenProviderType](https://devportal.signapay-sbx.winkpg.io/docs/api/models/TokenProviderType.md)): Specifies the provider that generated the token. Examples include Internal, ApplePay, GooglePay, NetworkToken, and ReaderToken. This value determines how the token should be processed. (nullable)
    Values:
    - `Internal`: Internal gateway token generated by WinkPG.
    - `ApplePay`: Apple Pay encrypted payment token.
    - `GooglePay`: Google Pay encrypted payment token.
    - `NetworkToken`: Network token such as Visa Token Service or Mastercard MDES.
    - `Paze`: Paze (Early Warning) encrypted payment token.
    - `ReaderToken`: A reusable card token issued by a card-reader decryption service, carried on readerToken.
  - `readerToken` (string): A reusable card token issued by a card-reader decryption service, charged in place of a physical card read. Required when `providerType` is `ReaderToken`, and ignored otherwise. Required: When ProviderType == ReaderToken. (nullable)
  - `encryptedPaymentToken` (string): The encrypted payment token payload received from a digital wallet provider (for example, Apple Pay or Google Pay). Required for digital wallet transactions. Required: When ProviderType == ApplePay or ProviderType == GooglePay or ProviderType == Paze. (nullable)
  - `network` (string): The payment network associated with the token (for example: Visa, Mastercard, Amex). Typically provided by digital wallet transactions. (nullable)
  - `displayName` (string): A display-friendly name for the payment method, (nullable)
  - `cryptogram` (string): The cryptographic value used for transaction authorization in digital wallet or network token transactions. Required for Apple Pay, Google Pay, and network token processing. Required: When ProviderType == NetworkToken. (nullable)
  - `eciIndicator` (string): The Electronic Commerce Indicator (ECI) that specifies the authentication level of the transaction. Commonly used in 3D Secure and digital wallet flows. (nullable)
  - `transactionIdentifier` (string): A unique identifier assigned by the wallet provider for the transaction. (nullable)
- `processorTokens` (array<[StoredProcessorToken](https://devportal.signapay-sbx.winkpg.io/docs/api/models/StoredProcessorToken.md)>): Processor-issued reusable tokens (e.g. TSYS `RequestToken`) captured at auth time and stored alongside the card. Keyed by processor + processor profile; a repeat sale prefers a matching token at the rail and falls back to the PAN. An empty list when no processor token is held. (nullable)
  Fields of each item:
  - `processorName` (string): The processor type key the token was minted under (for example `"tsys"`). Part of the token's selection key. (nullable)
  - `processorProfileId` (string(uuid)): The processor profile (acquirer credential set) the token was minted under. Part of the token's selection key; a token is only replayed against the same profile. (nullable)
  - `token` (string): The processor-issued token value. Encrypted at rest; never logged. (nullable)
  - `tokenStatus` ([StoredTokenStatus](https://devportal.signapay-sbx.winkpg.io/docs/api/models/StoredTokenStatus.md)): The token's lifecycle status as last known to the gateway. (nullable)
    Values:
    - `Active`: The token is active and may be replayed at the rail.
    - `Inactive`: The token is present but should not currently be used (for example the processor reported it inactive). Retained so it can be reactivated rather than re-minted.
    - `Invalidated`: The token has been invalidated or replaced and cannot be used.
  - `tokenRequestorId` (string): The token-requestor identifier associated with the token, when the processor supplies one. (nullable)
  - `createdAt` (string(date-time)): When the token was first captured and stored. (nullable)
  - `lastUsedAt` (string(date-time)): When the token was last replayed at the rail. `null` until first reuse. (nullable)
- `networkToken` ([StoredNetworkToken](https://devportal.signapay-sbx.winkpg.io/docs/api/models/StoredNetworkToken.md)): The network token (DPAN) provisioned for this payment method, when one exists. On a read it carries only non-sensitive metadata: state, network, token suffix, expiry and timestamps. The token number and the provider identifiers are never returned.
  Fields:
  - `tokenReference` (string): The network token (DPAN) reference value. Encrypted at rest; never logged. (nullable)
  - `tokenRequestorId` (string): The token-requestor identifier the network token was provisioned under. (nullable)
  - `tokenStatus` ([StoredTokenStatus](https://devportal.signapay-sbx.winkpg.io/docs/api/models/StoredTokenStatus.md)): The token's status as last known to the gateway, in the vocabulary shared with processor tokens. Kept in step with `lifecycleState` by `ApplyLifecycleState`. (nullable)
    Values:
    - `Active`: The token is active and may be replayed at the rail.
    - `Inactive`: The token is present but should not currently be used (for example the processor reported it inactive). Retained so it can be reactivated rather than re-minted.
    - `Invalidated`: The token has been invalidated or replaced and cannot be used.
  - `expiryMonth` (integer(int32)): The network token's expiry month (1 to 12), when provided by the token service. (nullable)
  - `expiryYear` (integer(int32)): The network token's expiry year, when provided by the token service. (nullable)
  - `createdAt` (string(date-time)): When the network token was provisioned and stored. (nullable)
  - `providerName` (string): The provider that holds the token, for example `cybersource`. (nullable)
  - `providerTokenReference` (string): The provider's identifier for the token. Encrypted at rest with deterministic encryption so an equality lookup still works; never logged and never returned on a read. (nullable)
  - `providerAccountId` (string): The provider account or organization the token was provisioned under. Retrieving or deleting the token must run under the same account. Never returned on a read. (nullable)
  - `environment` ([NetworkTokenEnvironment](https://devportal.signapay-sbx.winkpg.io/docs/api/models/NetworkTokenEnvironment.md)): The provider environment the token was provisioned in. Retrieving or deleting the token must run against the same environment. Null when the environment is not known. (nullable)
    Values:
    - `Sandbox`: The provider's sandbox (test) environment.
    - `Production`: The provider's production (live) environment.
  - `paymentAccountReference` (string): The network's payment account reference for the card. Encrypted at rest; never logged and never returned on a read. (nullable)
  - `cardNetwork` (string): The card network that issued the token, for example `Visa`. (nullable)
  - `tokenSuffix` (string): The last four digits of the token number. (nullable)
  - `lifecycleState` ([NetworkTokenLifecycleState](https://devportal.signapay-sbx.winkpg.io/docs/api/models/NetworkTokenLifecycleState.md)): The token's life-cycle state as last reported by the provider. (nullable)
    Values:
    - `Active`: The token is active and may be used.
    - `Suspended`: The token is suspended by the issuer or the network and must not be used for now.
    - `Deleted`: The token was deleted and can never be used again.
    - `Expired`: The token expired.
  - `cardSuffix` (string): The last four digits of the underlying card as last reported by the network. Can differ from the vaulted card after a reissue. (nullable)
  - `cardExpiryMonth` (integer(int32)): The underlying card's expiry month as last reported by the network. (nullable)
  - `cardExpiryYear` (integer(int32)): The underlying card's expiry year as last reported by the network. (nullable)
  - `underlyingCardChangedAt` (string(date-time)): When the provider last reported that the card behind the token changed. (nullable)
  - `lastLifecycleEventAt` (string(date-time)): When the provider observed the last life-cycle event applied to this token. Used to ignore a delayed notification that is older than the state already stored. (nullable)
  - `lastVerifiedAt` (string(date-time)): When the gateway last confirmed the token's state with the provider. (nullable)
  - `lastLifecycleReason` (string): The provider's reason code for the last life-cycle event. A code, never free text. (nullable)
- `paymentMethodType` ([TokenPaymentMethodType](https://devportal.signapay-sbx.winkpg.io/docs/api/models/TokenPaymentMethodType.md)): (read only)
  Values:
  - `Unknown`: Not classified.
  - `Card`: A card, keyed or read.
  - `Check`: A bank account debited over ACH, or a check.
  - `DigitalWallet`: A digital wallet (Apple Pay, Google Pay, Paze), which rides the card networks.
  - `AlternativePayment`: An alternative payment method approved inside a provider and presented as an approval reference.

## See also

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