View as Markdown

llms.txt

The API reference isn't available right now

This instance couldn't load its API specification. The reference returns as soon as the specification is readable again.

Back to the API reference

No such operation

This instance documents no operation under that identifier. It may have been renamed, or it may belong to a feature this installation hasn't enabled.

Back to the API reference

This reference may be out of date

This instance couldn't reach its API specification on the last attempt, so this page shows the copy fetched before that. Anything added or changed since then is missing here, and the reference updates itself as soon as the specification is readable again. Last fetched 2026-10-01 06:25 UTC.

API reference Transactions

Add a payment to a split tender, collecting part of its remaining balance.

POST /api/transactions/{id}/split-tender/continuations deprecated

Requires: Transactions.Payments.Create, merchant scope.

The request is the standard transaction create request, and it is validated and processed exactly as a first payment is. The gateway assigns the split tender group, the payment's position in it and its continuation role; a request cannot supply them. The payment must be a card sale for more than zero and no more than the remaining balance, the primary must still hold an open split tender, and the group must have room for another payment under the merchant's maximum.

Example request

Every block below sends the same request. Replace {{BASE_URL}} with the address of the API you are calling and {{API_KEY}} with your own key.

The request body is a TransactionCreateDto. See the Request body section below for its fields.

Code sample language

cURL
curl -X POST "{{BASE_URL}}/api/transactions/{id}/split-tender/continuations" \
  -H "api-key: {{API_KEY}}" \
  -H "Content-Type: application/json" \
  -d '{
  "merchantId": "00000000-0000-0000-0000-000000000001",
  "transactionType": "Authorization",
  "cardData": {
    "cardNumber": "4111111111111111",
    "expirationMonth": 12,
    "expirationYear": 2030,
    "cvv": 123,
    "nameOnCard": "John Doe",
    "entryMode": "Manual",
    "cvPresence": "Submitted"
  },
  "duplicateCheck": true,
  "invoiceData": {
    "amounts": {
      "base": 1,
      "total": 1
    }
  }
}'

PowerShell
$headers = @{
    'api-key' = '{{API_KEY}}'
}

$body = @'
{
  "merchantId": "00000000-0000-0000-0000-000000000001",
  "transactionType": "Authorization",
  "cardData": {
    "cardNumber": "4111111111111111",
    "expirationMonth": 12,
    "expirationYear": 2030,
    "cvv": 123,
    "nameOnCard": "John Doe",
    "entryMode": "Manual",
    "cvPresence": "Submitted"
  },
  "duplicateCheck": true,
  "invoiceData": {
    "amounts": {
      "base": 1,
      "total": 1
    }
  }
}
'@

$response = Invoke-RestMethod -Method POST -Uri '{{BASE_URL}}/api/transactions/{id}/split-tender/continuations' `
    -Headers $headers -ContentType 'application/json' -Body $body

npm install @winkpg/winkpg-api

TypeScript (SDK)
import { Configuration, TransactionsApi } from '@winkpg/winkpg-api';

const api = new TransactionsApi(new Configuration({
  basePath: '{{BASE_URL}}',
  apiKey: '{{API_KEY}}',
}));

const { data } = await api.splitTenderCreateContinuation("3fa85f64-5717-4562-b3fc-2c963f66afa6", {
  "merchantId": "00000000-0000-0000-0000-000000000001",
  "transactionType": "Authorization",
  "cardData": {
    "cardNumber": "4111111111111111",
    "expirationMonth": 12,
    "expirationYear": 2030,
    "cvv": 123,
    "nameOnCard": "John Doe",
    "entryMode": "Manual",
    "cvPresence": "Submitted"
  },
  "duplicateCheck": true,
  "invoiceData": {
    "amounts": {
      "base": 1,
      "total": 1
    }
  }
});

TypeScript (raw HTTP)
const response = await fetch('{{BASE_URL}}/api/transactions/{id}/split-tender/continuations', {
  method: 'POST',
  headers: {
    "api-key": "{{API_KEY}}",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "merchantId": "00000000-0000-0000-0000-000000000001",
    "transactionType": "Authorization",
    "cardData": {
      "cardNumber": "4111111111111111",
      "expirationMonth": 12,
      "expirationYear": 2030,
      "cvv": 123,
      "nameOnCard": "John Doe",
      "entryMode": "Manual",
      "cvPresence": "Submitted"
    },
    "duplicateCheck": true,
    "invoiceData": {
      "amounts": {
        "base": 1,
        "total": 1
      }
    }
  }),
});

const data = await response.json();

dotnet add package WinkPg.Api.Client

C# (SDK)
using WinkPg.Api.Client.Api;
using WinkPg.Api.Client.Client;
using System.Text.Json;

var config = new Configuration { BasePath = "{{BASE_URL}}" };
config.AddApiKey("api-key", "{{API_KEY}}");

var api = new TransactionsApi(config);
var body = JsonSerializer.Deserialize<TransactionCreateDto>("""
    {
      "merchantId": "00000000-0000-0000-0000-000000000001",
      "transactionType": "Authorization",
      "cardData": {
        "cardNumber": "4111111111111111",
        "expirationMonth": 12,
        "expirationYear": 2030,
        "cvv": 123,
        "nameOnCard": "John Doe",
        "entryMode": "Manual",
        "cvPresence": "Submitted"
      },
      "duplicateCheck": true,
      "invoiceData": {
        "amounts": {
          "base": 1,
          "total": 1
        }
      }
    }
    """);

var result = await api.SplitTenderCreateContinuationAsync(Guid.Parse("3fa85f64-5717-4562-b3fc-2c963f66afa6"), body);

C# (raw HTTP)
using System.Text;

using var http = new HttpClient { BaseAddress = new Uri("{{BASE_URL}}") };

var request = new HttpRequestMessage(new HttpMethod("POST"), "/api/transactions/{id}/split-tender/continuations");
request.Headers.Add("api-key", "{{API_KEY}}");

request.Content = new StringContent("""
    {
      "merchantId": "00000000-0000-0000-0000-000000000001",
      "transactionType": "Authorization",
      "cardData": {
        "cardNumber": "4111111111111111",
        "expirationMonth": 12,
        "expirationYear": 2030,
        "cvv": 123,
        "nameOnCard": "John Doe",
        "entryMode": "Manual",
        "cvPresence": "Submitted"
      },
      "duplicateCheck": true,
      "invoiceData": {
        "amounts": {
          "base": 1,
          "total": 1
        }
      }
    }
    """, Encoding.UTF8, "application/json");

var response = await http.SendAsync(request);
response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();

pip install winkpg-api

Python (SDK)
import winkpg_api

configuration = winkpg_api.Configuration(host="{{BASE_URL}}")
configuration.api_key["ApiKey"] = "{{API_KEY}}"

with winkpg_api.ApiClient(configuration) as client:
    api = winkpg_api.TransactionsApi(client)
    body = winkpg_api.TransactionCreateDto.from_dict({
      "merchantId": "00000000-0000-0000-0000-000000000001",
      "transactionType": "Authorization",
      "cardData": {
        "cardNumber": "4111111111111111",
        "expirationMonth": 12,
        "expirationYear": 2030,
        "cvv": 123,
        "nameOnCard": "John Doe",
        "entryMode": "Manual",
        "cvPresence": "Submitted"
      },
      "duplicateCheck": True,
      "invoiceData": {
        "amounts": {
          "base": 1,
          "total": 1
        }
      }
    })
    result = api.split_tender_create_continuation("3fa85f64-5717-4562-b3fc-2c963f66afa6", body)

pip install requests

Python (raw HTTP)
import requests

headers = {
    "api-key": "{{API_KEY}}",
    "Content-Type": "application/json",
}

body = {
  "merchantId": "00000000-0000-0000-0000-000000000001",
  "transactionType": "Authorization",
  "cardData": {
    "cardNumber": "4111111111111111",
    "expirationMonth": 12,
    "expirationYear": 2030,
    "cvv": 123,
    "nameOnCard": "John Doe",
    "entryMode": "Manual",
    "cvPresence": "Submitted"
  },
  "duplicateCheck": True,
  "invoiceData": {
    "amounts": {
      "base": 1,
      "total": 1
    }
  }
}

response = requests.request(
    "POST",
    "{{BASE_URL}}/api/transactions/{id}/split-tender/continuations",
    headers=headers,
    json=body,
)
response.raise_for_status()
data = response.json()

Parameters

Name In Type Description
id required path string (uuid) The split tender's primary transaction.
suppressNulls required query boolean If true, omit properties with null values.

Request body

application/json , required

Field Type Description
currentStage required all of TransactionStage Gets or sets the current stage of the transaction within the create or update workflow.
history required array of TransactionHistoryItem Gets or sets the transaction history entries associated with the transaction. nullable
appliedPatches required array of TransactionPatchSnapshot Gets or sets the collection of patch snapshots that have been applied to the transaction. nullable
merchantId required string (uuid) The unique identifier of the merchant associated with the transaction.
transactionType required all of TransactionType The type of transaction being performed. Conditional: When RequestedSplitTenderTotal is not null. Must equal Sale. Conditional: Conditional (see validator source).
description required string Optional free-text description of what this payment is for, at most 100 characters. nullablemax length 100
merchantReference required string Optional merchant-supplied reference for reconciliation, at most 25 characters, letters and digits only. nullablemax length 25pattern ^[A-Za-z0-9]*$
tender required all of TenderKind Optionally declares that this transaction is taken in cash. The only accepted value is `Cash`. Omit the field for every card, check, and token transaction. nullable
cardData required all of CardData Card data associated with the transaction. Conditional: When CardData is not null. Required: Conditional (see validator source).
checkData required all of CheckData Check data associated with the transaction. Conditional: When CheckData is not null. Conditional: Conditional (see validator source). Conditional: When TransactionType == VoucherClear. Required: When TransactionType == Payout.
cashData required all of CashPaymentDetails Cash sale details: the cash handed over, the change returned, and when the cash was taken.
tokenData required all of TokenData Tokenized payment details, used to charge a stored credential instead of raw card data. Conditional: When TokenData is not null.
deviceData required all of DeviceData Device data for the transaction. Conditional: When DeviceData is not null.
fsa required all of Fsa FSA (Flexible Spending Account) data for the transaction.
lodging required all of LodgingData Lodging detail for a stay-related transaction, for merchants transacting under a lodging industry. Conditional: When Lodging is not null.
softDescriptor required all of SoftDescriptor Soft descriptor information for the transaction.
duplicateCheck required boolean Indicates whether to perform a duplicate check for the transaction. Omit the field to let the merchant's screening configuration decide, which is what happens today. Send false to waive the check, which the merchant must have permitted. Sending true never turns screening on for a merchant who has not configured it. nullable
register required all of TransactionRegister Register information for the transaction.
invoiceData required all of Invoice Invoice data associated with the transaction, carrying the customer and the amounts. Required: Conditional (see validator source). Required: When TransactionType == Capture.
originalTransaction required all of OriginalTransaction Data about the original transaction, if applicable.
customFields required array of TrxCustomField Custom fields for the transaction. Conditional: When CustomFields is not null. nullable
signatureData required all of SignatureData Signature data for the transaction.
level2Data required all of Level2Data Level 2 data for the transaction (e.g., tax, purchase order).
level3Data required all of Level3Data Level 3 data for the transaction (e.g., line item details).
ebt required all of EbtData EBT voucher data for the transaction (offline SNAP / Cash voucher-clear flow).
useInterchangeDefaults required boolean Indicates whether to use interchange defaults for the transaction. nullable
skipOrderDataDefaults required boolean When true, the server does not apply the merchant's configured Level 2/3 defaults to the transaction. Set by the Virtual Terminal when the operator chose "Enter Manually" in the BIN-driven prompt. API submissions usually leave this null. nullable
captureType required all of CaptureTypes The capture type for the transaction.
responseData required all of TransactionResponseData Response data for the transaction.
settleData required all of TransactionSettleData Settlement data for the transaction.
processorKey required string The processor type key (e.g. "tsys", "fiserv") that processed this transaction. Display-only: set during authorization and not modifiable via create/update. nullable
sourceData required all of TransactionSourceData Gets or sets the source data associated with the transaction. Conditional: When SourceData is not null.
tags required array of EntityTag Tags associated with the transaction. nullable
notes required array of EntityNote Notes associated with the transaction. nullable
merchantTransactionId required integer (int64) The unique identifier of the merchant transaction. nullable
idempotencyKey required string Your own identifier for this create request, used to make a retry safe. Send the same value again and the gateway returns the transaction the first request produced instead of charging a second time. This is the recommended pattern for reconciling a create whose response you never received. nullable
receiptIds required array of string List of receipt IDs generated for this transaction. Used for point-read access to receipts. Stored as strings: see `receiptIds` remarks for rationale. Read-only: set by the server; ignored on the AutoMapper write maps. nullableread only
decisionNotes required array of TransactionDecisionNote System-emitted decision explanations recorded against this transaction, surfaced read-only on the transaction-detail view. Like `receiptIds`, this is server state: it is populated on load for display but ignored on the create/update write maps, so a client can never persist decision notes. nullable
initiationType required all of InitiationType Identifies whether this transaction was initiated by the cardholder (CIT) or the merchant (MIT). nullable
mitReason required all of MITReasonCode For merchant-initiated transactions, the reason code justifying the MIT. Null for CITs. nullable
storedCredentialConsentId required string (uuid) Reference to the `StoredCredentialConsent` that authorizes this MIT. Null for CITs. Optional, and best omitted: when it is absent the server resolves the consent from the stored credential itself (resolved from the token plus `InvoiceData.CustomerId`) and selects the most recently captured one that permits the declared MIT reason. Send a value only to pin a specific consent when the credential carries several, for example after a re-enrollment, and only when the value is a consent identifier this platform issued for that same credential (from a capture response, a consent lookup, or a webhook). A supplied value is validated strictly and is rejected if it belongs to a different credential, has been revoked, or does not permit the declared reason. Note that a credential whose consent lineage predates this platform's consent tracking has no consent record at all: an identifier minted by a prior system is never valid here, so such a charge is rejected with `stored_credential_consent_required` whether or not this field is sent. Remediate by having the merchant attest the credential, which mints a new platform consent; the charge then succeeds with the field omitted, and the newly issued identifier is accepted when sent. nullable
schemeTransactionId required string The card network's trace ID for this transaction chain. Captured from the processor response on the initial CIT and referenced on subsequent MITs. Read-only: set by the server; ignored on the AutoMapper write maps. nullableread only
cardholderPresence required all of CardholderPresence How present the cardholder is at the point of sale, separate from the physical entry mode. Drives network-level presence indicators (e.g. TSYS `POSEnvironmentIndicator`) at auth time. `null` means "let the classifier infer from EntryMode + Source". Conditional: When CardholderPresence is not null. nullable
specialCondition required all of SpecialCondition Visa/MC special-condition tag (quasi-cash, quasi-MOTO). `null` defaults to `None`. Drives TSYS `SpecialConditionIndicator` + `CardholderId` when set to `QuasiCash`. Conditional: When SpecialCondition is not null. nullable
processorCertificationOverrides required all of ProcessorCertificationOverrides Per-processor certification override knobs. Production traffic must leave this `null`; `ICertificationOverridesGate` rejects requests where it is set unless the merchant is flagged as a test merchant AND the active processor profile has `AcceptCertificationOverrides` enabled.
cumulativeRefundedAmount required number (double) Running total of refund amounts applied to this transaction. Read-only: computed from refund operations. nullableread only
cumulativeReversedAmount required number (double) Running total of reversal amounts applied to this transaction. Read-only: computed from reversal operations. nullableread only
authorizedAmount required number (double) The immutable amount the issuer authorised at the close of the Authorization stage. Read-only: set once at `CloseAuthorization`. UI uses this rather than `ResponseData.Amounts.Approved` for remaining-balance calculations because reversal contributors overwrite `/ResponseData` with the processor's reversal-response payload. nullableread only
saveCardRequested required boolean Operator (VT) or cardholder (HPP) opt-in to save the card for future merchant-initiated use. Honored only from the Virtual Terminal and the Hosted Payment Page, which capture the required cardholder consent; a transaction create API request that sets it to true is rejected with a validation error. Auth-time-only: it cannot be set on updates or on subsequent operations. nullable
isAccountVerification required boolean When `true`, this transaction is a zero-dollar account verification rather than a charge: the gateway authorizes for $0 to confirm card validity (with AVS/CVV) and immediately voids the authorization. Used by the Hosted Payment Page "save card only: don't charge me" flow to vault a card without charging it. Mutually exclusive with a non-zero amount. Auth-time-only: the AutoMapper Update and recurring-billing maps both ignore it so it cannot be set on subsequent operations. `null` (the default) is an ordinary chargeable transaction. nullable
convenienceFeeDisclosureAcknowledgedAt required string (date-time) UTC timestamp of the moment the payer accepted the disclosed convenience fee (the confirm-click, NOT the submit). This is the caller's attestation that the fee was disclosed and agreed to, and it is <b>required</b> on any request charging a non-zero `invoiceData.amounts.convenience` on a card tender, alongside `convenienceFeeDisclosureChannel`. The Virtual Terminal stamps it from its confirm modal (the CSR attesting as the cardholder's proxy) and the Hosted Payment Page from the cardholder's own acceptance; a direct API integration owns its own disclosure UX and supplies the same attestation. It may not sit more than a few minutes ahead of the gateway's clock: a disclosure cannot have been accepted after the request that reports it. Auth-time-only: the AutoMapper Update and recurring-billing maps both ignore it, so it cannot be set on subsequent operations. `null` when no fee was charged. An ACH / e-check debit is out of scope; a convenience fee on an EBT / eWIC tender is prohibited outright and rejected before this field is examined. nullable
convenienceFeeDisclosureChannel required string The surface on which the convenience-fee disclosure was shown and accepted. One of `"VirtualTerminal"`, `"HostedPaymentPage"`, or `"Api"` (a direct integration's own checkout); matched case-insensitively, and any other value is rejected. Paired with `convenienceFeeDisclosureAcknowledgedAt` and required on the same requests. Auth-time-only. nullablemax length 64
convenienceFeeEligibilitySnapshot required string Serialized convenience-fee eligibility decision (reason code + assessed amount) captured at disclosure-acknowledgment time. Codes / amounts only: no request- or response-derived free text (PCI). Gateway-produced and optional: the Virtual Terminal and Hosted Payment Page serialize their own fee decision into it, and a direct API integration has no equivalent internal decision to record, so it is never required. Auth-time-only. nullablemax length 2048
convenienceFeeCancelledAmount required number (double) The convenience-fee amount, in the transaction currency, the Virtual Terminal operator declined on the disclosure-confirm modal, removing it from this submission. Set by the VT cancel path (button, X, or Esc) so the authorization pipeline can record a `CsrCancelledVtModal` convenience-fee decision note carrying the amount that was waived: the fee is gone from the amounts by submit time, so the evaluator has nothing left to explain without this marker. Audit-only. It never adds to any total, never reaches the processor, and is honoured only when the submitted transaction carries no convenience fee, originates from the Virtual Terminal, and belongs to a merchant with an active convenience-fee configuration. Auth-time-only: the AutoMapper Update and recurring-billing maps both ignore it. `null` (the default) on every submission where no disclosed fee was cancelled. nullable
surchargeDisclosureAcknowledgedAt required string (date-time) UTC timestamp captured at the surcharge disclosure confirm-click moment (NOT at submit). Set by the Virtual Terminal confirm modal / HPP acceptance when a surcharge is disclosed and agreed. Auth-time-only: the AutoMapper Update and recurring-billing maps both ignore it so it cannot be set on subsequent operations. `null` when no surcharge disclosure was acknowledged. nullable
surchargeDisclosureChannel required string Channel on which the surcharge disclosure was acknowledged (`"VirtualTerminal"`, `"HostedPaymentPage"`, or `"Api"`). Paired with `surchargeDisclosureAcknowledgedAt`. Auth-time-only. nullable
achWebAuthorizationText required string The NACHA WEB single-debit authorization language shown to the payer, captured verbatim at ACH submit on the Hosted Payment Page. The consent evidence NACHA requires to substantiate an internet-initiated (WEB) ACH debit. Auth-time-only: the AutoMapper Update and recurring-billing maps both ignore it so it cannot be set on subsequent operations. `null` for non-ACH tenders. PCI-safe: authorization language only. nullable
achWebAuthorizationTextVersion required string Stable version hash (`sha256:{hex}`) of `achWebAuthorizationText`. Auth-time-only. nullable
achWebAuthorizationConsumerIp required string Consumer IP recorded at ACH WEB authorization time (required NACHA evidence). On the anonymous Hosted Payment Page create path the server derives this from the incoming request and ignores a caller-supplied value. Auth-time-only. `null` for non-ACH tenders. nullable
achWebAuthorizationAt required string (date-time) UTC timestamp of the ACH WEB authorization. Server-stamped on create; a client-supplied value is never trusted. Auth-time-only. `null` for non-ACH tenders. nullable
achWebAuthorizationSecCode required string SEC code the ACH WEB authorization was captured under (always `"WEB"` for HPP ACH). Auth-time-only. `null` for non-ACH tenders. nullable
achAuthorizationAttested required boolean Operator attestation signal for a Virtual Terminal CSR-keyed ACH debit: `true` when the operator confirmed they obtained the account holder's authorization (TEL or PPD) for the debit. This is a transient <b>input</b> only: the server consumes it to gate the submit (fail-closed when a VT ACH debit is not attested) and to stamp the persisted `AchAuthorization*` evidence fields; it is never persisted on its own. `null` / `false` for non-VT-ACH tenders and for callers that do not attest. nullable
achAuthorizationStatementText required string The CSR attestation statement captured for a Virtual Terminal CSR-keyed ACH debit (NACHA TEL / PPD). Server-owned: rendered from the selected SEC code and stamped at create time, never trusted from the client. Auth-time-only: the AutoMapper Update and recurring-billing maps both ignore it so it cannot be set on subsequent operations. `null` for non-VT-ACH tenders. PCI-safe: authorization language only. nullable
achAuthorizationStatementVersion required string Stable version hash (`sha256:{hex}`) of `achAuthorizationStatementText`. Server-recomputed from the statement text; a client-supplied value is never trusted. Auth-time-only. nullable
achAuthorizationSecCode required string SEC code the VT ACH authorization was captured under (`"TEL"` or `"PPD"`). Server-owned from the operator's selection on `CheckData.SecCode`. Auth-time-only. `null` for non-VT-ACH tenders. nullable
achAuthorizationChannel required string Channel on which the VT ACH authorization was attested (`"VirtualTerminal"`). Server-owned. Auth-time-only. `null` for non-VT-ACH tenders. nullable
achAuthorizationAt required string (date-time) UTC timestamp of the VT ACH authorization. Server-stamped on create; a client-supplied value is never trusted. Auth-time-only. `null` for non-VT-ACH tenders. nullable
requestedSplitTenderTotal required number (double) The total of the whole order, when you know before submitting that the customer will pay for it with more than one card. This transaction is charged for its own amount; once it is approved, it stays open as the first payment of a split tender collecting toward this total, and each further card is posted to `POST /api/transactions/{id}/split-tender/continuations`. Conditional: When RequestedSplitTenderTotal is not null. nullable

This request body has no documented fields.

Responses

200 OK

Body: TransactionDto Each item has these fields.

Field Type Description
id required string (uuid)
creationTime required string (date-time) The date and time when this entity was created.
creatorId required string (uuid) The ID of the user who created this entity. nullable
lastModificationTime required string (date-time) The date and time when this entity was last modified. nullable
lastModifierId required string (uuid) The ID of the user who last modified this entity. nullable
isDeleted required boolean Indicates whether this entity has been deleted.
deleterId required string (uuid) The ID of the user who deleted this entity, if it is deleted. nullable
deletionTime required string (date-time) The date and time when this entity was deleted, if it is deleted. nullable
displayGuid required string nullableread only
fraudScreenResult required all of FraudScreenResult Deprecated. This object is never populated: no screening provider writes it, and it is always null on the wire. It is retained for schema compatibility only. External screening outcomes are not exposed through this property. deprecated
merchantName required string nullable
resultCode required all of ResultCode nullableread only
cardBrand required string The card brand (e.g., "VISA", "MASTERCARD") resolved from BIN data. nullableread only
extraProperties required object nullableread only
currentStage required TransactionStage Represents the stage of a transaction within the transaction management workflow. one of: Created, Validated, Enriched, Screened, Authorized, Finalized, Captured, Completed, Reversed, Refunded, Voided, SplitTenderPending, Rejected, Declined, Failed, PolicyRejected
history required array of TransactionHistoryItem nullable
appliedPatches required array of TransactionPatchSnapshot nullable
allowedActions required array of TransactionOperationType nullable
concurrencyStamp required string nullable
entityVersion required integer (int32) read only
tenantId required string (uuid) nullableread only
transactionType required TransactionType Represents the various types of transactions that can be performed in the system. one of: Authorization, Sale, Return, Void, Force, Capture, CaptureAll, RepeatSale, Adjustment, Activate, Deactivate, Redeem, Inquire, Reload, VoucherClear, Payout
cardData required CardData Represents the data associated with a payment card.
checkData required CheckData Represents the data associated with a check transaction.
cashData required all of CashPaymentDetails The cash sale details: the cash handed over, the change returned, and when the cash was taken. Null when the transaction's request carried none.
apmData required all of ApmData The alternative-payment instrument block for a payment the payer approved inside a provider. Null on every other tender.
tokenData required TokenData Represents tokenized payment information used to process a transaction. This model supports internal stored tokens as well as digital wallet tokens such as Internal, Apple Pay, Google Pay, and network tokens.
deviceData required DeviceData Represents data related to a device in a transaction.
fsa required Fsa Represents a Flexible Spending Account (FSA) with various amount categories and partial authorization support.
lodging required all of LodgingData Lodging detail for a stay-related transaction, echoed back as it was submitted. Null on every transaction outside a lodging industry.
softDescriptor required SoftDescriptor Represents a soft descriptor for a transaction, containing alternative merchant information.
duplicateCheck required boolean The duplicate-check intent the submitting request carried, echoed back as it was submitted. Null means the request expressed no opinion and the merchant's screening configuration decided, which is the value a request that omitted the field carries. False means the request asked to waive the check, and it was waived only if the merchant permits per-transaction overrides. Transactions written before this field became nullable read as false regardless of what the caller intended. nullable
register required TransactionRegister Represents a transaction register in the system.
invoiceData required Invoice Represents an invoice in the system.
originalTransaction required OriginalTransaction Represents an original transaction with its identifying information.
customFields required array of TrxCustomField nullable
signatureData required SignatureData Represents signature data for a transaction.
level2Data required Level2Data Represents Level 2 data for a transaction, including purchase order information, transaction date, and merchant zip code.
level3Data required Level3Data Represents Level 3 data for a transaction, including shipping information and line items.
orderLines required array of TransactionOrderLine The product lines of the order this transaction paid for, when it paid for one: a hosted page selling catalog products records each product, quantity, unit price and line total here for per-SKU reporting. `null` on every other transaction. Read-only: the platform writes it from the order it priced itself. nullable
ebt required EbtData Transaction-level EBT (Electronic Benefit Transfer) data for the offline SNAP / Cash food-stamp voucher-clear flow. This is the first-class home for the voucher fields that the legacy gateway stuffed into `ExtData`; it carries the scalar voucher identifiers from the request through to the processor handlers.
useInterchangeDefaults required boolean nullable
captureType required CaptureTypes Represents the types of payment capture methods available for transactions. one of: Credit, Debit, Check, EBT
responseData required TransactionResponseData Represents the response data for a transaction, containing various details about the transaction outcome.
settleData required TransactionSettleData Represents settlement data for a transaction.
source required all of TransactionSource nullable
sourceData required TransactionSourceData Encapsulates the origin of a transaction and any source-specific identifiers.
tags required array of EntityTag nullable
notes required array of EntityNote nullable
merchantId required string (uuid)
merchantTransactionId required integer (int64) nullable
receiptIds required array of string List of receipt IDs generated for this transaction. nullable
refundTransactionIds required array of string IDs of the linked-refund child transactions issued against this transaction (as the parent sale). Drives the detail-page reverse relationship ("Refunded by <guid>" and the Related Transactions grid). Empty/null when this transaction has no linked refunds. nullable
decisionNotes required array of TransactionDecisionNote System-emitted decision explanations recorded against this transaction, e.g. why the convenience-fee evaluator applied or suppressed a fee. Read-only on the wire: written only by server-side contributors, never by an update. Rendered on the transaction detail view via the decision-note copy resolver. nullable
linkedFeeChargeTransactionId required string On a primary charge: the id of the separate convenience-fee charge linked to it (the reverse link, primary → fee), when a card-brand program required the fee to settle as its own authorization. Null when there is no linked fee charge. Server-state; read-only on the wire. See `Transaction.LinkedFeeChargeTransactionId`. nullable
primaryChargeTransactionId required string On a convenience-fee charge: the id of the primary charge this fee is linked to (the forward link, fee → primary). Null for an ordinary transaction. Server-state; read-only on the wire. See `Transaction.PrimaryChargeTransactionId`. nullable
linkedChargeKind required all of LinkedChargeKind Why this transaction exists as a separate linked charge (currently only `ConvenienceFee`), or null when it is not a linked charge. Server-state; read-only on the wire. nullable
processorProfileId required string (uuid) The unique identifier of the merchant processor profile that processed this transaction. nullable
processorKey required string The processor type key (e.g., "tsys", "fiserv") used for this transaction. nullable
routingResult required all of RoutingResult The recorded processor routing decision: the selected processor and profile, the ordered audit trail, and every evaluated candidate with its score and eliminated flag. Server-owned; never accepted on a create or update. Back-office only: always null in responses to API-key callers, and never included in outbound webhook payloads. `null` for transactions that were not routed.
loopbackSimulation required all of LoopbackSimulation What the sandbox simulator did on this transaction: the published triggers your request fired, and the response values it filled in from a default because nothing matched. Read it when a sandbox answer is not the one you expected and you want to know which trigger the sandbox saw. Each entry carries `isDefault`, which separates a trigger you sent from a value the sandbox supplied. A card-verification entry reports the response code the sandbox returned and never the security code you submitted. Server-owned: it is never accepted on a create or update, and nothing in it changes what the transaction did. `null` on every transaction the sandbox simulator did not answer, which includes every transaction a live processor handled, and on every row written before the trace existed.
surchargeResult required all of SurchargeResult The surcharge evaluation decision produced by the surcharge eligibility pipeline: the verdict, applied rate, cap provenance, and the per-stage audit trail. Server-owned (mapped entity -> DTO by convention; never accepted on a create/update). Back-office only: stripped for public API-key callers and anonymous callers, mirroring `routingResult`. `null` when the surcharge decision was never evaluated (no active surcharge configuration, non-card tender, or a legacy row).
correlationId required string The correlation ID linking this transaction to its orchestration audit trail. nullable
cumulativeRefundedAmount required number (double) Running total of refund amounts applied to this transaction. nullable
cumulativeReversedAmount required number (double) Running total of reversal amounts applied to this transaction. nullable
authorizedAmount required number (double) The immutable amount the issuer authorised at the close of the Authorization stage. UI should read this (not `responseData`.`Amounts.Approved`) when computing remaining-reversible / remaining-refundable balances, because the processor's reversal-response payload overwrites `/ResponseData` in place. Null on legacy rows that pre-date. nullable
policyRejection required all of PolicyRejectionData Audit record of the post-authorization denylist match that policy-rejected this transaction. Top-level (not nested under `responseData`) because the auto-reversal flow Sets `/ResponseData` wholesale, so anything stored there is clobbered. Null for any transaction that was not policy-rejected.
partialApprovalData required all of PartialApprovalData Durable record of a partial approval (the issuer authorized less than was requested) and the disposition decided for it. Read this (not `responseData`.`IsPartialApproval`) anywhere outside the synchronous create response: the response flag is erased by the reversal that every non-accepted disposition issues, whereas this object is top-level and survives. Its mere presence means "this transaction was partially approved". Null when the issuer approved in full.
fraudReviewData required all of FraudReviewData Durable hold state when this transaction was parked for manual fraud review: when the hold started, when it expires, what triggered it, and the disposition that was reached. Top-level rather than nested under the screening results, which are rewritten wholesale on every screening retry. Server-owned and read-only on the API surface. Null when the transaction was never held for review.
threeDSAuthentication required all of ThreeDSAuthenticationData The 3-D Secure authentication record when this transaction was authenticated: the status the issuer reported, the ECI, whether liability shifted, the directory-server and ACS transaction identifiers, the message version, and the CAVV result code. Top-level rather than on `cardData`, whose cryptogram and ECI describe a wallet authentication instead. Server-owned and read-only on the API surface. The credential itself (CAVV / AAV) is never returned: those members are always null here. Null when no 3-D Secure authentication ran.
payloadDecryption required all of PayloadDecryption The provenance of the payload decryption the gateway performed through the merchant's payment encryption provider before authorization: the provider, the scheme (`DUKPT` or `ONGUARD`), the key serial identifier the request matched, the operator's key label, the outcome, the provider's region and result code, the retry count and the latency. Server-owned and read-only on the API surface. Carries no cardholder data and no key material. Null when the gateway did not decrypt the payload through a provider.
enhancedDataQualification required all of EnhancedDataQualificationDto The gateway's own assessment of how well this transaction's enhanced data met the commercial-card requirements, recorded when it settled. Server-owned and read-only on the API surface. Null for a transaction that has not settled, that built no enhanced-data addendum, or that settled before the gateway began recording this. Null is not the same as a clean result: a present node with a finding count of zero is the clean one.
splitTenderGroupId required string (uuid) Groups this transaction with the other tenders that together collect one order total after a partial approval left a shortfall. Server-owned; read-only on the API surface. Null when the transaction is not part of a split tender. nullable
splitTenderSequence required integer (int32) 1-based position within the `splitTenderGroupId` group, so the tenders can be presented in the order they were taken. Null when the transaction is not part of a split tender. nullable
splitTenderRole required all of SplitTenderRole Whether this transaction is the primary tender of its split-tender group or a continuation collecting part of the remaining balance. Null when the transaction is not part of a split tender. nullable
splitTenderDeclaredTotal required number (double) The order total a planned split tender collects toward, as declared by `requestedSplitTenderTotal` on this transaction's create request. Set on the first tender of a planned split tender only; null on every other transaction, including the first tender of a split tender started after a partial approval. nullable
splitTenderDeadlineUtc required string (date-time) When an open planned split tender closes on its own, keeping what its payments collected, if no further payment is being authorized. Restarted each time a payment leaves the order short. Server-owned; read-only on the API surface. Null on every transaction that is not the first tender of an open planned split tender; a split tender started after a partial approval reports its deadline on `partialApprovalData` instead. nullable
initiationType required all of InitiationType Identifies whether this transaction was initiated by the cardholder (CIT) or the merchant (MIT). Null on legacy transactions. nullable
mitReason required all of MITReasonCode For MIT transactions, the reason code justifying the merchant-initiated charge. nullable
storedCredentialConsentId required string (uuid) Reference to the stored credential consent authorizing this MIT. nullable
schemeTransactionId required string The card network's trace ID linking this transaction to its original CIT. nullable
description required string The merchant-supplied free-text payment description recorded on this transaction, echoed back exactly as it was submitted. `null` when the create request carried none, in which case the processor received the gateway's own reference instead. nullable
merchantReference required string The merchant-supplied reconciliation reference recorded on this transaction, echoed back exactly as it was submitted. `null` when the create request carried none, in which case the clearing record carried the gateway's fallback instead. nullable
tender required all of TenderKind The tender the create request explicitly declared, echoed back as it was submitted. `null` when the request declared nothing, which includes every card, check, and token transaction and any cash transaction submitted without the declaration. nullable
cardholderPresence required all of CardholderPresence How present the cardholder is at the point of sale, separate from the physical entry mode. Drives network-level presence indicators at auth time. nullable
specialCondition required all of SpecialCondition Visa/MC special-condition tag (quasi-cash, quasi-MOTO). nullable
processorCertificationOverrides required all of ProcessorCertificationOverrides Per-processor certification override knobs. Non-null only for cert-tooling traffic. Production traffic always sees this as `null`.
refundKind required all of RefundKind Classifies a refund transaction as linked (follow-up against a previously approved original transaction) or unlinked (standalone). `null` for non-refund transactions. nullable
pendingRefundAmount required number (double) Reserved-but-not-yet-completed refund amount for this transaction (as a parent), tracked separately from `cumulativeRefundedAmount` so UI can show "refund pending settlement" vs "refund completed". `null` means zero. nullable
saveCardRequested required boolean Operator (VT) or cardholder (HPP) opt-in to save the card for future merchant-initiated use, captured at create time. Read-only on the API surface: the consumer cannot mutate it through Update calls (server-side AutoMapper ignores the field on the Update map). nullable
tokenizedPaymentMethodId required string (uuid) The id of the customer's stored payment method created when a customer-initiated transaction was approved with `saveCardRequested` = `true`. `null` on transactions that did not request save-card, were declined, or where saving the card failed. nullable
isAccountVerification required boolean When `true`, this transaction is a zero-dollar account verification (the HPP "save card only" flow) rather than a charge: the card was authorized for $0 to confirm it, vaulted with consent, and not charged. Read-only on the API surface; create-time-only (the Update map ignores it). `null` on ordinary chargeable transactions. nullable
convenienceFeeDisclosureAcknowledgedAt required string (date-time) UTC timestamp when the convenience-fee disclosure was accepted (CSR-as-proxy in the Virtual Terminal, cardholder on the Hosted Payment Page, or the integrator's own checkout on a direct API create), captured at confirm-click time. Echoed back as submitted: this is the caller's attestation, set on create and never editable afterwards (the Update map ignores it). `null` when no non-zero convenience fee was charged. See `TransactionCreateOrUpdateDtoBase.ConvenienceFeeDisclosureAcknowledgedAt` for when it is required. nullable
convenienceFeeDisclosureChannel required string The surface on which the convenience-fee disclosure was shown and accepted: `"VirtualTerminal"`, `"HostedPaymentPage"`, or `"Api"`. Set on create and never editable afterwards. nullable
convenienceFeeEligibilitySnapshot required string Serialized convenience-fee eligibility decision (reason code + assessed amount) captured at disclosure-acknowledgment time. Codes / amounts only. Produced by the Virtual Terminal and Hosted Payment Page; optional on a direct API create. Set on create and never editable afterwards. nullable
convenienceFeeCancelledAmount required number (double) The convenience-fee amount, in the transaction currency, the Virtual Terminal operator declined on the disclosure-confirm modal, removing it from the submission. Audit-only: it was never charged, and the matching `CsrCancelledVtModal` convenience-fee decision note carries the same amount. Read-only on the API surface. `null` when no disclosed fee was cancelled. nullable
surchargeRate required number (double) The surcharge rate actually applied to this transaction, as a decimal fraction (0.03 = 3%). The same value as `surchargeResult`.AppliedRate, carried at the top level so it can be filtered on. `null` when no surcharge was assessed. nullable
surchargeDisclosureAcknowledgedAt required string (date-time) UTC timestamp when the surcharge disclosure was acknowledged, captured at confirm-click time. Read-only on the API surface. `null` when no surcharge was disclosed. nullable
surchargeDisclosureChannel required string Channel on which the surcharge disclosure was acknowledged (`"VirtualTerminal"` / `"HostedPaymentPage"` / `"Api"`). Read-only on the API surface. nullable
surchargeReversedAmount required number (double) The portion of the assessed surcharge amount reversed by a subsequent void or refund, in the transaction currency. Read-only on the API surface. `null` when nothing has been reversed. nullable
achWebAuthorizationText required string NACHA WEB single-debit authorization language shown to the payer, captured verbatim at ACH submit. Read-only on the API surface; delivered on the ACH completion webhook. PCI-safe. `null` for non-ACH tenders. nullable
achWebAuthorizationTextVersion required string Version hash (`sha256:{hex}`) of `achWebAuthorizationText`. Read-only. nullable
achWebAuthorizationConsumerIp required string Consumer IP recorded at ACH WEB authorization time (required NACHA evidence). Read-only. `null` for non-ACH tenders. nullable
achWebAuthorizationAt required string (date-time) UTC timestamp of the ACH WEB authorization (server-stamped). Read-only. `null` for non-ACH tenders. nullable
achWebAuthorizationSecCode required string SEC code the ACH WEB authorization was captured under (always `"WEB"`). Read-only. `null` for non-ACH tenders. nullable
achAuthorizationStatementText required string CSR attestation statement captured for a Virtual Terminal CSR-keyed ACH debit (NACHA TEL / PPD). Read-only on the API surface; delivered on the ACH completion webhook. PCI-safe. `null` for non-VT-ACH tenders. nullable
achAuthorizationStatementVersion required string Version hash (`sha256:{hex}`) of `achAuthorizationStatementText`. Read-only. nullable
achAuthorizationSecCode required string SEC code the VT ACH authorization was captured under (`"TEL"` or `"PPD"`). Read-only. `null` for non-VT-ACH tenders. nullable
achAuthorizationChannel required string Channel on which the VT ACH authorization was attested (`"VirtualTerminal"`). Read-only. `null` for non-VT-ACH tenders. nullable
achAuthorizationAt required string (date-time) UTC timestamp of the VT ACH authorization (server-stamped). Read-only. `null` for non-VT-ACH tenders. nullable
idempotencyStatus required all of CreateIdempotencyStatus What create idempotency did to the request that produced this response: whether a `idempotencyKey` was sent, whether deduplication was in effect for the merchant, and whether this response replays an earlier create. nullable

This response has no documented body fields.

403 Forbidden

Body: RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo

This response has no documented body fields.

401 Unauthorized

Body: RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo

This response has no documented body fields.

400 Bad Request

Body: RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo

This response has no documented body fields.

404 Not Found

Body: RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo

This response has no documented body fields.

501 Not Implemented

Body: RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo

This response has no documented body fields.

500 Internal Server Error

Body: RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo

This response has no documented body fields.

default The request failed. The body carries the standard error envelope: a machine-readable `error.code`, a human-readable `error.message`, and `error.validationErrors` when the failure was a validation rejection. See the error-code reference in this document's description for the values `error.code` can take.

Body: RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo

This response has no documented body fields.

429 The request was refused because a rate limit was exceeded. Wait at least the interval `Retry-After` names before retrying, then back off. Limits are tuned per deployment, so read the allowance from the response headers rather than assuming a fixed ceiling.

Body: RateLimitProblemDetails Each item has these fields.

Field Type Description
type required string The problem type identifier. Always the same value: the failure is the status code itself, so there is no sub-type for a caller to branch on. nullable
title required string A short, human-readable summary of the problem type. nullable
status required integer (int32) The HTTP status code, repeated in the body as the problem-details format defines.
detail required string A human-readable explanation of this occurrence of the problem. nullable
retryAfterSeconds required integer (int32) How long to wait before retrying, in whole seconds, carrying the same figure as the `Retry-After` header. Always at least one: a value of zero would invite an immediate retry that is certain to be rejected again.

This response has no documented body fields.

Errors

A failed request returns the platform error envelope. The error reference lists every value error.code can carry and shows the four response shapes.

Codes declared by Transactions

Authentication

    Reconnecting to the server

    Could not reconnect

    This session has ended

    Attempt 1

    Your work on this page is still here. Retrying keeps it; reloading starts the page again.

    The server no longer holds this page's state, so it has to be loaded again.