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

Lists your recent Virtual Terminal transactions.

POST /api/transactions/virtual-terminal/recent deprecated

Requires: Transactions.VirtualTerminal, merchant scope.

Returns one page of the signed-in operator's own recent Virtual Terminal transactions for the merchant they are working in, newest first. Only transactions this user keyed in the Virtual Terminal are listed: nothing submitted through the API and nothing another user keyed. At most `PageSize` are returned per page; follow `NextContinuationToken` to read further back. `ApproxTotalCount` is not computed and is always absent. Each row is a summary that names the card or bank account by its last four digits only. To read a transaction in full, call `GET /api/transactions/{id}`. A caller with no current merchant, or no signed-in user, receives an empty page.

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

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 GetRecentVirtualTerminalInput. See the Request body section below for its fields.

Code sample language

cURL

curl -X POST "{{BASE_URL}}/api/transactions/virtual-terminal/recent" \
  -H "api-key: {{API_KEY}}" \
  -H "Content-Type: application/json" \
  -d '{
  "continuationToken": ""
}'

PowerShell

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

$body = @'
{
  "continuationToken": ""
}
'@

$response = Invoke-RestMethod -Method POST -Uri '{{BASE_URL}}/api/transactions/virtual-terminal/recent' `
    -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.transactionsGetRecentVirtualTerminal({
  "continuationToken": ""
});

TypeScript (raw HTTP)

const response = await fetch('{{BASE_URL}}/api/transactions/virtual-terminal/recent', {
  method: 'POST',
  headers: {
    "api-key": "{{API_KEY}}",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "continuationToken": ""
  }),
});

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<GetRecentVirtualTerminalInput>("""
    {
      "continuationToken": ""
    }
    """);

var result = await api.TransactionsGetRecentVirtualTerminalAsync(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/virtual-terminal/recent");
request.Headers.Add("api-key", "{{API_KEY}}");

request.Content = new StringContent("""
    {
      "continuationToken": ""
    }
    """, 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.GetRecentVirtualTerminalInput.from_dict({
      "continuationToken": ""
    })
    result = api.transactions_get_recent_virtual_terminal(body)

pip install requests

Python (raw HTTP)

import requests

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

body = {
  "continuationToken": ""
}

response = requests.request(
    "POST",
    "{{BASE_URL}}/api/transactions/virtual-terminal/recent",
    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
continuationToken required string The `NextContinuationToken` from the previous page. Omit it, or send `null`, for the first page. A token issued to another operator or for another merchant is refused with 400. nullablemax length 8192
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: ContinuationPagedResultDtoOfRecentVirtualTerminalTransactionDto ContinuationPagedResultDtoOfRecentVirtualTerminalTransactionDto Each item has these fields.

Field Type Description
items required array of RecentVirtualTerminalTransactionDto array of RecentVirtualTerminalTransactionDto 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 RecentVirtualTerminalTransactionDto:

Field Type Description
id required string (uuid) The transaction's identifier.
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) When the transaction was created, in UTC.
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 The kind of transaction: a sale, an authorization, a refund and so on.
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.
total required number (double) The transaction's total: the amount plus tip, tax, shipping, and any convenience fee or surcharge charged with 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.
customerId required string (uuid) The customer the transaction was recorded against, when one was chosen. 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.
customerName required string The name entered for the payer: the name on the card, or the name on the check. Absent when none was entered. 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 declared on the request, when one was: `Cash` for a cash sale. 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.
cardBrand required string The card brand, when a card was charged and its brand was recognized. 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.
cardLastFour required string The last four digits of the card number, when a card was charged. 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.
bankAccountLastFour required string The last four digits of the bank account number, when a bank account was debited. 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.
result required ResultCode ResultCode The processor's result, when one has been recorded. 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.
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.

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.