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-22 22:09 UTC.

API reference Transactions

Retrieves a continuation-based page of Transactions.

POST /api/transactions/list/continuation deprecated

Requires: Transactions.Reports, merchant scope.

This endpoint uses continuation tokens instead of skip/take paging.

Signed in, you can send this request to your own sandbox merchant from the console and read the answer. Sign in to try it.

Example request

Each example below is one request, shown in every language. Choose an example and a language, then replace {{BASE_URL}} with the address of the API you are calling and {{API_KEY}} with your own key.

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

Code sample language
Request example

Lists the caller's own transactions. When the request is authenticated with a merchant-owned API key, the results are already scoped to that merchant by the caller's context, so no MerchantId is required: send an essentially empty body (just maxResultCount) for the first page, then resend the same body with the continuationToken from the previous response to page further. MerchantId is optional here and cannot broaden visibility beyond the caller's own merchant(s); supply it only to narrow results when the key's user is linked to more than one merchant.

cURL

curl -X POST "{{BASE_URL}}/api/transactions/list/continuation" \
  -H "api-key: {{API_KEY}}" \
  -H "Content-Type: application/json" \
  -d '{
  "maxResultCount": 50,
  "includeInactive": true
}'

PowerShell

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

$body = @'
{
  "maxResultCount": 50,
  "includeInactive": true
}
'@

$response = Invoke-RestMethod -Method POST -Uri '{{BASE_URL}}/api/transactions/list/continuation' `
    -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.transactionsGetContinuationList({
  "maxResultCount": 50,
  "includeInactive": true
});

TypeScript (raw HTTP)

const response = await fetch('{{BASE_URL}}/api/transactions/list/continuation', {
  method: 'POST',
  headers: {
    "api-key": "{{API_KEY}}",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "maxResultCount": 50,
    "includeInactive": true
  }),
});

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<GetTransactionContinuationInput>("""
    {
      "maxResultCount": 50,
      "includeInactive": true
    }
    """);

var result = await api.TransactionsGetContinuationListAsync(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/list/continuation");
request.Headers.Add("api-key", "{{API_KEY}}");

request.Content = new StringContent("""
    {
      "maxResultCount": 50,
      "includeInactive": true
    }
    """, 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.GetTransactionContinuationInput.from_dict({
      "maxResultCount": 50,
      "includeInactive": True
    })
    result = api.transactions_get_continuation_list(body)

pip install requests

Python (raw HTTP)

import requests

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

body = {
  "maxResultCount": 50,
  "includeInactive": True
}

response = requests.request(
    "POST",
    "{{BASE_URL}}/api/transactions/list/continuation",
    headers=headers,
    json=body,
)
response.raise_for_status()
data = response.json()

Lists transactions for a single merchant that belongs to the calling reseller. A reseller-owned API key sees every merchant under that reseller by default; setting merchantId narrows the results to that one merchant. The value must be a merchant within the reseller: a merchantId outside the reseller's hierarchy simply returns no results, it never exposes another reseller's data. Omit merchantId to list across all of the reseller's merchants. Page further by resending the same body with the continuationToken from the previous response.

cURL

curl -X POST "{{BASE_URL}}/api/transactions/list/continuation" \
  -H "api-key: {{API_KEY}}" \
  -H "Content-Type: application/json" \
  -d '{
  "merchantId": "00000000-0000-0000-0000-000000000001",
  "maxResultCount": 25,
  "includeInactive": true
}'

PowerShell

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

$body = @'
{
  "merchantId": "00000000-0000-0000-0000-000000000001",
  "maxResultCount": 25,
  "includeInactive": true
}
'@

$response = Invoke-RestMethod -Method POST -Uri '{{BASE_URL}}/api/transactions/list/continuation' `
    -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.transactionsGetContinuationList({
  "merchantId": "00000000-0000-0000-0000-000000000001",
  "maxResultCount": 25,
  "includeInactive": true
});

TypeScript (raw HTTP)

const response = await fetch('{{BASE_URL}}/api/transactions/list/continuation', {
  method: 'POST',
  headers: {
    "api-key": "{{API_KEY}}",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "merchantId": "00000000-0000-0000-0000-000000000001",
    "maxResultCount": 25,
    "includeInactive": true
  }),
});

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<GetTransactionContinuationInput>("""
    {
      "merchantId": "00000000-0000-0000-0000-000000000001",
      "maxResultCount": 25,
      "includeInactive": true
    }
    """);

var result = await api.TransactionsGetContinuationListAsync(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/list/continuation");
request.Headers.Add("api-key", "{{API_KEY}}");

request.Content = new StringContent("""
    {
      "merchantId": "00000000-0000-0000-0000-000000000001",
      "maxResultCount": 25,
      "includeInactive": true
    }
    """, 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.GetTransactionContinuationInput.from_dict({
      "merchantId": "00000000-0000-0000-0000-000000000001",
      "maxResultCount": 25,
      "includeInactive": True
    })
    result = api.transactions_get_continuation_list(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",
  "maxResultCount": 25,
  "includeInactive": True
}

response = requests.request(
    "POST",
    "{{BASE_URL}}/api/transactions/list/continuation",
    headers=headers,
    json=body,
)
response.raise_for_status()
data = response.json()

Fetches the page after a previous request. Resend the exact same filters you used on the first request (merchantId, maxResultCount, and so on), and add the continuationToken value returned in that request's response. The token is opaque: pass it back unchanged, do not parse or edit it. When a response comes back with a null continuationToken, the last page has been reached. The value shown here is illustrative; use the real token from your previous response.

cURL

curl -X POST "{{BASE_URL}}/api/transactions/list/continuation" \
  -H "api-key: {{API_KEY}}" \
  -H "Content-Type: application/json" \
  -d '{
  "maxResultCount": 50,
  "continuationToken": "eyJ0b2tlbiI6IisrUklEOn5FeGFtcGxlIiwicmFuZ2UiOnsibWluIjoiIiwibWF4IjoiRkYifX0=",
  "includeInactive": true
}'

PowerShell

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

$body = @'
{
  "maxResultCount": 50,
  "continuationToken": "eyJ0b2tlbiI6IisrUklEOn5FeGFtcGxlIiwicmFuZ2UiOnsibWluIjoiIiwibWF4IjoiRkYifX0=",
  "includeInactive": true
}
'@

$response = Invoke-RestMethod -Method POST -Uri '{{BASE_URL}}/api/transactions/list/continuation' `
    -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.transactionsGetContinuationList({
  "maxResultCount": 50,
  "continuationToken": "eyJ0b2tlbiI6IisrUklEOn5FeGFtcGxlIiwicmFuZ2UiOnsibWluIjoiIiwibWF4IjoiRkYifX0=",
  "includeInactive": true
});

TypeScript (raw HTTP)

const response = await fetch('{{BASE_URL}}/api/transactions/list/continuation', {
  method: 'POST',
  headers: {
    "api-key": "{{API_KEY}}",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "maxResultCount": 50,
    "continuationToken": "eyJ0b2tlbiI6IisrUklEOn5FeGFtcGxlIiwicmFuZ2UiOnsibWluIjoiIiwibWF4IjoiRkYifX0=",
    "includeInactive": true
  }),
});

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<GetTransactionContinuationInput>("""
    {
      "maxResultCount": 50,
      "continuationToken": "eyJ0b2tlbiI6IisrUklEOn5FeGFtcGxlIiwicmFuZ2UiOnsibWluIjoiIiwibWF4IjoiRkYifX0=",
      "includeInactive": true
    }
    """);

var result = await api.TransactionsGetContinuationListAsync(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/list/continuation");
request.Headers.Add("api-key", "{{API_KEY}}");

request.Content = new StringContent("""
    {
      "maxResultCount": 50,
      "continuationToken": "eyJ0b2tlbiI6IisrUklEOn5FeGFtcGxlIiwicmFuZ2UiOnsibWluIjoiIiwibWF4IjoiRkYifX0=",
      "includeInactive": true
    }
    """, 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.GetTransactionContinuationInput.from_dict({
      "maxResultCount": 50,
      "continuationToken": "eyJ0b2tlbiI6IisrUklEOn5FeGFtcGxlIiwicmFuZ2UiOnsibWluIjoiIiwibWF4IjoiRkYifX0=",
      "includeInactive": True
    })
    result = api.transactions_get_continuation_list(body)

pip install requests

Python (raw HTTP)

import requests

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

body = {
  "maxResultCount": 50,
  "continuationToken": "eyJ0b2tlbiI6IisrUklEOn5FeGFtcGxlIiwicmFuZ2UiOnsibWluIjoiIiwibWF4IjoiRkYifX0=",
  "includeInactive": True
}

response = requests.request(
    "POST",
    "{{BASE_URL}}/api/transactions/list/continuation",
    headers=headers,
    json=body,
)
response.raise_for_status()
data = response.json()

Parameters

Name In Type Description
suppressNulls required query boolean If true, omit properties with null values.
Values: 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.

Request body

application/json , required

Field Type Description
merchantId required string (uuid) nullable
Values: 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.
hppSessionId required string (uuid) When set, restricts results to the transaction (if any) produced by the given Hosted Payment Page session. Matches `SourceData.HppSessionId`. Lets an integrator poll for the transaction created from a known HPP session without subscribing to completion events. nullable
Values: 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.
apiKeyId required string (uuid) When set, restricts results to transactions submitted with the given API key. Matches `SourceData.ApiKeyId`. Backs the per-key usage view on the API key detail surface, and lets an integrator list exactly what one key has transacted. Narrowing only: the caller still sees nothing outside its own tenant / merchant scope. nullable
Values: 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.
reviewDisposition required FraudReviewDisposition FraudReviewDisposition When set, restricts results to transactions whose manual fraud-review hold currently sits at the given disposition. Matches `FraudReviewData.Disposition`. Backs the review queue (`Pending`) and the dispositioned-history views. Equality-positive: a transaction that was never held has no `FraudReviewData` at all, so it is absent from the index and correctly drops out of every value of this filter. Supply `MerchantId` alongside it to keep the query single-partition and index-served. Matched by strict equality, which relies on every held transaction carrying an explicit disposition (see the invariant on `disposition`). nullable
Values: 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.
Pending Held and awaiting a human decision. The state the park step writes.
Approved An operator released the transaction to continue processing.
Declined An operator rejected the transaction.
ExpiredApproved The hold deadline elapsed with no reviewer decision and the merchant's configured expiry action released the transaction to continue processing. Only the parked flow itself can produce this: approving on expiry means going on to authorize the payment.
ExpiredDeclined The hold deadline elapsed with no reviewer decision and the transaction was rejected. Either the merchant configured a decline on expiry, or the backstop sweep reclaimed a hold whose flow did not survive to honor an approval. DispositionReasonCode tells the two apart.
maxResultCount required integer (int32)
Values: 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.
continuationToken required string nullable
Values: 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.
maxCreationTime required string (date-time) Exclusive upper bound on the transaction's creation time: only transactions created strictly before this instant are returned. Send an ISO-8601 timestamp in UTC. When this is earlier than `minCreationTime` the range is unsatisfiable and an empty page is returned rather than an error. Like every other filter on this request, it must be held constant for the whole continuation sequence: a continuation token is bound to the query that minted it, so changing a bound mid-sequence pages a different query. nullable
Values: 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.
minCreationTime required string (date-time) Inclusive lower bound on the transaction's creation time: only transactions created at or after this instant are returned. Send an ISO-8601 timestamp in UTC. Must be held constant for the whole continuation sequence (see `maxCreationTime`). nullable
Values: 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.
maxModificationTime required string (date-time) nullable
Values: 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.
maxModifitionTime required string (date-time) Deprecated misspelled alias of `maxModificationTime`. nullabledeprecated
Values: 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.
minModificationTime required string (date-time) nullable
Values: 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.
minModifitionTime required string (date-time) Deprecated misspelled alias of `minModificationTime`. nullabledeprecated
Values: 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.
sorting required SortDescriptor SortDescriptor
Values: 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.

Fields of SortDescriptor:

Field Type Description
field required string nullable
Values: 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.
descending required boolean
Values: 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.

This body has no documented fields.

filter required FilterGroup FilterGroup
Values: 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.

Fields of FilterGroup:

Field Type Description
logic required FilterLogic FilterLogic
Values: 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.
And
Or
rules required array of FilterRule array of FilterRule nullable
Values: 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.
groups required array of FilterGroup array of FilterGroup nullable
Values: 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.

This body has no documented fields.

includeDeleted required boolean
Values: 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.
includeInactive required boolean
Values: 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.
includeApproxTotalCount required boolean Set to false to skip the approximate total count query and receive a null count; omit the value or set it to true to receive the count as before. nullable
Values: 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.

This request body has no documented fields.

Responses

200 OK

Body: ContinuationPagedResultDtoOfTransactionDto ContinuationPagedResultDtoOfTransactionDto Each item has these fields.

Field Type Description
items required array of TransactionDto array of TransactionDto The items returned for this page. nullable
Values: 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.

Fields of each TransactionDto:

Field Type Description
id required string (uuid)
Values: 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.
creationTime required string (date-time) The date and time when this entity was created.
Values: 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.
creatorId required string (uuid) The ID of the user who created this entity. nullable
Values: 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.
lastModificationTime required string (date-time) The date and time when this entity was last modified. nullable
Values: 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.
lastModifierId required string (uuid) The ID of the user who last modified this entity. nullable
Values: 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.
isDeleted required boolean Indicates whether this entity has been deleted.
Values: 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.
deleterId required string (uuid) The ID of the user who deleted this entity, if it is deleted. nullable
Values: 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.
deletionTime required string (date-time) The date and time when this entity was deleted, if it is deleted. nullable
Values: 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.
displayGuid required string nullableread only
Values: 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.
fraudScreenResult required FraudScreenResult 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
Values: 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.
merchantName required string nullable
Values: 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.
resultCode required ResultCode ResultCode nullableread only
Values: 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.
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.
cardBrand required string The card brand (e.g., "VISA", "MASTERCARD") resolved from BIN data. nullableread only
Values: 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.
extraProperties required object nullableread only
Values: 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.
currentStage required TransactionStage TransactionStage Represents the stage of a transaction within the transaction management workflow.
Values: 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.
Created
Validated
Enriched
Screened
Authorized
Finalized
Captured
Completed
Reversed
Refunded
Voided
SplitTenderPending A partial approval is holding a reduced authorization and the gateway is waiting for a decision: accept the lesser amount, void it, or start a split tender for the shortfall. Non-terminal: the transaction leaves this stage once Transaction.PartialApprovalData.Disposition moves off PartialApprovalDisposition.Pending, or when the acknowledgment deadline elapses and the gateway voids it.
Rejected
Declined
Failed
PolicyRejected Auth succeeded at the processor but a post-authorization denylist rule matched (AVS or CVV response code). A reversal or void was issued and the transaction is permanently rejected by gateway policy.
history required array of TransactionHistoryItem array of TransactionHistoryItem nullable
Values: 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.
appliedPatches required array of TransactionPatchSnapshot array of TransactionPatchSnapshot nullable
Values: 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.
allowedActions required array of TransactionOperationType array of TransactionOperationType nullable
Values: 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.
Capture Finalizes a previously-approved authorization by sending an online capture / clearing message to the processor. Moves the transaction from "funds held" to "marked for the next batch close": settlement still happens later when the merchant's batch cuts. Valid only against approved, uncaptured TransactionType.Authorization transactions; the action matrix removes Capture once the transaction is settled (Refund is the post-settlement undo). Partial captures (less than the authorized amount) are supported and release the unused portion of the issuer hold per network rules.
Refund Returns funds to the cardholder by spawning a new standalone TransactionType.Return transaction linked back to the parent via OriginalTransaction.TransactionId. The new transaction flows through the normal auth + settlement pipeline rather than mutating the parent in place. Used once the parent has settled (post-batch-close), at which point Reversal and Void are no longer applicable. Refund capacity is reserved against the parent's PendingRefundAmount with optimistic concurrency so concurrent partial refunds from different callers cannot collectively exceed the parent's available balance.
Void Offline ledger-only cancel: marks the transaction for exclusion from the next batch close without sending any processor message. Used pre-settlement. Acts as the fallback when the configured processor does not support online Reversal (or the reversal window has expired). The action evaluator's mutual-exclusion step drops Void from the candidate set when Reversal is also eligible: Reversal is a strict superset of Void on the same stage. Terminal once approved.
Reversal Online undo: sends a processor message (0420-equivalent on card networks) that releases the issuer hold on a captured-but-not-cleared transaction and pulls the transaction from the next clearing. Distinct from Void in that an actual rails-level message is exchanged with the processor; the processor can decline. Eligible post-auth and pre-settlement against Authorization, Sale, RepeatSale, and captured Authorization stages. Per-processor support is advertised via ProcessorCapabilities.SupportsReversal and gated by ReversalWindowSeconds; the gateway falls back to Void when the processor opts out. Partial reversals (strictly less than the remaining authorized balance) are supported when the processor also advertises SupportsPartialReversal; a partial reversal leaves the transaction non-terminal until cumulative reversed equals the authorized ceiling. Once settlement has cleared, Reversal is no longer valid and Refund is the only available undo.
Repeat Re-runs a previously-approved transaction with the same payment data by spawning a new transaction linked back to the parent via OriginalTransaction.TransactionId. Authorizations repeat as Authorization (re-hold funds); Sale and RepeatSale both repeat as RepeatSale. Used for recurring billing, card-on-file scenarios, and operator-initiated re-charges. The caller may supply a different amount than the original; the new transaction flows through the normal auth + settlement pipeline. Available against approved transactions in any settlement state: once an authorization has settled, Repeat is the only re-charge path (Capture is no longer eligible).
Retry Re-attempts a previously declined or failed transaction with the same TransactionType and the same amount as the original: changing either would violate retry semantics. Spawns a new transaction linked back to the parent via OriginalTransaction.TransactionId. Available only when the parent ended in a non-approved result code (decline, processing error, gateway failure). Distinct from Repeat, which preserves type-mapping rules (Sale → RepeatSale) and allows a caller-specified amount; Retry is intended to recover from a transient failure on the original attempt without altering its commercial intent.
OfflineAdjustment An offline adjustment to a previously-authorized transaction's settlement record: tip (gratuity), tax, level-3 data, PO number, or AVS fields. Modifies the settlement amount/data before batch close without contacting the processor network. Tip and other amount-bearing fields are constrained to industry types that allow post-auth adjustments (restaurant, retail, e-commerce). Online amount changes (incremental authorization) belong to IncrementalAuthorization.
IncrementalAuthorization An online incremental (or "estimated → final") authorization on top of a previously authorized (but uncaptured) transaction. The processor sends a fresh auth message to the brand network; on approve, the transaction's Total_Auth_Amt is bumped and a new auth response (with its own customer-facing receipt) replaces the prior one. Distinct from OfflineAdjustment in that an actual rails round-trip is performed and the issuer can decline. Valid only against TransactionType.Authorization transactions that have not yet been captured. Per-processor support is advertised via ProcessorCapabilities.SupportedAdjustmentTypes; the gateway rejects the operation up front when the configured processor lacks the capability.
AcceptPartialApproval Acknowledges a partial approval by keeping the reduced authorization as-is. The issuer approved less than the gateway asked for, and the operator (or the cardholder) has decided the lesser amount is acceptable, so no reversal is issued and the transaction proceeds through the normal capture / settlement path for the approved amount. Valid only while the transaction is parked at TransactionStage.SplitTenderPending with PartialApprovalData.Disposition still Pending; a late acknowledgment against a disposition the deadline sweep has already resolved is expected traffic and is rejected. Its counterpart is Void, which rejects the reduced amount instead.
SplitTender Acknowledges a partial approval by keeping the reduced authorization and collecting the shortfall on a second tender. The continuation transaction carries the same SplitTenderGroupId with the next SplitTenderSequence. Valid only while the transaction is parked at TransactionStage.SplitTenderPending, and only when the merchant permits split tender and the group has not reached VirtualTerminalSettings.SplitTenderMaxTenders.
concurrencyStamp required string nullable
Values: 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.
entityVersion required integer (int32) read only
Values: 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.
tenantId required string (uuid) nullableread only
Values: 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.
transactionType required TransactionType TransactionType Represents the various types of transactions that can be performed in the system.
Values: 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.
Authorization Represents an authorization transaction, typically used to verify funds availability without capturing the amount.
Sale Represents a sale transaction, which authorizes and captures funds in a single step.
Return Represents a return transaction, used to refund money to the customer.
Void Represents a void transaction, used to cancel a previously authorized transaction before it is settled.
Force Represents a force transaction, typically used to manually enter a previously authorized transaction.
Capture Represents a capture transaction, used to capture funds from a previously authorized transaction.
CaptureAll Represents a capture all transaction, used to capture funds from multiple previously authorized transactions.
RepeatSale Represents a repeat sale transaction, used to process a new sale based on a previous transaction's details.
Adjustment Represents an adjustment transaction, used to modify the amount of a previous transaction.
Activate Represents an activate transaction, typically used to activate a gift card or prepaid card.
Deactivate Represents a deactivate transaction, typically used to deactivate a gift card or prepaid card.
Redeem Represents a redeem transaction, typically used to redeem value from a gift card or loyalty program.
Inquire Represents an inquire transaction, used to check the status or balance of an account or card.
Reload Represents a reload transaction, typically used to add value to a gift card or prepaid card.
VoucherClear Represents an offline EBT voucher clear: a terminal was offline, a paper food-stamp (SNAP) or eWIC voucher was written against a voice-obtained approval code, and the voucher is later uploaded so the benefit clears. Permitted on EBT SNAP and eWIC tenders only.
Payout Represents a payout transaction, used to push funds from the merchant to an external bank account as an ACH credit. Unlike Return, which refunds a prior debit, a payout is a standalone outbound fund transfer with no originating transaction.
cardData required CardData CardData
Values: 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.
checkData required CheckData CheckData
Values: 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.
cashData required CashPaymentDetails 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.
Values: 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.
apmData required ApmData ApmData The alternative-payment instrument block for a payment the payer approved inside a provider. Null on every other tender.
Values: 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.
tokenData required TokenData TokenData
Values: 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.
deviceData required DeviceData DeviceData
Values: 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.
fsa required Fsa Fsa
Values: 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.
lodging required LodgingData LodgingData Lodging detail for a stay-related transaction, echoed back as it was submitted. Null on every transaction outside a lodging industry.
Values: 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.
softDescriptor required SoftDescriptor SoftDescriptor
Values: 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.
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
Values: 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.
register required TransactionRegister TransactionRegister
Values: 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.
invoiceData required Invoice Invoice
Values: 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.
originalTransaction required OriginalTransaction OriginalTransaction
Values: 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.
customFields required array of TrxCustomField array of TrxCustomField nullable
Values: 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.
signatureData required SignatureData SignatureData
Values: 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.
level2Data required Level2Data Level2Data
Values: 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.
level3Data required Level3Data Level3Data
Values: 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.
orderLines required array of TransactionOrderLine 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
Values: 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.
ebt required EbtData EbtData
Values: 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.
useInterchangeDefaults required boolean nullable
Values: 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.
captureType required CaptureTypes CaptureTypes Represents the types of payment capture methods available for transactions.
Values: 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.
Credit Represents a credit card transaction.
Debit Represents a debit card transaction.
Check Represents a check transaction.
EBT Represents an Electronic Benefit Transfer (EBT) transaction.
responseData required TransactionResponseData TransactionResponseData
Values: 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.
settleData required TransactionSettleData TransactionSettleData
Values: 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.
source required TransactionSource TransactionSource nullable
Values: 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.
Unknown The source of the transaction is unknown or not specified.
VirtualTerminal The transaction originated from a virtual terminal interface.
Api The transaction was initiated through an API call.
HostedPaymentPage The transaction was processed via a hosted payment page.
RecurringBilling The transaction is part of a recurring billing cycle.
OfflineBatch The transaction was processed as part of an offline batch.
Invoicing The transaction is an automatic charge against an invoice (e.g. a recurring-invoice auto-charge or a smart-retry attempt) submitted by the Invoicing module.
sourceData required TransactionSourceData TransactionSourceData
Values: 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.
tags required array of EntityTag array of EntityTag nullable
Values: 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.
notes required array of EntityNote array of EntityNote nullable
Values: 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.
merchantId required string (uuid)
Values: 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.
merchantTransactionId required integer (int64) nullable
Values: 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.
receiptIds required array of string array of List of receipt IDs generated for this transaction. nullable
Values: 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.
refundTransactionIds required array of string array of 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
Values: 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.
decisionNotes required array of TransactionDecisionNote 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
Values: 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.
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
Values: 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.
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
Values: 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.
linkedChargeKind required LinkedChargeKind 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
Values: 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.
ConvenienceFee A separate charge submitted to carry a convenience fee that a card-brand program requires to settle as its own authorization (its own approval code), linked to the primary payment it was assessed against.
processorProfileId required string (uuid) The unique identifier of the merchant processor profile that processed this transaction. nullable
Values: 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.
processorKey required string The processor type key (e.g., "tsys", "fiserv") used for this transaction. nullable
Values: 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.
routingResult required RoutingResult 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.
Values: 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.
loopbackSimulation required LoopbackSimulation 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.
Values: 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.
surchargeResult required SurchargeResult 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).
Values: 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.
correlationId required string The correlation ID linking this transaction to its orchestration audit trail. nullable
Values: 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.
cumulativeRefundedAmount required number (double) Running total of refund amounts applied to this transaction. nullable
Values: 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.
cumulativeReversedAmount required number (double) Running total of reversal amounts applied to this transaction. nullable
Values: 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.
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
Values: 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.
policyRejection required PolicyRejectionData 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.
Values: 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.
partialApprovalData required PartialApprovalData PartialApprovalData Durable record of a partial approval (the issuer authorized less than was requested) and the disposition decided for it. Its presence means the transaction was partially approved; null when the issuer approved in full.
Values: 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.
fraudReviewData required FraudReviewData 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.
Values: 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.
threeDSAuthentication required ThreeDSAuthenticationData 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.
Values: 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.
payloadDecryption required PayloadDecryption 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.
Values: 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.
enhancedDataQualification required EnhancedDataQualificationDto 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.
Values: 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.
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
Values: 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.
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
Values: 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.
splitTenderRole required SplitTenderRole 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
Values: 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.
Primary The first tender in the group: the transaction whose partial approval created the shortfall. Exactly one member of a group holds this role, and it always carries SplitTenderSequence = 1.
Continuation A follow-up tender collecting part of the remaining balance. A group may hold several, ordered by SplitTenderSequence (2, 3, ...). A continuation can itself be partially approved, which starts the disposition cycle again.
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
Values: 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.
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
Values: 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.
deferPartialApprovalAcknowledgment required boolean Whether this transaction's create request asked to decide a partial approval itself, as sent in `deferPartialApprovalAcknowledgment`. Null when the request did not set it. nullable
Values: 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.
initiationType required InitiationType InitiationType Identifies whether this transaction was initiated by the cardholder (CIT) or the merchant (MIT). Null on legacy transactions. nullable
Values: 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.
CardholderInitiated The cardholder is present or otherwise authorizing this specific charge contemporaneously. Default for transactions originated by the cardholder through HPP checkout, API with cardholder interaction, or virtual terminal sales with the cardholder present.
MerchantInitiated The merchant is initiating this charge without contemporaneous cardholder authorization, relying on prior consent captured on an earlier cardholder-initiated transaction. Used for recurring billing, unscheduled credential-on-file charges, resubmissions, and other merchant-triggered uses of a stored credential.
mitReason required MITReasonCode MITReasonCode For MIT transactions, the reason code justifying the merchant-initiated charge. nullable
Values: 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.
Recurring Fixed or variable charges on a scheduled basis for a subscription or ongoing service the cardholder has enrolled in.
Installment A series of charges dividing a known total amount over a defined schedule.
UnscheduledCOF Charges triggered by a specific, pre-agreed event (e.g. account balance threshold, usage overage). Not on a schedule.
Resubmission Recharging after a declined or reversed transaction, in accordance with card network resubmission rules. Must be for the same amount as the original declined attempt and within the network's permitted resubmission window.
Reauthorization Re-authorizing a prior authorization (e.g. when the original authorization has expired but the merchant still intends to capture).
DelayedCharge A charge finalized after the cardholder's original authorization (e.g. tip adjustment, additional services added after checkout, or final amounts determined after service completion).
NoShow No-show or cancellation fee where the cardholder made a reservation or booking and failed to cancel within the required window.
IncrementalAuth Additional authorization on top of a prior authorization (e.g. hotel incidentals, car rental overages).
storedCredentialConsentId required string (uuid) Reference to the stored credential consent authorizing this MIT. nullable
Values: 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.
schemeTransactionId required string The card network's trace ID linking this transaction to its original CIT. nullable
Values: 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.
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
Values: 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.
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
Values: 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.
tender required TenderKind 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
Values: 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.
Cash Cash taken at the point of sale. Resolved against the merchant's cash processor profile, auto-approved with no processor call, and settled into its own daily cash batch.
cardholderPresence required CardholderPresence 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
Values: 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.
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.
specialCondition required SpecialCondition SpecialCondition Visa/MC special-condition tag (quasi-cash, quasi-MOTO). nullable
Values: 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.
None No special condition applies: standard purchase semantics.
QuasiCash Quasi-cash purchase: a transaction that resembles cash equivalent (money orders, foreign currency, traveler's cheques, gaming chips, casino vouchers, etc.). Triggers TSYS SpecialConditionIndicator=8 and requires a populated CardholderId on the network request.
QuasiMoto Quasi-MOTO: a card-present capture that the merchant is required to process under MOTO routing rules (e.g. cert scenarios, specific Visa product types). Distinct from QuasiCash: the merchant remains in retail context but presence flags flip to MOTO for network routing.
processorCertificationOverrides required ProcessorCertificationOverrides ProcessorCertificationOverrides Per-processor certification override knobs. Non-null only for cert-tooling traffic. Production traffic always sees this as `null`.
Values: 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.
refundKind required RefundKind RefundKind Classifies a refund transaction as linked (follow-up against a previously approved original transaction) or unlinked (standalone). `null` for non-refund transactions. nullable
Values: 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.
None Not a refund, or kind has not been classified. Default for all non-refund transactions.
Linked A refund run as a follow-up action against a previously approved and settled original transaction. The refund is a new transaction in its own right and flows through the normal auth + settlement pipeline, but carries a reference to its parent via OriginalTransaction and debits the parent's refund capacity.
Unlinked A standalone refund with no parent transaction in the gateway. Submitted directly as a Return transaction without an OriginalTransaction reference. Flows through the normal auth + settlement pipeline with no capacity tracking against any prior transaction.
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
Values: 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.
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
Values: 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.
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
Values: 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.
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
Values: 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.
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
Values: 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.
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
Values: 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.
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
Values: 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.
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
Values: 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.
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
Values: 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.
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
Values: 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.
surchargeDisclosureChannel required string Channel on which the surcharge disclosure was acknowledged (`"VirtualTerminal"` / `"HostedPaymentPage"` / `"Api"`). Read-only on the API surface. nullable
Values: 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.
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
Values: 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.
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
Values: 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.
achWebAuthorizationTextVersion required string Version hash (`sha256:{hex}`) of `achWebAuthorizationText`. Read-only. nullable
Values: 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.
achWebAuthorizationConsumerIp required string Consumer IP recorded at ACH WEB authorization time (required NACHA evidence). Read-only. `null` for non-ACH tenders. nullable
Values: 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.
achWebAuthorizationAt required string (date-time) UTC timestamp of the ACH WEB authorization (server-stamped). Read-only. `null` for non-ACH tenders. nullable
Values: 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.
achWebAuthorizationSecCode required string SEC code the ACH WEB authorization was captured under (always `"WEB"`). Read-only. `null` for non-ACH tenders. nullable
Values: 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.
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
Values: 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.
achAuthorizationStatementVersion required string Version hash (`sha256:{hex}`) of `achAuthorizationStatementText`. Read-only. nullable
Values: 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.
achAuthorizationSecCode required string SEC code the VT ACH authorization was captured under (`"TEL"` or `"PPD"`). Read-only. `null` for non-VT-ACH tenders. nullable
Values: 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.
achAuthorizationChannel required string Channel on which the VT ACH authorization was attested (`"VirtualTerminal"`). Read-only. `null` for non-VT-ACH tenders. nullable
Values: 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.
achAuthorizationAt required string (date-time) UTC timestamp of the VT ACH authorization (server-stamped). Read-only. `null` for non-VT-ACH tenders. nullable
Values: 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.
idempotencyStatus required CreateIdempotencyStatus 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
Values: 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.
NotRequested The request carried no idempotencyKey, so there was nothing to deduplicate. A repeat send will charge again.
KeyIgnored The request carried an idempotencyKey, but deduplication is not enabled for this merchant, so the key had no deduplication effect. It is stored with the transaction and remains available through the lookup-by-idempotency-key operation, but a repeat send with the same key will charge again. Ask your provider to enable deduplication for the merchant.
KeyAccepted The request carried an idempotencyKey, deduplication is enabled, and this request claimed the key. This is the original create; a repeat send with the same key inside the deduplication window replays this transaction instead of charging again.
Replayed The idempotencyKey matched a create that had already completed for this merchant, so nothing was charged. The response body is that original transaction exactly as it stands, original identifiers and timestamps included.
idempotencyKey required string The idempotency key this transaction was created with, exactly as stored. `null` when the create request carried none. Read-only: the key is fixed at create time and an update never changes it. nullable
Values: 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.

This body has no documented fields.

nextContinuationToken required string Continuation token to use when requesting the next page. Null means no additional pages exist. nullable
Values: 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.
approxTotalCount required integer (int64) An approximate total count of matching items. This value is optional and may be stale or estimated, so treat it as an approximation. nullable
Values: 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.
pageItemCount required integer (int32) Convenience property for the number of items in this page. read only
Values: 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.
retrievedAt required string (date-time) When the page was retrieved. Useful for diagnostics and cache behavior.
Values: 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.

This response has no documented body fields.

403 Forbidden

Body: RemoteServiceErrorResponse RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo RemoteServiceErrorInfo
Values: 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.

This response has no documented body fields.

401 Unauthorized

Body: RemoteServiceErrorResponse RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo RemoteServiceErrorInfo
Values: 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.

This response has no documented body fields.

400 Bad Request

Body: RemoteServiceErrorResponse RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo RemoteServiceErrorInfo
Values: 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.

This response has no documented body fields.

404 Not Found

Body: RemoteServiceErrorResponse RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo RemoteServiceErrorInfo
Values: 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.

This response has no documented body fields.

501 Not Implemented

Body: RemoteServiceErrorResponse RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo RemoteServiceErrorInfo
Values: 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.

This response has no documented body fields.

500 Internal Server Error

Body: RemoteServiceErrorResponse RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo RemoteServiceErrorInfo
Values: 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.

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. The error reference lists the values `error.code` can take. 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. The error reference lists the values `error.code` can take.

Body: RemoteServiceErrorResponse RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo RemoteServiceErrorInfo
Values: 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.

This response has no documented body fields.

429 The request was refused because a rate limit was exceeded, or because something a later retry can clear stopped it. A rate limit refusal carries an `application/problem+json` body: 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. Any other refusal carries the standard error envelope as `application/json`, and its `error.code` names the cause.

Body: RemoteServiceErrorResponse RemoteServiceErrorResponse Each item has these fields.

Field Type Description
error required RemoteServiceErrorInfo RemoteServiceErrorInfo
Values: 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.

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.