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

Apply a manual settlement-status override to one or more transactions.

POST /api/transactions/settlement-override deprecated

Requires: Transactions.Settlement.Override, merchant scope.

**Required permissions**: `Transactions.Settlement.Override` **Scope**: merchant

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

Code sample language
Request example

Sets one transaction's settlement status to SettlementSucceeded, for example after the processor's batch report confirms funding the gateway did not record. The response holds one result per id. The reason is required (5 to 500 characters) and is kept in the audit trail.

cURL

curl -X POST "{{BASE_URL}}/api/transactions/settlement-override" \
  -H "api-key: {{API_KEY}}" \
  -H "Content-Type: application/json" \
  -d '{
  "transactionIds": [
    "00000000-0000-0000-0000-000000000abc"
  ],
  "newStatus": "SettlementSucceeded",
  "reason": "Funding confirmed on the processor batch report"
}'

PowerShell

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

$body = @'
{
  "transactionIds": [
    "00000000-0000-0000-0000-000000000abc"
  ],
  "newStatus": "SettlementSucceeded",
  "reason": "Funding confirmed on the processor batch report"
}
'@

$response = Invoke-RestMethod -Method POST -Uri '{{BASE_URL}}/api/transactions/settlement-override' `
    -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.transactionSettlementOverrideOverride({
  "transactionIds": [
    "00000000-0000-0000-0000-000000000abc"
  ],
  "newStatus": "SettlementSucceeded",
  "reason": "Funding confirmed on the processor batch report"
});

TypeScript (raw HTTP)

const response = await fetch('{{BASE_URL}}/api/transactions/settlement-override', {
  method: 'POST',
  headers: {
    "api-key": "{{API_KEY}}",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "transactionIds": [
      "00000000-0000-0000-0000-000000000abc"
    ],
    "newStatus": "SettlementSucceeded",
    "reason": "Funding confirmed on the processor batch report"
  }),
});

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<SettlementOverrideRequestDto>("""
    {
      "transactionIds": [
        "00000000-0000-0000-0000-000000000abc"
      ],
      "newStatus": "SettlementSucceeded",
      "reason": "Funding confirmed on the processor batch report"
    }
    """);

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

request.Content = new StringContent("""
    {
      "transactionIds": [
        "00000000-0000-0000-0000-000000000abc"
      ],
      "newStatus": "SettlementSucceeded",
      "reason": "Funding confirmed on the processor batch report"
    }
    """, 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.SettlementOverrideRequestDto.from_dict({
      "transactionIds": [
        "00000000-0000-0000-0000-000000000abc"
      ],
      "newStatus": "SettlementSucceeded",
      "reason": "Funding confirmed on the processor batch report"
    })
    result = api.transaction_settlement_override_override(body)

pip install requests

Python (raw HTTP)

import requests

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

body = {
  "transactionIds": [
    "00000000-0000-0000-0000-000000000abc"
  ],
  "newStatus": "SettlementSucceeded",
  "reason": "Funding confirmed on the processor batch report"
}

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

Sets two transactions to SettlementOnHold in one request. Up to 200 ids may be sent. Each id gets its own result: one that cannot take the override is skipped with a reason while the others are applied. Only WaitingForSettlement, SettlementSucceeded, NotEligible, SettlementOnHold and SettlementFailed can be set this way.

cURL

curl -X POST "{{BASE_URL}}/api/transactions/settlement-override" \
  -H "api-key: {{API_KEY}}" \
  -H "Content-Type: application/json" \
  -d '{
  "transactionIds": [
    "00000000-0000-0000-0000-000000000abc",
    "00000000-0000-0000-0000-000000000abd"
  ],
  "newStatus": "SettlementOnHold",
  "reason": "Held while a funding discrepancy is investigated"
}'

PowerShell

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

$body = @'
{
  "transactionIds": [
    "00000000-0000-0000-0000-000000000abc",
    "00000000-0000-0000-0000-000000000abd"
  ],
  "newStatus": "SettlementOnHold",
  "reason": "Held while a funding discrepancy is investigated"
}
'@

$response = Invoke-RestMethod -Method POST -Uri '{{BASE_URL}}/api/transactions/settlement-override' `
    -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.transactionSettlementOverrideOverride({
  "transactionIds": [
    "00000000-0000-0000-0000-000000000abc",
    "00000000-0000-0000-0000-000000000abd"
  ],
  "newStatus": "SettlementOnHold",
  "reason": "Held while a funding discrepancy is investigated"
});

TypeScript (raw HTTP)

const response = await fetch('{{BASE_URL}}/api/transactions/settlement-override', {
  method: 'POST',
  headers: {
    "api-key": "{{API_KEY}}",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "transactionIds": [
      "00000000-0000-0000-0000-000000000abc",
      "00000000-0000-0000-0000-000000000abd"
    ],
    "newStatus": "SettlementOnHold",
    "reason": "Held while a funding discrepancy is investigated"
  }),
});

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<SettlementOverrideRequestDto>("""
    {
      "transactionIds": [
        "00000000-0000-0000-0000-000000000abc",
        "00000000-0000-0000-0000-000000000abd"
      ],
      "newStatus": "SettlementOnHold",
      "reason": "Held while a funding discrepancy is investigated"
    }
    """);

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

request.Content = new StringContent("""
    {
      "transactionIds": [
        "00000000-0000-0000-0000-000000000abc",
        "00000000-0000-0000-0000-000000000abd"
      ],
      "newStatus": "SettlementOnHold",
      "reason": "Held while a funding discrepancy is investigated"
    }
    """, 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.SettlementOverrideRequestDto.from_dict({
      "transactionIds": [
        "00000000-0000-0000-0000-000000000abc",
        "00000000-0000-0000-0000-000000000abd"
      ],
      "newStatus": "SettlementOnHold",
      "reason": "Held while a funding discrepancy is investigated"
    })
    result = api.transaction_settlement_override_override(body)

pip install requests

Python (raw HTTP)

import requests

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

body = {
  "transactionIds": [
    "00000000-0000-0000-0000-000000000abc",
    "00000000-0000-0000-0000-000000000abd"
  ],
  "newStatus": "SettlementOnHold",
  "reason": "Held while a funding discrepancy is investigated"
}

response = requests.request(
    "POST",
    "{{BASE_URL}}/api/transactions/settlement-override",
    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
transactionIds required array of string (uuid) array of The transactions to apply the override to. 1 to 200 ids per request. nullablemax items 200
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.
newStatus required SettlementStatus SettlementStatus The settlement status to switch to. Must be admin-targetable.
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.
WaitingForSettlement Transaction is waiting to be settled with the processor
SettlementSucceeded Settlement completed successfully with the processor
SettlementFailed Settlement failed - requires review and retry (rollback)
NotEligible Transaction is not eligible for settlement (voided, reversed, or not yet captured)
SettlementInProgress Settlement is currently in progress with the processor.
SettlementOnHold Settlement is on hold and cannot proceed at the moment.
SettlementRolledBack Settlement was rolled back or reversed after a completed attempt. Distinct from SettlementFailed which indicates a transient failure needing retry.
ReversalFailed A reversal was attempted but the processor did not confirm that the authorization hold was voided: the contributor saw a non-Ok result code (transport failure, timeout, swallowed exception, malformed response, etc.). Distinct from NotEligible (a confirmed reversal/void) and SettlementFailed (a settlement-time failure). Operations need to confirm the hold state with the processor and reverse manually if required. The transaction's Stage is left at the pre-reversal value; the close-stage history entry is NOT written.
Pending The provider owns settlement and reports the outcome on its own schedule, so the transaction belongs to no gateway batch. Used for ACH sales and alternative payments. A background sync moves the transaction on as the provider reports, through any of the ACH in-flight statuses, to a terminal status.
Accepted The ACH processor has accepted the transaction for processing. VeriCheck V2 only: the entry has been received and accepted by the payment network.
Originated The ACH transaction has been originated (submitted to the NACHA network). VeriCheck V2 only: the debit has been forwarded to the RDFI.
Verifying The ACH processor is verifying the bank account before origination. VeriCheck V2 only: the check runs on the processor's side, before the debit reaches the ACH network.
PartiallySettled The ACH transaction has been partially settled. VeriCheck V2 only: a portion of the funds have cleared.
reason required string Operator-supplied justification. Required, trimmed, 5 to 500 chars. 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: array of SettlementOverrideAttemptResult array of SettlementOverrideAttemptResult Each item has these fields.

Field Type Description
transactionId 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.
succeeded required boolean True when the override was applied and persisted.
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.
previousStatus required SettlementStatus SettlementStatus The status the transaction held immediately before the override (or null when it could not be loaded). 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.
WaitingForSettlement Transaction is waiting to be settled with the processor
SettlementSucceeded Settlement completed successfully with the processor
SettlementFailed Settlement failed - requires review and retry (rollback)
NotEligible Transaction is not eligible for settlement (voided, reversed, or not yet captured)
SettlementInProgress Settlement is currently in progress with the processor.
SettlementOnHold Settlement is on hold and cannot proceed at the moment.
SettlementRolledBack Settlement was rolled back or reversed after a completed attempt. Distinct from SettlementFailed which indicates a transient failure needing retry.
ReversalFailed A reversal was attempted but the processor did not confirm that the authorization hold was voided: the contributor saw a non-Ok result code (transport failure, timeout, swallowed exception, malformed response, etc.). Distinct from NotEligible (a confirmed reversal/void) and SettlementFailed (a settlement-time failure). Operations need to confirm the hold state with the processor and reverse manually if required. The transaction's Stage is left at the pre-reversal value; the close-stage history entry is NOT written.
Pending The provider owns settlement and reports the outcome on its own schedule, so the transaction belongs to no gateway batch. Used for ACH sales and alternative payments. A background sync moves the transaction on as the provider reports, through any of the ACH in-flight statuses, to a terminal status.
Accepted The ACH processor has accepted the transaction for processing. VeriCheck V2 only: the entry has been received and accepted by the payment network.
Originated The ACH transaction has been originated (submitted to the NACHA network). VeriCheck V2 only: the debit has been forwarded to the RDFI.
Verifying The ACH processor is verifying the bank account before origination. VeriCheck V2 only: the check runs on the processor's side, before the debit reaches the ACH network.
PartiallySettled The ACH transaction has been partially settled. VeriCheck V2 only: a portion of the funds have cleared.
newStatus required SettlementStatus SettlementStatus The status the transaction holds after the override (null when the override did not apply). 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.
WaitingForSettlement Transaction is waiting to be settled with the processor
SettlementSucceeded Settlement completed successfully with the processor
SettlementFailed Settlement failed - requires review and retry (rollback)
NotEligible Transaction is not eligible for settlement (voided, reversed, or not yet captured)
SettlementInProgress Settlement is currently in progress with the processor.
SettlementOnHold Settlement is on hold and cannot proceed at the moment.
SettlementRolledBack Settlement was rolled back or reversed after a completed attempt. Distinct from SettlementFailed which indicates a transient failure needing retry.
ReversalFailed A reversal was attempted but the processor did not confirm that the authorization hold was voided: the contributor saw a non-Ok result code (transport failure, timeout, swallowed exception, malformed response, etc.). Distinct from NotEligible (a confirmed reversal/void) and SettlementFailed (a settlement-time failure). Operations need to confirm the hold state with the processor and reverse manually if required. The transaction's Stage is left at the pre-reversal value; the close-stage history entry is NOT written.
Pending The provider owns settlement and reports the outcome on its own schedule, so the transaction belongs to no gateway batch. Used for ACH sales and alternative payments. A background sync moves the transaction on as the provider reports, through any of the ACH in-flight statuses, to a terminal status.
Accepted The ACH processor has accepted the transaction for processing. VeriCheck V2 only: the entry has been received and accepted by the payment network.
Originated The ACH transaction has been originated (submitted to the NACHA network). VeriCheck V2 only: the debit has been forwarded to the RDFI.
Verifying The ACH processor is verifying the bank account before origination. VeriCheck V2 only: the check runs on the processor's side, before the debit reaches the ACH network.
PartiallySettled The ACH transaction has been partially settled. VeriCheck V2 only: a portion of the funds have cleared.
skipReason required string Stable diagnostic code populated when `succeeded` is false. Values are drawn from `SettlementOverrideSkipReasons`. 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 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.