# StoredCredentialConsentRecordDto

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

A recorded stored credential consent: what the cardholder agreed to, the text they were shown, when
and how the agreement was captured, and the evidence recorded with it. This is the record to give an
issuer that asks for the cardholder agreement behind a merchant-initiated charge.

## Fields
- `id` (string(uuid))
- `customerId` (string(uuid)): The customer who gave the consent. (nullable)
- `paymentMethodId` (string(uuid)): The customer's stored payment method the consent covers. This is the stored payment method's id, not a payment token. (nullable)
- `allowedUsages` ([StoredCredentialUsage](https://devportal.signapay-sbx.winkpg.io/docs/api/models/StoredCredentialUsage.md)): The kinds of later charge the cardholder agreed to (a combination of flags). Values combine: send one or more member names separated by a comma and a space, or the integer sum of their values. Responses carry the names. (nullable)
  Values:
  - `None`: No permitted uses. Consent record is effectively inactive.
  - `Recurring`: Scheduled recurring charges (subscriptions, membership dues). Maps to Recurring.
  - `Installment`: Fixed-schedule installment plans dividing a known total. Maps to Installment.
  - `UnscheduledCOF`: Merchant-triggered charges for pre-agreed events (balance top-ups, usage overages, no-show fees, delayed charges). Maps to several MIT reason codes including UnscheduledCOF, NoShow, DelayedCharge, and IncrementalAuth.
  - `OneTimeFuture`: A single known future cardholder-initiated purchase the credential was saved for (e.g. "save card for my next order"). Not used for MITs.
- `consentTextVersion` (string): The version of the consent text the cardholder was shown: a hash of the rendered text, as returned by the consent configuration operation and sent with the capture. (nullable)
- `consentText` (string): The exact consent text the cardholder was shown. Null when it was not recorded: a consent captured before the text was kept, or one whose text was no longer held when it was captured. The `consentTextVersion` is recorded either way. (nullable)
- `capturedAt` (string(date-time)): UTC time the cardholder gave consent. (nullable)
- `capturedVia` ([ConsentCaptureChannel](https://devportal.signapay-sbx.winkpg.io/docs/api/models/ConsentCaptureChannel.md)): Where the consent was captured: the hosted payment page, the Virtual Terminal, the API, an import or the merchant's back office. (nullable)
  Values:
  - `HostedPaymentPage`: Captured during a hosted payment page checkout via an opt-in checkbox the cardholder ticked. Strongest evidence: cardholder's own action with IP, user agent, and session identifier recorded.
  - `VirtualTerminal`: Captured in the virtual terminal as a merchant operator attestation that consent was obtained from the cardholder offline (in person, by phone, signed form, etc.). Operator identity and capture method recorded.
  - `Api`: Declared by an integrating merchant via the API. The merchant takes liability for the declaration; WinkPG records the API key, timestamp, and merchant-supplied reference.
  - `Imported`: Imported from an external system (e.g. legacy migration, bulk reseller onboarding). Evidence captured outside WinkPG and recorded only as a reference to the external system.
  - `MerchantAdmin`: Captured when a merchant admin manually adds a stored payment method to a customer from the back-office (Customers > customer > Payment Methods). The operator attests that they obtained the cardholder's / account holder's authorization off-line (by phone, in person, or via a signed form on file) and records where the merchant retains that artifact. Operator identity, capture method, ACH authorization type (for bank-account credentials), and a merchant evidence reference are recorded on ConsentEvidence.
- `declaredMethod` (string): How the consent was obtained, for example `OnlineForm` or `Phone`: the method sent with an API capture, or the method an operator recorded in the Virtual Terminal or the back office. Null for a hosted payment page consent, whose evidence is the checkbox the cardholder ticked. (nullable)
- `enrollmentTerms` ([EnrollmentTermsDto](https://devportal.signapay-sbx.winkpg.io/docs/api/models/EnrollmentTermsDto.md)): The terms the cardholder agreed to for a recurring or installment consent: the amount, frequency, duration and any fee, card price or surcharge ceiling stated. Null when none were recorded.
  Fields:
  - `amount` (string): Statement of the amount the cardholder agreed to (for example "$29.99 per month"). (nullable)
  - `frequency` (string): Statement of the charge frequency. (nullable)
  - `duration` (string): Statement of how long the authorization remains in effect. (nullable)
  - `fixedAmount` (number(double)): Fixed per-payment amount the cardholder agreed to, when one was recorded. Carries no currency. (nullable)
  - `amountRangeDescription` (string): Description of the agreed amount range for variable-amount charges. (nullable)
  - `convenienceFee` (string): Statement of the convenience fee the cardholder agreed to pay on every charge. (nullable)
  - `cardPrice` (string): Statement of the dual pricing card price the cardholder agreed to pay on every card charge. (nullable)
  - `surchargeDisclosure` (string): The surcharge ceiling statement the consent text stated. (nullable)
  - `surchargeMaxRate` (number(double)): The surcharge ceiling as a decimal fraction (`0.03` is 3 percent). (nullable)
  - `surchargeNoticeSentAt` (string(date-time)): UTC instant the cardholder was emailed the surcharge notice after enrollment. (nullable)
  - `surchargeEffectiveFrom` (string(date-time)): UTC instant from which a charge under this consent may carry the noticed surcharge. (nullable)
  - `surchargeNoticeUndeliverableAt` (string(date-time)): UTC instant the notice sweep found no way to email the cardholder. (nullable)
  - `surchargeNoticeUndeliverableReason` (string): Short reason code for why the notice could not be sent. Never an address. (nullable)
- `initialTransactionId` (string(uuid)): The transaction during which the consent was captured. Null for a consent captured without one, such as a card stored with no payment. (nullable)
- `initialSchemeTransactionId` (string): The card network's transaction identifier from the initial cardholder-initiated transaction, which later merchant-initiated charges reference. Null when the processor returned none. (nullable)
- `revokedAt` (string(date-time)): UTC time the consent was revoked. Null while it is active. (nullable)
- `isRevoked` (boolean): True when the consent has been revoked and no longer permits a merchant-initiated charge. (read only)
- `evidence` ([ConsentRecordEvidenceDto](https://devportal.signapay-sbx.winkpg.io/docs/api/models/ConsentRecordEvidenceDto.md)): Evidence recorded by the hosted payment page when the cardholder consented there. Null for a consent captured on another channel.
  Fields:
  - `ipAddress` (string): The cardholder's IP address when they consented. (nullable)
  - `userAgent` (string): The cardholder's browser user agent when they consented. (nullable)
  - `hppSessionId` (string): The hosted payment page session in which the cardholder consented. (nullable)
  - `checkboxLabel` (string): The exact label of the checkbox the cardholder ticked. (nullable)
  - `cardConsentMerchantTermsVersion` (string): Version (`sha256:{hex}`) of the merchant's own terms the hosted payment page showed under the card consent text. Null when the page showed no terms, and for a bank account consent. (nullable)
  - `pageDisclosureTextVersion` (string): Version hash (`sha256:{hex}`) of the hosted payment page disclosure text the cardholder accepted on the payment that established this consent. Read-only. `null` when the page did not require acceptance, when the page asked the cardholder to accept a convenience fee disclosure without showing disclosure text of its own, or for a consent captured before acceptance was recorded. (nullable)
  - `pageDisclosureAcceptedAt` (string(date-time)): UTC time the cardholder's acceptance of the hosted payment page disclosure was recorded on the payment that established this consent (server-stamped). Read-only. `null` when the page did not require acceptance, or for a consent captured before acceptance was recorded. (nullable)

## See also

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