Error codes
832 error codes across 56 modules, generated from the platform source rather than maintained by hand.
A processor response code isn't an API error code. An error code means the request was refused before or instead of being processed, and the error reference documents it. A processor response code means the request reached a processor and the processor answered, which covers an approval as much as a decline. See the processor response-code reference.
The error reference isn't available right now
This instance couldn't load its API specification, so this page lists nothing. The reference returns as soon as the specification is readable again.
This instance publishes no error reference
The API specification loaded, and it carries no error-code catalog. That's what an instance running a build from before the catalog was published looks like. The error envelope shapes below are accurate whether or not the catalog is present.
Error response shapes
Every failed request returns the same envelope: a single error object. Which of its fields are populated depends on why the request failed, so these are the four shapes a caller has to handle. The bodies are illustrative and carry no real data.
409 Business rule refused the request
The request was understood and rejected by a platform rule. This is the shape that carries a code from the catalog above, so branch on error.code rather than on the message text. The HTTP status is the one listed against the code.
{
"error": {
"code": "Transactions:OperationNotAllowed",
"message": "The operation 'Void' is not allowed on a Sale transaction with result 'Approved' and settlement state 'Settled'.",
"details": null,
"data": {
"correlationId": "0123456789abcdef0123456789abcdef"
},
"validationErrors": null
}
}400 Request failed validation
One or more fields were rejected before any rule ran. error.code is null on the envelope and the causes are in validationErrors, one entry per failure. An entry carries code when the validator declared a publishable one, and memberPaths when the full path says more than members does (an element inside a collection, for example). Both keys are omitted when they would add nothing.
{
"error": {
"code": null,
"message": "Your request is not valid!",
"details": "The following errors were detected during validation.",
"data": {
"correlationId": "0123456789abcdef0123456789abcdef"
},
"validationErrors": [
{
"message": "'Amount' must be greater than 0.",
"members": ["amount"]
},
{
"message": "The card has expired.",
"members": ["expirationDate"],
"code": "CardData:CardExpired"
},
{
"message": "'Value' must not be empty.",
"members": ["value"],
"memberPaths": ["customFields[2].value"]
}
]
}
}404 Resource not found
The id in the path names no record the caller can see. Most resources answer with a null error.code and a message naming the resource type and the id; a resource that publishes a not-found code in the catalog above carries it in error.code instead, so check for one before matching on the message.
{
"error": {
"code": null,
"message": "There is no entity Transaction with id = 7d1f3a52-0c4e-4b8a-9e21-5a6b7c8d9e00!",
"details": null,
"data": {
"correlationId": "0123456789abcdef0123456789abcdef"
},
"validationErrors": null
}
}403 Caller is not authorized
The credential was accepted and does not carry what the operation requires. The code is the framework's, not a platform code, so it is worth matching on explicitly. Each operation page lists what it requires.
{
"error": {
"code": "Volo.Authorization:010001",
"message": "Authorization failed! Given policy has not granted.",
"details": null,
"data": {
"correlationId": "0123456789abcdef0123456789abcdef"
},
"validationErrors": null
}
}500 Unexpected server fault
Something failed that no rule anticipated. There is no code to branch on and the message is deliberately generic: the diagnostic detail stays in the platform's logs rather than going to the caller. Quote error.data.correlationId (the same value as the X-Correlation-Id response header) when you contact support: it's what finds the failure in those logs. Retrying an unsafe operation after this risks a duplicate, so reconcile before you retry.
{
"error": {
"code": null,
"message": "An internal error occurred during your request!",
"details": null,
"data": {
"correlationId": "0123456789abcdef0123456789abcdef"
},
"validationErrors": null
}
}Codes by module
error.code carries one of these values, so a caller can branch on the cause without parsing message text. The status column is what this instance returns when the code is raised. A code with no message defined is listed rather than hidden: it still reaches a caller over the wire.
Account
| Code | Status | Message |
|---|---|---|
AccountPro:0001
framework |
403 | You must upload an image! No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Account Updater
| Code | Status | Message |
|---|---|---|
AccountUpdater:MerchantIdRequired
framework |
400 | A merchant is required for account updater queries. No message defined. A submission query omitted the merchant. Submissions are partitioned by MerchantId, so the query is refused rather than run as a cross-partition scan. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
AccountUpdater:RunsAreReadOnly
framework |
403 | Account updater runs are read-only and cannot be created, changed, or deleted. No message defined. A write was attempted against a run. Runs are read-only audit records of what the provider did, so create, update and delete are all refused. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
AccountUpdater:SubmissionsAreReadOnly
framework |
403 | Account updater submissions are read-only and cannot be created, changed, or deleted. No message defined. A write was attempted against a submission. Submissions are read-only audit records, so create, update and delete are all refused. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
AccountUpdater:UseContTokenPaging
framework |
400 | This list must be paged with a continuation token. Use the continuation list endpoint. No message defined. The caller used the skip/take GetListAsync overload. Runs and submissions are Cosmos DB-backed, so listing them goes through GetContinuationListAsync instead. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Accounting
| Code | Status | Message |
|---|---|---|
Accounting:ConnectionAlreadyExists
framework |
409 | An accounting connection for this provider already exists for the merchant. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Accounting:ConnectionNotFound
framework |
404 | The requested accounting connection was not found. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Accounting:DuplicateProviderKey
framework |
409 | More than one accounting provider is registered for the same key. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Accounting:InvalidOAuthState
framework |
400 | The authorization response could not be validated. Please start the connection again. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Accounting:NoActiveConnection
framework |
409 | No active accounting connection is configured for this merchant. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Accounting:OAuthExchangeFailed
framework |
429 | Could not complete authorization with the accounting provider. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Accounting:SyncRecordNotRetryable
framework |
409 | This sync record is not in a state that can be retried. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Accounting:UnknownProvider
framework |
400 | No accounting provider is registered for the requested key. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Announcements
| Code | Status | Message |
|---|---|---|
Announcements:AnnouncementNotFound
framework |
404 | The announcement was not found. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Announcements:BodyRequired
framework |
400 | The announcement body is required. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Announcements:CannotModifyAnnouncementOutsideAccess
framework |
404 | You do not have permission to modify this announcement. No message defined. Cannot modify an announcement you do not have access to. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Announcements:CannotTargetResellerOutsideHierarchy
framework |
403 | You can only target resellers within your hierarchy. No message defined. Cannot target a reseller above or outside your hierarchy. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Announcements:HostScopeRequiresNullTenant
framework |
400 | Host-level announcements cannot have a tenant specified. No message defined. Host scope requires null TenantId. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Announcements:InsufficientScopeAccess
framework |
403 | You do not have access to the specified scope. No message defined. User does not have access to the specified reseller or merchant scope. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Announcements:InvalidScopeConfiguration
framework |
400 | Invalid scope configuration. Please verify the reseller or merchant selection. No message defined. Invalid scope configuration. Check ResellerId/MerchantId/ResellerPathPrefix based on scope. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Announcements:MerchantScopeRequiresMerchantId
framework |
400 | Merchant-scoped announcements require a merchant to be selected. No message defined. Merchant scope requires MerchantId. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Announcements:ResellerScopeRequiresResellerId
framework |
400 | Reseller-scoped announcements require a reseller to be selected. No message defined. Reseller scope requires ResellerId and ResellerPathPrefix. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Announcements:RolesAudienceRequiresRoleNames
framework |
400 | At least one role must be selected when targeting by roles. No message defined. Target audience requires at least one role name when type is Roles. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Announcements:StartDateMustBeBeforeEndDate
framework |
400 | The start date must be before the end date. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Announcements:TitleRequired
framework |
400 | The announcement title is required. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Announcements:TooManyRoleNames
framework |
400 | Too many roles specified in the target audience. No message defined. Too many role names in the target audience. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Announcements:TooManyUserIds
framework |
400 | Too many users specified in the target audience. No message defined. Too many user IDs in the target audience. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Announcements:UserAnnouncementStateNotFound
framework |
404 | User announcement state not found. No message defined. The user announcement state was not found. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Announcements:UsersAudienceRequiresUserIds
framework |
400 | At least one user must be selected when targeting by users. No message defined. Target audience requires at least one user ID when type is Users. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Api Key Authorization
| Code | Status | Message |
|---|---|---|
KEY_ENVIRONMENT_MISMATCH
framework |
401 | The key is in service but belongs to the other environment: a sk_test_ key against a merchant that is now trading live, or a sk_live_ key against one that is not. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
KEY_EXPIRED
framework |
401 | The key was in service but has passed its expiry. Renew it. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
KEY_INVALID
framework |
401 | The presented value did not match any key. A malformed value is answered the same way. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
KEY_REVOKED
framework |
401 | The key has been revoked (or otherwise taken out of service) and will never be accepted again. Mint a new key; the value will not start working again. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
KEY_SCOPE_INSUFFICIENT
framework |
403 | The key authenticated but is scoped, and none of the scopes it holds covers the operation it addressed. Nothing is wrong with the credential itself: grant the key the scope the operation needs, or call it with one that already holds it. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
KEY_SUSPENDED
framework |
401 | The key has been put out of service temporarily and is not being accepted right now. It has not been revoked: an administrator can reinstate the same value, so the remedy is to ask them rather than to mint a replacement. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
TRIAL_EXPIRED
framework |
401 | The key is in service and stamped for the right environment, but the merchant it belongs to is on a time-limited plan whose deadline has passed. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Authorization
| Code | Status | Message |
|---|---|---|
Volo.Authorization:010001
framework |
403 | Authorization failed! Given policy has not granted. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Volo.Authorization:010002
framework |
403 | Authorization failed! Given policy has not granted: {PolicyName} No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Volo.Authorization:010003
framework |
403 | Authorization failed! Given policy has not granted for given resource: {ResourceName} No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Volo.Authorization:010004
framework |
403 | Authorization failed! Given requirement has not granted for given resource: {ResourceName} No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Volo.Authorization:010005
framework |
403 | Authorization failed! Given requirements has not granted for given resource: {ResourceName} No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Campaigns
| Code | Status | Message |
|---|---|---|
Campaigns:CampaignCapReached
framework |
409 | This campaign has reached its limit and is no longer accepting payments. No message defined. The campaign has reached a cap that closes it, so the payment was refused before any charge was attempted. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Campaigns:CampaignComparisonTooManyCampaigns
framework |
400 | You can compare at most {Maximum} campaigns at once, and {Requested} were named. No message defined. A comparison named more campaigns than the surface will report on at once. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Campaigns:CampaignIsArchived
framework |
400 | That campaign is archived and cannot take on new payment links. No message defined. An archived campaign cannot take on new members. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Campaigns:CampaignNotAvailableForMerchant
framework |
400 | That campaign is not available to this merchant. No message defined. The referenced campaign is not available to the merchant of the resource trying to join it. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Campaigns:CampaignNotFound
framework |
404 | That campaign could not be found. No message defined. The campaign was not found, or is not visible to the caller. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Campaigns:IllegalStatusTransition
framework |
409 | A campaign cannot move from {CurrentStatus} to {RequestedStatus}. No message defined. The requested status transition is not legal from the campaign's current status. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Campaigns:LimitMustBePositive
framework |
400 | A campaign limit or goal must be greater than zero. No message defined. A cap or goal amount was set to a value that is not positive. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Campaigns:MerchantIdIsImmutable
framework |
409 | A campaign cannot be moved to a different merchant after it is created. No message defined. A campaign's owning merchant cannot be changed after it is created. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Campaigns:StartMustBeBeforeEnd
framework |
400 | The campaign start must fall before the campaign end. No message defined. The scheduled start must fall before the scheduled end. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Cli Access
| Code | Status | Message |
|---|---|---|
WinkPG.CliAccess:AuthenticationContextMissing
framework |
403 | Your sign-in did not satisfy the authentication context this instance requires for restricted operations. Sign in again and complete the extra verification. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
WinkPG.CliAccess:CallerNotOperator
framework |
403 | Only a CLI operator signed in with Microsoft Entra ID can request an access grant. Sign in with winkpg login and try again. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
WinkPG.CliAccess:GrantExhausted
framework |
403 | The access grant has been used as many times as it allows. Request a new one. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
WinkPG.CliAccess:GrantExpired
framework |
403 | The access grant has expired. Request a new one. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
WinkPG.CliAccess:GrantIdentityMismatch
framework |
403 | The access grant was issued to someone else. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
WinkPG.CliAccess:GrantMerchantMismatch
framework |
403 | The access grant was issued for a different merchant. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
WinkPG.CliAccess:GrantMissing
framework |
403 | This operation needs an access grant. Request one and send its id in the X-WinkPG-Cli-Grant header. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
WinkPG.CliAccess:GrantNotFound
framework |
403 | The access grant was not found. Request a new one. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
WinkPG.CliAccess:GrantOperationMismatch
framework |
403 | The access grant was issued for a different operation. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
WinkPG.CliAccess:GrantRestrictionMismatch
framework |
403 | The access grant was issued for a different kind of restricted operation. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
WinkPG.CliAccess:GrantRevoked
framework |
403 | The access grant was revoked. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
WinkPG.CliAccess:MerchantUndetermined
framework |
403 | The merchant this operation acts for could not be determined from the request, so no access grant can be checked against it. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
WinkPG.CliAccess:OperatorRoleMissing
framework |
403 | Your sign-in does not carry the restricted access operator role. Ask an administrator to assign it, then sign in again. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
WinkPG.CliAccess:RestrictedCommandsDisabled
framework |
403 | Restricted CLI operations are turned off on this instance. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
WinkPG.CliAccess:SignInNotFresh
framework |
403 | Restricted operations need a recent interactive sign-in. Sign in again and retry within the allowed window. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Core
| Code | Status | Message |
|---|---|---|
WinkPG:EntityLocked
framework |
409 | This {EntityType} is locked and cannot be modified. Unlock it first to make changes. No message defined. A write was attempted against an entity an administrator has locked. Raised by ThrowIfLocked for any entity implementing IHasEntityLock. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
WinkPG:LockReasonTooLong
framework |
400 | Lock reason cannot exceed {MaxLength} characters. No message defined. A lock was requested with a reason longer than MaxLockReasonLength characters. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Customers
| Code | Status | Message |
|---|---|---|
Customers:ContractNotActiveForPause
framework |
409 | Only an active contract can be paused. This contract is already paused or has been stopped. No message defined. A pause was requested for a contract that is not active: it is already paused, suspended by the billing engine, or deactivated. Only a running contract can be paused; anything else would relabel a stop that had a different cause. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Customers:ContractNotPaused
framework |
409 | This contract is not paused. Use the active toggle to reactivate a suspended or deactivated contract. No message defined. A resume was requested for a contract that is not paused. Resume is the inverse of pause, and reactivating a suspended or manually deactivated contract stays the form's active toggle so the operator makes that decision knowingly. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Customers:ContractPaymentTokenNotAccessible
framework |
404 | The stored payment method on this contract belongs to a merchant this customer cannot be charged under. No message defined. A contract create or update supplied a stored-payment-method handle that resolves to a token vaulted at a merchant the contract's customer does not belong to, and which the customer's merchant may not charge under the reseller token-sharing rules. Rejected so a caller cannot bind a contract to another merchant's stored credential. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Customers:ContractPaymentTokenUnresolved
framework |
404 | The stored payment method on this contract could not be found. It may have been removed or invalidated. No message defined. A contract create or update supplied a stored-payment-method handle (PaymentTokenReference) that does not resolve to a live payment token: the handle is unknown, or the token behind it has been invalidated. Rejected at write time so the caller gets a deterministic error rather than a contract that silently fails on its first billing run. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Customers:ContractPlanInactive
framework |
409 | The selected plan is no longer accepting new subscriptions. No message defined. A contract named a plan that is not accepting new subscriptions. An inactive plan keeps pricing the contracts already on it, but nothing new may join it. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Customers:ContractPlanMerchantImmutable
framework |
400 | A plan cannot be moved to a different merchant. Create it in the destination merchant's catalog instead. No message defined. A contract plan update named a different owning merchant. The merchant is the plan's Cosmos partition key and cannot change; moving a plan between merchants means creating it in the destination catalog and re-subscribing its contracts. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Customers:ContractPlanNameAlreadyExists
framework |
409 | A plan with this name already exists for this merchant. Choose a different name. No message defined. A contract plan create or rename supplied a name already held by another plan under the same merchant. Names are what the contract form's plan picker shows, so two live plans sharing one is how a contract ends up subscribed to the wrong price. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Customers:ContractPlanScheduledPriceNotInFuture
framework |
400 | A scheduled price change must take effect in the future. Choose a later date, or apply the change immediately. No message defined. A scheduled contract plan price change named an effective moment that has already passed. A scheduled change that is already due is an immediate change with the wrong label, and the two reach different subscribers, so the caller is asked which one they meant rather than having it guessed for them. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Customers:ContractPlanUnresolved
framework |
404 | The selected plan could not be found. It may have been deleted, or it belongs to a different merchant. No message defined. A contract named a plan that could not be read: it does not exist, it belongs to another merchant, or it has been deleted. Rejected at write time so the contract cannot be saved pointing at a price the billing engine will not be able to resolve. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Customers:ContractResumeScheduleExhausted
framework |
409 | The schedule has no billing date from today on, so there is nothing to resume onto. Edit the schedule first. No message defined. A resume was requested but the contract's schedule has no occurrence from today on, so there is nothing to resume billing onto. The schedule needs editing first. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Customers:DuplicateCustomerName
framework |
400 | Customer name must be unique within the same merchant. No message defined. A customer create or rename supplied a name already held by another customer under the same merchant. Raised as a validation rejection (HTTP 400) against the name member, not as a business exception: the create path has answered the standard validation envelope for as long as the rule has existed and a live integration reads it. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Customers:InvalidParentMerchant
framework |
403 | The selected parent merchant is not valid for this customer. No message defined. The customer named a parent merchant that does not exist, is inactive, or is outside the caller's merchant scope. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Customers:ParentMerchantCannotChange
framework |
403 | A customer cannot be moved to a different merchant. No message defined. A customer's parent merchant was changed after creation. The owning merchant is fixed for the life of the customer, because the records filed under it are scoped by it. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Customers:RecurringBillingRunNotFound
framework |
404 | The recurring billing run could not be found. No message defined. The requested recurring-billing run does not exist, or is outside the caller's scope. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Customers:RecurringBillingTriggerFailed
framework |
429 | The recurring billing run could not be started. Please try again. No message defined. Starting the recurring-billing workflow failed. The underlying fault is logged with its exception; the caller gets a single deterministic code rather than orchestrator internals. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Customers:SandboxRecurringBillingCohortTooLarge
framework |
400 | This merchant has {count} active contracts, and an on-demand run handles at most {maximum} in one request. They will bill on their own schedule. No message defined. The merchant holds more active contracts than the accelerator will bill in one request. The run is synchronous and every contract in it is a processor round trip, so the cohort is bounded rather than allowed to hold a request open indefinitely; the scheduled run has no such bound. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Customers:SandboxRecurringBillingEvidenceUnknown
framework |
403 | Running recurring billing on demand is for the sandbox only, and this request did not state which environment it was for. Authenticate with a test API key (sk_test_); a key issued before environments existed has to be rotated first. No message defined. An accelerated recurring billing run was requested by a caller carrying no environment stamp, or one the platform does not mint: a cookie session, or an API key issued before environments existed. "We cannot tell" has one safe answer on a path that charges a card. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Customers:SandboxRecurringBillingInProgress
framework |
409 | An on-demand recurring billing run is already going for this merchant. It finishes in the request that started it, so wait for that response rather than retrying this one. No message defined. An accelerated recurring billing run was requested for a merchant that already has one running. The second caller is refused rather than queued: the first is synchronous and about to answer, and by the time it does there is nothing left for the second to bring forward. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Customers:SandboxRecurringBillingMerchantUnknown
framework |
403 | This API key is not tied to a merchant, so there are no contracts to bill. Use a key issued for the sandbox merchant whose contracts you want to run. No message defined. An accelerated recurring billing run was requested by a caller whose credential names no merchant. The run acts on the caller's own merchant and takes no merchant argument, so without the claim there is nothing to bill. Raised by an admin or reseller key, which is not tied to a merchant. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Customers:SandboxRecurringBillingProductionKeyRefused
framework |
403 | Running recurring billing on demand is for the sandbox only. This request used a live API key, and when a production contract bills is scheduled by the platform. Use a test key (sk_test_) against a sandbox merchant. No message defined. An accelerated recurring billing run was requested with a key stamped for the live world. Refused: when a production contract bills is a scheduling decision the platform owns, and bringing it forward would charge a real card. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Customers:SandboxRecurringBillingProductionMerchantRefused
framework |
403 | This test API key belongs to a merchant that is no longer in the sandbox, so recurring billing cannot be run on demand for it. Its contracts bill on their own schedule. No message defined. An accelerated recurring billing run was requested with a test key whose merchant is no longer in the sandbox. Reported apart from SandboxRecurringBillingProductionKeyRefused because the remedy differs: a key is stamped once at mint time and nothing re-stamps it, so a merchant that has gone live (or been suspended) still authenticates an old test key. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Developer Portal
| Code | Status | Message |
|---|---|---|
DeveloperPortal:InvitationIssueRateLimited
framework |
429 | Too many invitations have been sent for this merchant in a short time. Try again later, once the sending limit resets. No message defined. The merchant's invitation-issue budget for the current window is spent. Retrying later succeeds with no configuration change, which is why the code maps to 429. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Entity Templater
| Code | Status | Message |
|---|---|---|
EntityTemplates:InvalidTemplateContent
framework |
409 | This template's saved content could not be read. Save a new template from a current record. No message defined. The stored template payload could not be deserialized into the target entity. Raised instead of letting a JsonException escape as an unhandled 500. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Entity Templates
| Code | Status | Message |
|---|---|---|
EntityTemplates:DefaultTemplateEntityTypeNotSupported
framework |
400 | This kind of record cannot have a default template. No message defined. The entity type has no default-template support: it is not in the DefaultTemplateEntityTypes catalog, so there is no setting to store a default in. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
EntityTemplates:DefaultTemplateNotVisibleToScope
framework |
400 | This template is not available to the records that would use it, so it cannot be the default here. Choose a template this level owns, one published by a reseller above it, or a published platform template. No message defined. The template is not one the entities created under the target scope will be able to load (for example another merchant's private template proposed as a reseller default). Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
EntityTemplates:DefaultTemplateScopeNotAllowed
framework |
400 | A default template for this kind of record cannot be set at this level. No message defined. A default for this entity type cannot be stored at the requested scope (a hosted payment page has no platform-wide default). Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
EntityTemplates:DefaultTemplateTemplaterUnavailable
framework |
409 | Templates for this kind of record cannot be checked here, so one cannot be set as the default. No message defined. No templater is registered for the entity type in this host, so the template cannot be validated and therefore cannot be designated a default. Raised instead of storing a pointer nothing can check. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
EntityTemplates:DuplicateTemplateName
framework |
409 | A template with this name already exists here. Choose a different name. No message defined. Another template with the same name already exists under the same owner (reseller, merchant or platform). A name is unique within its owning rung; the same name under a different owner is allowed. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
EntityTemplates:EmptyTemplateContent
framework |
409 | This template has no saved content, so there is nothing to create from it. No message defined. The template exists but stores no content, so there is nothing to create from. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
EntityTemplates:IncompatibleSchemaVersion
framework |
409 | This template was saved by an older version and can no longer be applied. Save a new template from a current record. No message defined. The template was written under a schema version this templater cannot read. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
EntityTemplates:MerchantTemplateCannotBePublished
framework |
400 | A merchant's template is private to that merchant and cannot be published. No message defined. A merchant-owned template cannot be published: there is nobody below a merchant to publish to. Only a reseller-owned or platform template has an audience. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
EntityTemplates:TemplateEntityTypeMismatch
framework |
400 | This template is for a different kind of record, so it cannot be applied here. No message defined. The template names a different entity type than the service asked to apply it. Security relevant: it is what stops a template's JSON being deserialized into a foreign entity type. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
EntityTemplates:TemplatesUnavailable
framework |
409 | Templates are not available here. No message defined. The host serving this call does not compose the EntityTemplates module, so there is no template store to read or write. Raised by NullEntityTemplateCrudAppService rather than letting a caller believe a template was saved. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
EntityTemplates:TemplatingDisabled
framework |
409 | Templates are not switched on for this account yet. No message defined. Templating is switched off here (the EntityTemplates.Enabled feature). Raised by the consumer templater methods and by every catalogue application service entry point, for every rung, so the call answers with a coded business error rather than a 500 or a silent no-op. No rung bypasses the feature. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
EntityTemplates:TemplatingNotSupportedForContracts
framework |
400 | Templates are not available for contracts. No message defined. Templating is not implemented for contracts. Raised instead of letting the generated route fall through to an unhandled failure, so the published surface answers with a coded business error rather than a 500. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Favorites
| Code | Status | Message |
|---|---|---|
Favorites:EntityTypeRequired
framework |
400 | The favorite entity type is required. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Favorites:FavoriteNotFound
framework |
404 | The favorite was not found. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Favorites:LabelRequired
framework |
400 | The favorite label is required. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Favorites:MaxPerUserReached
framework |
403 | Maximum number of favorites reached. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Favorites:RouteRequired
framework |
400 | The favorite route is required. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Favorites:UnknownEntityType
framework |
400 | Unknown favorite entity type. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Feature Management
| Code | Status | Message |
|---|---|---|
Volo.Abp.FeatureManagement:InvalidFeatureValue
framework |
403 | {0} feature value is not valid! No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Features
| Code | Status | Message |
|---|---|---|
Volo.Feature:010001
framework |
403 | Feature is not enabled: {FeatureName} No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Volo.Feature:010002
framework |
403 | Required features are not enabled. All of these features must be enabled: {FeatureNames} No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Volo.Feature:010003
framework |
403 | Required features are not enabled. At least one of these features must be enabled: {FeatureNames} No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
File Management
| Code | Status | Message |
|---|---|---|
FileManagement:0001
framework |
403 | '{DirectoryName}' is not a valid folder name for a folder. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
FileManagement:0002
framework |
403 | '{FileName}' is not a valid file name. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
FileManagement:0003
framework |
403 | Already exists a folder with the name '{DirectoryName}' No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
FileManagement:0004
framework |
403 | You cannot move a folder to under to its child folder. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
FileManagement:0005
framework |
403 | Already exists a file with the name '{FileName}' No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
FileManagement:0006
framework |
403 | Directory not found! No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
FileManagement:0007
framework |
403 | Not enough storage size! Your total storage size is {StorageSize} and remaining {RemainingSize}. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Gdpr
| Code | Status | Message |
|---|---|---|
Volo.Abp.Gdpr:010001
framework |
403 | You have previously requested to download personal data. Once the given request time period has passed, you can create a new one. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Volo.Abp.Gdpr:010002
framework |
403 | Your personal data is still being prepared. You can download it at {GdprDataReadyTime}. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Global Features
| Code | Status | Message |
|---|---|---|
Volo.GlobalFeature:010001
framework |
403 | The '{ServiceName}' service needs to enable '{GlobalFeatureName}' feature. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Hosted Payment Page
| Code | Status | Message |
|---|---|---|
HostedPaymentPage:Ach:WebAuthorizationUnavailable
framework |
400 | The bank debit authorization could not be recorded, so the payment was not submitted. Please try again. No message defined. An internet-initiated (WEB) ACH debit submit could not capture the NACHA single-debit authorization attestation: the consumer IP or the rendered authorization text was missing or blank. Fail-closed: the submit is refused rather than taking an unsubstantiated debit that could not be defended on a return or dispute. Distinct from a processor decline; a support agent seeing this code knows the debit never reached the processor. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:AmountModeNotApplicable
framework |
400 | An amount mode does not apply to a card-capture session. No message defined. A session-create request specified a Suggested or Locked amount mode against a resolved card-capture purpose (SaveCard / SaveCardWithInitialCharge) or a save-card-only session. Amount mode is a chargeable-Payment axis (those flows take a zero-dollar verification or a plan-driven charge, not a base-amount charge), so a specified amount mode is contradictory and rejected. Mirrors the transport-layer validator check for the page-dependent case the validator cannot see. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:BlockedField
framework |
403 | The field '{fieldKey}' cannot be pre-filled for security reasons. No message defined. A blocked field key (e.g. card_number, cvv) was included in the pre-fill data. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:BoundCustomerRejected
framework |
400 | The customer supplied for this session could not be used. No message defined. A session-create request supplied a trusted CustomerId that could not be bound: it does not exist, is inactive / soft-deleted, or belongs to a different merchant than the session's HPP configuration. Rejected at session-create time so a session can never be bound to a customer the merchant does not own or that cannot be charged. The reason data field carries "Missing" (not found / soft-deleted / cross-merchant; the partition-scoped lookup does not distinguish these so they share the reason, avoiding a cross-merchant enumeration oracle) or "Inactive". Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:CampaignInactive
framework |
409 | This payment link belongs to a campaign that is not currently accepting payments. No message defined. The link resolves, but the campaign it belongs to is not accepting payments: it is a draft, paused, ended, archived, outside its scheduled window, or no longer resolvable at all. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:Cancelled
framework |
409 | This payment session was cancelled. No message defined. Session has already been cancelled (by the parent page via the iframe two-way command channel). Terminal status; distinct from Revoked (admin-initiated) for audit/reporting clarity. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:CaptureModeNotApplicable
framework |
400 | Authorize (delayed capture) is only available for a payment session, not for a Save Payment Method session. No message defined. A session-create request supplied a CaptureMode = Authorize override against a resolved card-capture purpose (SaveCard / SaveCardWithInitialCharge). Capture timing is a Payment-only axis (those purposes set their own transaction shape), so an explicit Authorize override is contradictory and rejected, mirroring the page-save validator. An inherited page capture mode is neutralized to Sale rather than rejected. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:CatalogUnavailable
framework |
409 | The products on this page could not be priced. Check that each product is still active in the catalog. No message defined. A session was created against a page that sells catalog products, but the catalog could not be read (no lookup is wired in this host, or none of the page's products resolve to an active entry). Fails closed: a link that cannot be priced is not minted. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:Completed
framework |
409 | This payment link has taken all the payments it was set up to accept. No message defined. A reusable payment link has taken every completion its cap allowed, so it accepts no further payers. Deliberately distinct from HppSessionConsumed: that code says one payer spent a single-use link, this one says a shared link reached the number of payments the merchant capped it at. Both answer 409, and both are terminal. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:ConfigInactive
framework |
409 | The hosted payment page is not currently active. No message defined. The referenced HPP configuration exists but is not active. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:ConfigNotFound
framework |
404 | The hosted payment page was not found or is not available for the requesting merchant. Verify the page id and that the request was issued under the owning merchant's credentials. No message defined. The referenced hosted payment page could not be resolved for the caller: it does not exist, or it belongs to another merchant. The two conditions are deliberately indistinguishable on the wire so a caller cannot probe which foreign page ids exist; the server-side session-create diagnostic log carries the distinction for operators. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:ConsentCaptureBeforeConsume
framework |
409 | Consent capture cannot run until the session's transaction has been consumed. No message defined. Consent capture was attempted against a session that has not yet transitioned to Consumed: the transaction must have been successfully claimed via ConsumeAsync before consent evidence can be linked to it. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:ConsentCaptureMismatch
framework |
400 | Consent capture input does not match the session's recorded state. No message defined. Capture input identifiers (merchant, transaction, tenant) do not match the referenced session's recorded state. Prevents consent records from being mis-linked across entities if an upstream value is tampered with or swapped. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:ConsentCustomerUnresolvable
framework |
404 | A customer could not be resolved for this session, so the payment method cannot be saved. No message defined. A consent / tokenize-on-payment session reached capture time without a resolvable customer: the session carried no CustomerId and either no cardholder email was collected on the card-entry surface, or the supplied email could not be used to find an existing customer or mint a new one. The HPP coordinator catches this and either fails the success flow (when consent is required) or skips the tokenize/consent step (when consent is optional) per the per-session IsConsentRequired outcome contract. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:ConsentNotRequested
framework |
409 | This payment session was not configured to capture stored-credential consent. No message defined. Capture of a stored-credential consent was requested for a session that did not declare RequestedCredentialStorage; this rejects a capture attempt against a vanilla one-off payment session. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:ConsentRequired
framework |
400 | You must authorize future stored-credential charges before this payment can be processed. No message defined. The session declared RequestedCredentialStorage but the cardholder did not tick the consent box before submitting. Server-side enforcement barrier complementing the client's disable-submit gate. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:Consumed
framework |
409 | This payment session has already been used. No message defined. The session has already been consumed by a prior transaction. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:CreateIdempotencyInProgress
framework |
409 | A session with this idempotency key is already being created. Retry shortly; the retry returns the original session. No message defined. A session create arrived with an idempotencyKey whose original create is still running. Answered immediately rather than holding the request open on another caller's result. Retry shortly; the retry replays the original once it completes. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:CreateIdempotencyKeyReused
framework |
409 | This idempotency key was already used for a different session request. Use a new key, or resend the original request unchanged. No message defined. The idempotencyKey on a session create matched a key this caller already used for a different request. The gateway refuses rather than replaying a session that does not match what was asked for, and nothing is created. Send a fresh key when the request changes. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:CreateIdempotencySessionGone
framework |
409 | This idempotency key can no longer be resolved to a session, so the original response cannot be returned. Use a new idempotency key to open a new session. No message defined. An idempotencyKey can no longer be resolved to a session, so the original response cannot be returned again. The gateway refuses rather than opening a second session under a key whose first one may already have been paid. Use a new key to open a new session. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:CreateIdempotencyStoreUnavailable
framework |
429 | The idempotency check could not be completed. Please retry the request. No message defined. The deduplication store behind create idempotency could not be consulted, so the create was refused rather than run unprotected and risk a second payment link. Retry the request. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:CurrencyNotSupported
framework |
400 | This merchant does not accept payments in the requested currency. Omit the currency to use the merchant's own currency, or send that code. No message defined. A session-create request named a currency the owning merchant does not present in. The platform charges in the merchant's own configured currency and nothing else, so a well-formed but foreign code is refused here rather than accepted and then quietly ignored at charge time. Omit the field to take the merchant's currency, or send exactly that code. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:CustomerEmailVisibilityNotAllowed
framework |
400 | The customer email visibility requested for this session is not allowed. Bind a customerId to the session, or request a visibility the merchant's email rule and this session type permit, or omit it to use the page setting. No message defined. A session-create request supplied a customerEmailVisibility override the resolved session cannot honour, so the session is refused rather than created with a field the payer could never satisfy. Two causes: the session is an anonymous card-capture session (save-card, save-card-with-initial-charge, or save-card-only with no bound customerId), where the entered email is the only customer-resolution anchor and so may be neither hidden nor optional; or the override contradicts the merchant's Virtual Terminal EmailAddress rule, which requires the email (admitting only Required) or disables it (admitting only Hidden). The remedy is on the request: bind a customerId, or send a visibility the merchant and the session shape allow, or omit the override and inherit the page. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:Disabled
framework |
403 | HPP sessions are not enabled for this tenant. No message defined. HPP sessions are disabled for this tenant via settings. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:Expired
framework |
409 | This payment link has expired. Create a new payment session to send a fresh link. No message defined. Session exists and is still Pending, but its ExpiresAt has passed. Distinct from HppSessionNotFound (session document gone, typically TTL-evicted from Cosmos) so admin-side flows like resending a payment link surface a clear "this link is expired, create a new session" message instead of the ambiguous NotFound. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:ExpiryOutOfRange
framework |
400 | The session expiry must be between {minSeconds} and {maxSeconds} seconds. No message defined. The requested expiry (TTL) is outside the allowed bounds. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:FeeAmountModeNotApplicable
framework |
400 | A tax or shipping amount mode does not apply to a card-capture session. No message defined. A session-create request declared a taxAmountMode or shippingAmountMode against a resolved card-capture purpose (SaveCard / SaveCardWithInitialCharge) or a save-card-only session. Those flows take no base-amount charge, so there is no tax or shipping line for a mode to govern. Only the inherit value (omitting the property) is accepted there. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:FeeAmountModeRequiresPrefill
framework |
400 | A suggested or locked tax or shipping amount needs a tax or shipping value of zero or more. No message defined. A session-create request declared a Suggested or Locked taxAmountMode or shippingAmountMode without a parseable, non-negative tax or shipping prefilled field to carry the value. Zero is accepted (no tax, free shipping). Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:FieldValueInvalid
framework |
400 | The value for field '{fieldKey}' exceeds the maximum allowed length. No message defined. A pre-filled field value exceeds the maximum allowed length or is otherwise invalid. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:InitialChargeRequiresCardOnlyPage
framework |
400 | A Save Payment Method with Initial Charge session requires a page that accepts card only. No message defined. A session-create request resolved to the SaveCardWithInitialCharge purpose (via a page default or a session override) against a page whose payment methods are not card-only. The initial charge is vaulted as a card and the recurring contract bills that card, so a non-card tender (ACH, wallet) would leave the shopper charged with no contract created. Rejected fail-closed at session-create, mirroring the page-save card-only gate for this purpose. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:InvalidField
framework |
400 | The field key '{fieldKey}' is not valid for this hosted payment page. No message defined. A pre-filled field key is not recognized as a well-known key or merchant custom field. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:NotFound
framework |
404 | The payment session was not found or has expired. No message defined. The requested session was not found (likely expired via TTL). Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:ParentOriginNotAllowed
framework |
403 | The requested parent origin is not one of this page's allowed embedding domains. No message defined. The supplied ParentOrigin host is not present in the resolved page's AllowedEmbeddingDomains allowlist. Returned by session-create when an integrator requests postMessage emission to an origin the page is not configured to embed in. Prevents merchant-A from creating a session that posts events into merchant-B's parent. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:Paused
framework |
409 | This payment link is paused and is not accepting payments right now. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:PaymentLinkBaseUrlNotConfigured
framework |
403 | Payment links cannot be sent because the application's public URL is not configured. Contact your administrator. No message defined. The HPP public base URL could not be resolved: the dedicated HostedPaymentPage:PublicBaseUrl key is set to something that is not a valid absolute HTTPS URL, or it is unset and the fallback App:SelfUrl is missing / not a valid absolute HTTPS URL. Returned by payment-link paths (session-create, send-link, QR code) that build outbound URLs server-side from configuration rather than trusting a client-supplied base URL. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:ProductSelectionInvalid
framework |
400 | A product selection is not valid for this page: the product is not offered, a required product was left out, or the quantity is outside its limits. No message defined. A product selection (a quantity override at session create, or the payer's choices at submit) broke a rule: the product is not on the order, a required product was left out, the page fixed the quantity, or the quantity is outside the product's bounds. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:RecurringPlanNotApplicable
framework |
400 | A recurring plan can only be supplied for a Save Payment Method with Initial Charge session. No message defined. A session-create request supplied a RecurringPlan override but the session's resolved purpose is not SaveCardWithInitialCharge (a recurring plan is only meaningful on that purpose). Rejected rather than silently ignored so the caller learns the override had no applicable target. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:RecurringPlanUnavailable
framework |
403 | The recurring plan for this payment session is no longer available. No message defined. A Save-Card-with-Initial-Charge session references a reusable recurring plan that, at resolve time, no longer exists, is inactive, or belongs to another merchant. The session is unusable because the initial charge amount and the contract terms cannot be resolved. Surfaced fail-closed when the public page resolves the session. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:ReleaseNotAllowed
framework |
409 | This payment session can no longer be released. No message defined. A request to release a prematurely-consumed session was refused because the session was not in the exact state the consume left it in: its transaction had already been dispatched to the orchestrator, it is no longer Consumed (Pending, Revoked, or Cancelled), it completed via a direct vault token, or its recorded transaction id no longer matches the one being released. Fail-closed by design: refusing leaves the session consumed, which is the pre-existing behavior, whereas releasing a session whose charge may have started would let the same link be paid twice. Never surfaced to a payer: the release is best-effort and the caller logs this rather than propagating it. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:RequestedCredentialStorageInvalid
framework |
400 | RequestedCredentialStorage contains undefined flag bits outside the valid mask. No message defined. RequestedCredentialStorage supplied at session construction contains bits outside the defined StoredCredentialUsage mask. Session-creation input-validation fault: distinct from HppSessionConsentCaptureMismatch, which flags capture-time cross-entity mismatches. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:ResellerHostedPageDisabled
framework |
403 | Hosted payment pages are turned off for this reseller, so a new payment session cannot be started for this page. Turn on the Hosted Payment Page feature for the reseller and try again. No message defined. A session-create request targeted a page whose owning merchant sits beneath a reseller with the "Hosted Payment Page" master switch (ResellerFeatures.HostedPage) turned off. Fail-closed: a reseller that cannot be resolved is treated as switched off, because a session that cannot prove the switch is on is refused rather than allowed. Complements ResellerHostedPageDisabled, which refuses configuring the page in the first place; this one covers pages that already existed when the switch was turned off. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:ReusableNotApplicable
framework |
400 | This payment link cannot be reused: a link for one named customer, an invoice link, and a card-capture link each accept a single payer. No message defined. Reuse was requested for a session whose shape cannot support it. A link bound to one customer, an invoice link, and a card-capture link (save-card-only, or one carrying a recurring plan) each describe a single named payer or a single obligation, so a second payer arriving on the same link would either vault a credential against the wrong customer or pay an invoice twice. Refused at create rather than resolved at payment time, so the contradiction is never stored. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:Revoked
framework |
409 | This session has already been revoked. No message defined. The session has already been revoked. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:SaveCardOnlyConflictsWithPagePurpose
framework |
400 | This hosted payment page saves a card, so a session cannot ask for the save-card flow to be turned off. No message defined. A session was requested with SaveCardOnly = false against an HPP instance whose PagePurpose is SaveCard. The instance purpose derives the save-card flow, so an explicit contradicting per-session flag is rejected rather than silently ignored. (A null or matching flag is fine: the flow is derived from the instance.) Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:SaveCardOnlyNotSupportedByProcessor
framework |
403 | Save Payment Method (no-charge) sessions are not available for this page: none of its offered payment methods can be stored without a charge for this merchant. No message defined. A session requested the save-card-only (zero-dollar verification, no charge) flow, but the merchant's processor does not advertise SupportsZeroDollarVerification. Fail-closed: the session is rejected at creation rather than offering a no-charge save path the processor cannot fulfil. The save-card-only affordance is also not surfaced in the HPP UI for these merchants; this guards the explicit-API attempt. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:HppSession:SmsNotSupported
framework |
403 | SMS delivery is not yet supported for payment links. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:Interaction:BeaconInvalid
framework |
400 | The interaction event could not be recorded. No message defined. An anonymous interaction beacon was rejected: the payload shape was invalid, the event type was not one the client may emit (only Selected / Started are accepted), or the referenced session / page could not be resolved or was terminal. Returned to the controller, which maps it to a 400 with an empty body so the anonymous caller learns nothing about which check failed. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:LockedFieldChange
framework |
403 | This page is locked. Its purpose, owning merchant, and active state cannot be changed while it is locked. Unlock the page first to change these. No message defined. A field the hosted payment page configuration locks was changed. A locked field is fixed by the page's owner and may not be overridden by the request that opens the session. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:PageProductCurrencyMismatch
framework |
400 | A product on this page is priced in a different currency than the merchant's. A hosted page charges in the merchant's currency. No message defined. A page named a catalog product priced in a currency other than the merchant's. A hosted page charges in the merchant currency, so a product priced in another one has no price on it. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:PageProductNotFound
framework |
400 | A product on this page could not be found in the merchant's catalog, or is no longer active. No message defined. A page named a catalog product that does not exist, is inactive, or belongs to a different biller than the page's merchant. Refused at page save so a page never references a product a payer could not be sold. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:PageProductQuantityInvalid
framework |
400 | A product's quantity settings on this page fall outside the catalog's limits for that product. Adjust the default, minimum or maximum quantity, or use whole units. No message defined. A page's quantity rules for a product sit outside the catalog's own: a page floor below the catalog minimum, a page ceiling above the catalog maximum, a default quantity outside the effective bounds, or a fractional quantity on a product sold in whole units. Refused at page save so the quantities a page shows are the quantities it charges for, never a clamped copy. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:ResellerHostedPageDisabled
framework |
403 | Hosted payment pages are turned off for this reseller, so a page cannot be created for its merchants. Turn on the Hosted Payment Page feature for the reseller and try again. No message defined. A hosted payment page was created or updated for a merchant whose reseller has the "Hosted Payment Page" master switch (ResellerFeatures.HostedPage) turned off. The switch governs whether merchants beneath a reseller may create and process with hosted payment pages, so page configuration is refused at the application service (the endpoint is reachable over the HTTP API regardless of what the UI renders). Fail-closed on an unresolvable merchant or reseller. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:SaveCardPurposeNotSupportedByProcessor
framework |
403 | This page cannot be set to save a card: the merchant's processor does not support zero-dollar card verification. No message defined. An HPP instance was saved with PagePurpose = SaveCard, but the owning merchant's processor does not advertise SupportsZeroDollarVerification. Surfaced at instance-configuration time so the merchant learns the page cannot work before any session is ever created against it; complements the fail-closed session-create gate (HppSessionSaveCardOnlyNotSupportedByProcessor). Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:Tax:AmountMismatch
framework |
409 | The tax on this payment has changed. Review the updated total and pay again. No message defined. The tax on a submit disagrees with the tax the server calculated for the page and the address. Either the page showed a stale figure or the submit was altered; the consumed link is released so the payer can review the recalculated amount and pay again. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:Tax:CouldNotBeCalculated
framework |
409 | Tax could not be calculated for this payment, so it was not taken. Check the address and try again. No message defined. A page whose tax the server calculates could not calculate it for this payment: the page's tax rate has been retired, or the merchant's tax provider could not answer for the address. The payment is refused rather than charged without tax, and the consumed link is released so the payer can try again. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:Tax:ModeNotAvailable
framework |
409 | This tax setting is not available for the page's merchant. Choose one of the merchant's active tax rates, or set up a tax provider for the merchant first. No message defined. A page was saved in a tax mode its merchant cannot support: the chosen tax rate is not one of the merchant's active rates, or the merchant has no tax provider for a calculated tax. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
HostedPaymentPage:Template:SourceNotSaved
framework |
409 | Save the page before saving it as a template. No message defined. Save as Template was asked for a page that has not been created yet. A template is keyed on the page it was saved from, so the page has to exist first. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Hpp:Webhook:BlockedIpRange
framework |
400 | The webhook host '{Host}' resolves to an address range that is not allowed. No message defined. The webhook host resolved to a loopback, link-local, or RFC 1918 private address. Every resolved address must be outside the blocked ranges, which is what stops DNS rebinding through a second A record. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Hpp:Webhook:HttpsOnly
framework |
400 | The webhook URL must use HTTPS. No message defined. The supplied webhook URL uses a scheme other than HTTPS. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Hpp:Webhook:InvalidUrl
framework |
400 | The webhook URL is not a valid absolute URL. No message defined. The supplied webhook URL is not a well-formed absolute URI. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Hpp:Webhook:UnresolvableHost
framework |
400 | The webhook host '{Host}' could not be resolved. No message defined. The webhook host did not resolve to any address, so it cannot be checked against the blocked ranges. Fail-closed: an unresolvable host is refused rather than attempted. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Identity
| Code | Status | Message |
|---|---|---|
Volo.Abp.Identity:010001
framework |
403 | You can not delete your own account! No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Volo.Abp.Identity:010002
framework |
403 | Can not set more than {MaxUserMembershipCount} organization unit for a user! No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Volo.Abp.Identity:010003
framework |
403 | Can not change password of an externally logged in user! No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Volo.Abp.Identity:010004
framework |
403 | There is already an organization unit with name {0}. Two units with same name can not be created in same level. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Volo.Abp.Identity:010005
framework |
403 | Static roles can not be renamed. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Volo.Abp.Identity:010006
framework |
403 | Static roles can not be deleted. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Volo.Abp.Identity:010007
framework |
403 | You can't change your two factor setting. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Volo.Abp.Identity:010008
framework |
403 | It's not allowed to change two factor setting. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Volo.Abp.Identity:010009
framework |
403 | You can not delegate yourself. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Volo.Abp.Identity:010010
framework |
403 | Invalid external login provider No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Volo.Abp.Identity:010011
framework |
403 | External login provider authenticate failed No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Volo.Abp.Identity:010012
framework |
403 | Local user already exists No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Volo.Abp.Identity:010013
framework |
403 | No user found in the file. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Volo.Abp.Identity:010014
framework |
403 | Invalid import file format. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Volo.Abp.Identity:010015
framework |
403 | Reached maximum allowed user count! This tenant is allowed to have a maximum of {MaxUserCount} users. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Volo.Abp.Identity:010021
framework |
403 | Name exist: '{0}'. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing
| Code | Status | Message |
|---|---|---|
Invoicing:Biller:ForeignBillerNotAllowed
framework |
404 | You cannot act as this biller. Choose a biller you have access to. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:CreditNote:AlreadyApplied
framework |
409 | This credit note has already been applied to an invoice. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:CreditNote:ExceedsBalance
framework |
409 | The credit note amount is greater than the balance due on the invoice. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:CreditNote:InvalidInvoiceStatus
framework |
409 | A credit note cannot be applied to an invoice in its current status. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:CreditNote:NotEditable
framework |
409 | A credit note in {status} status cannot be edited. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:CreditNote:NotFound
framework |
404 | The credit note could not be found. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:CustomField:DuplicateKey
framework |
400 | The custom field {fieldKey} appears more than once in this request. No message defined. The same key appears more than once in one request. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:CustomField:InvalidValue
framework |
400 | The value for {fieldLabel} is not valid. {detail} No message defined. A value does not satisfy its definition: not one of the dropdown options, longer than the text limit, failing the text pattern, not a boolean, not a calendar date, or not a number. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:CustomField:PatternInvalid
framework |
400 | The validation pattern configured for {fieldLabel} could not be evaluated. Correct the custom field definition before using it on an invoice. No message defined. The definition's text pattern could not be evaluated: it does not compile, or matching it exceeded the evaluation timeout. The definition needs correcting, not the value. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:CustomField:Required
framework |
400 | A value is required for {fieldLabel}. No message defined. An active definition marked required has no value on the invoice. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:CustomField:UnknownKey
framework |
400 | The custom field {fieldKey} is not defined for this biller. No message defined. A submitted key matches no definition, active or inactive, for the invoice's biller. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:CustomFieldDefinition:KeyAlreadyExists
framework |
409 | A custom field with the key {key} already exists for this biller. Choose a different key. No message defined. A definition with the same key, compared case-insensitively, already exists for the biller. The stored spelling travels in the exception data so the caller knows which one it collided with. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:CustomFieldDefinition:LimitReached
framework |
409 | This biller already holds the maximum of {maxDefinitions} custom field definitions. Delete one before adding another. No message defined. The biller already holds MaxCustomFieldDefinitionsPerBiller definitions, active or inactive, so no further definition can be created for it. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Deposit:DueDateAfterBalanceDueDate
framework |
400 | The deposit due date ({depositDueDate}) cannot be later than the balance due date ({balanceDueDate}). No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Deposit:ExceedsTotal
framework |
400 | The deposit amount ({depositAmount}) must be less than the invoice total ({total}). No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Deposit:MustBePositive
framework |
400 | The deposit amount must be greater than zero. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Deposit:PaymentRequired
framework |
400 | This invoice requires its deposit of {requiredAmount} to be paid first. The amount supplied was {providedAmount}. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Export:RowLimitExceeded
framework |
400 | The export exceeds the maximum of {MaxRowCount} rows. Narrow the filters and try again. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Feature:NotEnabled
framework |
403 | The invoicing feature this request needs is not enabled for your account. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Invoice:AlreadySent
framework |
409 | This invoice has already been sent. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Invoice:CannotCancelNonDraft
framework |
409 | Only a draft invoice can be cancelled. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Invoice:CannotEditLocked
framework |
409 | A locked invoice cannot be edited. Unlock it first, then try again. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Invoice:InvalidStatusTransition
framework |
409 | An invoice cannot move from {currentStatus} to {targetStatus}. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Invoice:IsLocked
framework |
409 | This invoice is locked and cannot be changed. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Invoice:NotFound
framework |
404 | The invoice could not be found. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Invoice:NoteLimitReached
framework |
409 | This invoice already holds the maximum number of notes. No further note can be added. No message defined. The invoice already holds MaxNotesPerInvoice internal notes, so no further note can be appended to it. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Invoice:PossibleDuplicate
framework |
409 | An invoice with the same customer, amount, and date already exists. Confirm this is not a duplicate before sending it. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Limit:MonthlyInvoiceLimitReached
framework |
403 | The monthly invoice limit for this plan has been reached. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:LineItem:CustomPriceNotAllowed
framework |
400 | The unit price for {productName} must be its catalog price of {limit}. This product does not allow a custom price. No message defined. A line item's unit price differs from the catalog price of a product that does not allow a custom price. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:LineItem:DescriptionRequired
framework |
400 | Each line item needs a description. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:LineItem:FractionalQuantityNotAllowed
framework |
400 | The quantity for {productName} must be a whole number. This product does not allow fractional quantities. No message defined. A line item carries a fractional quantity for a product that only sells whole units. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:LineItem:InvalidQuantity
framework |
400 | The line item quantity must be greater than zero. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:LineItem:InvalidUnitPrice
framework |
400 | The line item unit price cannot be negative. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:LineItem:MaxExceeded
framework |
400 | This invoice has reached the maximum number of line items. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:LineItem:NotFound
framework |
404 | The line item could not be found on this invoice. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:LineItem:ProductUnavailable
framework |
400 | The product {productName} is not available for this biller. It may have been removed, deactivated or archived. No message defined. A line item references a product this biller cannot sell: it does not exist, belongs to another biller, has been deleted, deactivated or archived. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:LineItem:QuantityAboveMaximum
framework |
400 | The quantity for {productName} cannot be more than {limit}. No message defined. A line item's quantity is above the product's maximum order quantity. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:LineItem:QuantityBelowMinimum
framework |
400 | The quantity for {productName} must be at least {limit}. No message defined. A line item's quantity is below the product's minimum order quantity. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Number:Conflict
framework |
409 | A unique invoice number could not be generated after {MaxAttempts} attempts. Please try again. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Number:SequenceNotFound
framework |
404 | The invoice number sequence for this biller could not be found. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Payment:BelowMinimum
framework |
400 | The payment amount is below the minimum this invoice accepts. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Payment:ExceedsBalance
framework |
409 | The payment amount is greater than the balance due on this invoice. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Payment:InvoiceAlreadyPaid
framework |
409 | This invoice is already paid in full. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Payment:PartialNotAllowed
framework |
403 | This invoice does not accept partial payments. Pay the full balance due. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:PaymentPlan:AlreadyExists
framework |
409 | This invoice already has a payment plan. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:PaymentPlan:AutoCollectRequiresToken
framework |
400 | Automatic collection requires a stored payment method on the payment plan. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:PaymentPlan:InstallmentNotFound
framework |
404 | The installment could not be found on this payment plan. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:PaymentPlan:InstallmentNotPending
framework |
409 | Installment {sequenceNumber} is {status} and cannot be paid. Only a pending installment can be paid. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:PaymentPlan:InstallmentsMustSumToBalance
framework |
400 | The installment amounts must add up to the invoice balance due. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:PaymentPlan:InvalidInstallmentCount
framework |
400 | A payment plan must have between {min} and {max} installments, but {count} were requested. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:PaymentPlan:InvalidInvoiceStatus
framework |
409 | A payment plan cannot be created for an invoice in {status} status. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:PaymentPlan:NoBalance
framework |
409 | This invoice has no outstanding balance to schedule. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:PaymentPlan:NotFound
framework |
404 | The payment plan could not be found. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Portal:NotAuthenticated
framework |
403 | Your invoice portal session is no longer valid. Open the invoice link again to continue. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Product:NotFound
framework |
404 | The product could not be found. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:RecurringSchedule:InvalidBiller
framework |
400 | The selected biller is not valid for this recurring invoice schedule. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:RecurringSchedule:InvalidStatusTransition
framework |
409 | A recurring invoice schedule cannot move from {from} to {to}. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:RecurringSchedule:NoLineItems
framework |
400 | A recurring invoice schedule needs at least one line item. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:RecurringSchedule:NoRecurrence
framework |
400 | A recurring invoice schedule needs a recurrence pattern. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:RecurringSchedule:NotFound
framework |
404 | The recurring invoice schedule could not be found. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Refund:AmountInvalid
framework |
400 | A refund amount must be greater than zero. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Refund:ExceedsAmountPaid
framework |
409 | A refund cannot exceed the amount collected against the invoice. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Refund:ExecutorUnavailable
framework |
409 | Refunds are not available in this environment. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Refund:ManualReversalRequiresReason
framework |
400 | A reason is required to reverse a manually recorded payment. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Refund:NoRefundablePayments
framework |
409 | This invoice has no collected payment to refund. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Refund:NotAllowedForStatus
framework |
409 | This invoice cannot be refunded in its current status. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Refund:PartialFailure
framework |
409 | Some payments were returned before the refund failed. Review the invoice's payment history before retrying. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Refund:RejectedByGateway
framework |
409 | The payment platform did not complete the refund. Check the transaction before trying again. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Refund:RequiresMerchantScope
framework |
409 | This invoice is not billed by a merchant, so its gateway payment cannot be refunded. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Report:RowLimitExceeded
framework |
400 | The report exceeds the maximum of {MaxRowCount} rows. Narrow the filters and try again. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:TaxRate:NotFound
framework |
404 | The tax rate could not be found. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:TaxRateLookup:BillerNotMerchant
framework |
400 | Only a merchant biller can look up a tax rate from a tax provider. No message defined. Only a merchant biller can hold a tax provider binding; any other biller type is refused. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:TaxRateLookup:NoDestinationAddress
framework |
409 | No recipient address was supplied and the recipient has no address on file, so there is no destination address to look up a rate for. No message defined. No destination address: the request carried no recipient address and the recipient has none on file. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:TaxRateLookup:NoOriginAddress
framework |
409 | The merchant has no default shipping origin and no biller address was supplied, so there is no origin address to look up a rate for. No message defined. No origin address: the merchant has no default shipping origin and the request carried no biller address. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:TaxRateLookup:ProviderFailed
framework |
409 | The tax provider could not return a rate ({errorCodes}). No message defined. The provider answered with a failure; its normalised error codes travel in the exception data. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:TaxRateLookup:ProviderUnavailable
framework |
409 | No tax provider is available for this merchant. Check the merchant's tax provider binding and that the provider is enabled. No message defined. The merchant has no enabled binding, the provider's gate is closed, or the provider is not deployed here. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Template:CannotDeleteDefault
framework |
409 | The default invoice template cannot be deleted. Make another template the default first. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Invoicing:Template:NotFound
framework |
404 | The invoice template could not be found. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
WinkPG.Invoicing:PaymentLinkBaseUrlNotConfigured
framework |
403 | The invoice payment link could not be built because the hosted payment page base address is not configured. Contact support. No message defined. A payment link was requested but the deployment has no public base URL configured, so no link can be built that a payer could reach. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
WinkPG.Invoicing:PaymentLinkNotAvailable
framework |
403 | A payment link is not available for this invoice. No message defined. A payment link was requested for an invoice whose current state carries none: it is not in a payable status, or its hosted payment page is not available. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Language Management
| Code | Status | Message |
|---|---|---|
Volo.Abp.LanguageManagement:010001
framework |
403 | Culture name {CultureName} already exists. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Merchant Billing
| Code | Status | Message |
|---|---|---|
MerchantBilling:BillingRunAlreadyRunning
framework |
409 | A billing run is already in progress for this reseller. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:ContractCancelled
framework |
409 | This recurring billing contract has been cancelled and can no longer be charged. No message defined. An operation that requires a live contract (e.g. recording a charge dispatch) was attempted against a Cancelled contract. A cancelled contract is terminal: a new recurring agreement must be created rather than reusing the cancelled row. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:DuplicateBillingRunForPeriod
framework |
409 | A completed billing run already exists for reseller '{0}' in period '{1}'. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:DuplicateGroupInPlan
framework |
400 | SKU group '{0}' already has a rate entry in this price plan. No message defined. The plan already has a catch-all rate entry for this SKU group. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:DuplicateSkuInPlan
framework |
400 | SKU '{0}' already exists in this price plan. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:InvalidSkuCode
framework |
400 | SKU code '{0}' is not a valid registered SKU. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:InvalidSkuGroupCode
framework |
400 | SKU group '{0}' is not a recognized billing group. No message defined. The referenced billing-group code is not a registered SKU billing group. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:MerchantAlreadyHasActivePlan
framework |
409 | Merchant '{0}' already has an active price plan assignment. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:PaymentMethodCallbackKindFieldMissing
framework |
400 | A '{0}' payment method requires field '{1}' on the capture callback. No message defined. A kind-specific field required by the HPP callback payload was missing (e.g. card brand/exp on a Card kind, or ACH account type on an Ach kind). Raised from the app service after the FluentValidation pass; it defends against bypassed / regressed validation surfacing as a 500 NRE instead of a controlled business error. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:PaymentMethodCaptureIntentCancelled
framework |
409 | The capture link was cancelled and can no longer be completed. Send a new link from the merchant's payment-method page. No message defined. The capture-intent was cancelled (revoked) by an operator before it was consumed. The emailed link's hosted page can no longer be completed: both the token-based consume and the event-driven consume reject a cancelled intent so cancellation cannot be raced by a completion. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:PaymentMethodCaptureIntentConsumed
framework |
409 | The capture-intent token has already been used. Restart the capture from the merchant's payment-method page. No message defined. The capture-intent token was already consumed (single-use). Raised on a replay and on the loser of a concurrent-callback race (the atomic ETag consume picks one winner). Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:PaymentMethodCaptureIntentExpired
framework |
409 | The capture-intent token has expired. Restart the capture from the merchant's payment-method page. No message defined. The capture-intent token expired before the callback was submitted. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:PaymentMethodCaptureIntentInvalid
framework |
400 | The capture-intent token is not recognized. Restart the capture from the merchant's payment-method page. No message defined. The capture-intent token did not resolve to any issued intent under the reseller (unknown or tampered token). Distinct from PaymentMethodCaptureIntentConsumed so a genuine replay is told apart from a never-issued token. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:PaymentMethodCaptureIntentMismatch
framework |
400 | The capture-intent token does not match this capture request. Restart the capture from the merchant's payment-method page. No message defined. The capture-intent token resolved, but its bound (merchant / collection merchant / kind) does not match the callback payload, e.g. an operator replaying merchant A's token on a callback addressed to sibling merchant B under the same reseller. The mismatched field is supplied in the exception data under Field. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:PaymentMethodCaptureIntentRequired
framework |
400 | The capture callback is missing its capture-intent token. Restart the capture from the merchant's payment-method page. No message defined. The capture completion did not carry a capture-intent token. The token is issued on InitiateCaptureAsync and is mandatory on CompleteCaptureAsync; a completion without it cannot be proven to correspond to an Initiate invocation. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:PaymentMethodCaptureLinkNotFound
framework |
404 | There is no capture link to resend for this merchant. Send a new link first. No message defined. A resend was requested for a merchant that has no prior send-a-link capture link to resend or reissue. The operator must send a fresh link from the capture controls first. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:PaymentMethodCaptureNotCompleted
framework |
409 | The payment capture has not completed yet. Finish entering the payment details on the hosted page, then try again. No message defined. The operator-UI completion call (CompleteCaptureAsync) resolved an HPP session that has not yet been consumed by a successful tokenization: the cardholder has not finished, or the session was cancelled/revoked/expired. The UI should keep waiting or restart the capture. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:PaymentMethodCollectionMerchantMismatch
framework |
400 | The supplied payment-method collection merchant does not match the reseller's configured collection merchant. No message defined. The supplied CollectionMerchantId on a payment-method create/replace does not match the reseller's configured CollectionMerchantId. Rejected to prevent storing a token vaulted at the wrong collection merchant. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:PaymentMethodKindNotAllowed
framework |
403 | The reseller's billing preferences do not permit '{0}' payment methods. No message defined. The payment-method MerchantBillingPaymentMethodKind is not permitted by the reseller's AllowCardPayments / AllowAchPayments allowlist. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:PaymentMethodMissingCollectionMerchant
framework |
400 | Configure a collection merchant on the reseller's billing preferences before capturing a payment method. No message defined. The reseller has not yet configured a CollectionMerchantId, so there is no collection merchant to vault a payment-method token under. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:PaymentMethodMissingHpp
framework |
400 | Configure a card capture Hosted Payment Page on the reseller's billing preferences before capturing a payment method. No message defined. The reseller has no HppPageId configured, so the operator UI cannot launch the HPP tokenization capture flow. Mirrors the resolver's MissingHpp outcome on the Invoicing path: the recurring path needs the same HPP page because that's where the tokenization actually happens. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:PaymentMethodNotFound
framework |
404 | No active stored payment method exists for this merchant. No message defined. No active payment method exists for the (reseller, merchant) pair. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:PaymentMethodTokenNotFound
framework |
404 | The payment token referenced by the capture callback could not be resolved. No message defined. The HPP capture callback referenced a PaymentTokenId that does not resolve to an existing token (or the token is not active). Rejected so we never persist a billing row pointing at a vault entry that doesn't exist. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:PaymentMethodTokenVaultMismatch
framework |
400 | The payment token is not vaulted under the expected collection merchant. No message defined. The HPP capture callback claimed the token is vaulted at one collection merchant, but the underlying PaymentToken.MerchantId points at a different merchant. Rejected to prevent a recurring charge from being drafted against a processor account that does not actually hold the token. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:PricePlanInUse
framework |
409 | Cannot delete price plan '{0}' because it is assigned to one or more merchants. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:PricePlanNameAlreadyExists
framework |
409 | A price plan with name '{0}' already exists for this reseller. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:PricePlanNotFound
framework |
404 | Price plan not found. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:PricingStrategyNotAllowedForSku
framework |
400 | Pricing strategy '{0}' is not allowed for SKU '{1}'. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:RateEntryTargetAmbiguous
framework |
400 | A rate entry cannot target both a SKU and a SKU group. No message defined. A rate entry targets both a SKU code and a SKU group (mutually exclusive). Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:RateEntryTargetRequired
framework |
400 | Each rate entry must target a SKU or a SKU group. No message defined. A rate entry targets neither a SKU code nor a SKU group (both empty). Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:ResellerMerchantBillingDisabled
framework |
403 | Merchant billing is turned off for this reseller, so a price plan cannot be created for it. Turn on the Merchant Billing feature for the reseller and try again. No message defined. A price plan was created (or cloned) for a reseller whose "Merchant Billing" master switch (ResellerFeatures.MerchantBilling) is turned off. The switch governs the creation of price plans and the generation of invoices for merchants under a reseller, so the create is refused at the application service (the endpoint is reachable over the HTTP API regardless of what the UI renders). Fail-closed on an unresolvable reseller. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:TiersNotContiguous
framework |
400 | Pricing tiers must be contiguous and non-overlapping. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MerchantBilling:TiersRequiredForTieredPricing
framework |
400 | At least one pricing tier is required when using Tiered pricing strategy. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Merchants
| Code | Status | Message |
|---|---|---|
Merchants:ActiveProcessorProfileRequiresPaymentType
framework |
409 | An active processor profile must have at least one payment type selected. No message defined. An active processor profile declares no payment types, so it is active and routes nothing. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Merchants:ApmWebhookRegistrationNotPerMerchant
framework |
400 | This processor's webhooks are registered once for the platform, so the profile has no webhook URL of its own to rotate. No message defined. A webhook registration rotation was asked of a processor profile whose provider registers its webhook once for the platform, so the profile has no URL of its own to rotate. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Merchants:CannotDeactivateLastActiveProfileForPaymentType
framework |
409 | This is the last active profile for its payment type. Deactivating it would leave the merchant unable to process that payment type. No message defined. The profile is the last active one for its payment type, so deactivating it would leave the merchant unable to process that payment type. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Merchants:CannotDeactivateProcessorWithUnsettledTransactions
framework |
409 | This processor account cannot be deactivated while it still has unsettled transactions. No message defined. The processor account still has unsettled transactions, so it cannot be deactivated. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Merchants:CannotDeleteProcessorWithUnsettledTransactions
framework |
409 | This processor account cannot be deleted while it still has unsettled transactions. No message defined. The processor account still has unsettled transactions, so it cannot be deleted. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Merchants:CannotPromoteSuspendedMerchant
framework |
409 | This merchant is suspended, so it cannot be promoted to production. Extend the trial to return it to the sandbox first, then promote it. No message defined. The promotion action was run against a suspended merchant, which is not a promotable state. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Merchants:CannotUseLoopbackProfileOutsideSandbox
framework |
409 | A merchant outside the Sandbox environment cannot have an active loopback processor profile. The loopback processor is a simulator and never contacts a card network. No message defined. The save would leave a merchant outside the Sandbox environment carrying an active loopback simulator processor profile, which would let a real payment be answered by the simulator. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Merchants:CardAcceptancePolicyIssuerCountriesInvalid
framework |
400 | Card acceptance policy issuer countries are not valid for the selected mode. The allow list and deny list modes need at least one country and the other modes need none, and every code must be a distinct two-letter ISO 3166-1 alpha-2 country, for example US. No message defined. A card acceptance policy's issuer country list disagrees with the issuer country mode it was sent with, or carries a code that is not a two-letter ISO 3166-1 alpha-2 country. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Merchants:CardAcceptancePolicyRefusesEverything
framework |
400 | Card acceptance policy refuses both credit and debit cards, which refuses very nearly every card. Accept at least one of credit or debit. Prepaid is an overlay on those two rails, so accepting it does not change this. No message defined. A card acceptance policy refuses both card rails, so it would refuse very nearly every card. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Merchants:CustomFieldsNotEnabled
framework |
403 | Custom field configuration is not enabled for this merchant. No message defined. The merchant attempted to self-manage its custom fields while ConfigurationLimits.AllowCustomFieldConfig is off. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Merchants:NoCurrentMerchant
framework |
400 | No merchant is associated with the current user. The self-service routes resolve the merchant from the signed-in user, so an API key cannot reach them. Read these settings from the merchant route that takes a merchant id in the path; updating them there needs the merchant update permission. No message defined. The caller's identity resolves to no merchant, so a merchant-scoped operation cannot run. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Merchants:OrderDataDefaultsNotEnabled
framework |
403 | Order data defaults are not enabled for this merchant. No message defined. The merchant attempted to self-manage its order-data defaults while ConfigurationLimits.AllowOrderDataDefaultsConfig is off. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Merchants:PricePlanAssignmentBlockedForCollectionMerchant
framework |
403 | This merchant is the Merchant Billing collection merchant for its reseller, so it cannot be assigned a Price Plan: a collection merchant cannot bill itself. Clear the Price Plan selection, or choose a different collection merchant on the reseller's billing preferences first. No message defined. A price plan was assigned to a collection merchant, which bills through its reseller rather than through a plan of its own. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Merchants:PricePlanAssignmentInvalidPlan
framework |
403 | The selected price plan cannot be assigned: it does not exist, is inactive, or belongs to a different reseller. Refresh the list and choose an active plan in this reseller. No message defined. A price-plan assignment named a plan that could not be read: it does not exist, it is not accepting new assignments, or it belongs to a different biller. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Merchants:ProcessorRoutingAttestationStale
framework |
409 | The processor accounts these routing rules send transactions to have changed, so the attestation on record no longer covers them. Confirm again that every processor account these rules route to belongs to the same legal entity as this merchant. No message defined. A write would leave conditional routing enabled while the attestation on record no longer covers the processor accounts the rules target. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Merchants:ProcessorRoutingTargetProfileUnusable
framework |
409 | A routing rule must send transactions to one of this merchant's own active processor accounts. No message defined. A conditional routing rule names a processor account that is not an active processor account on this merchant, so the rule routes nowhere. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Merchants:RecurringOverrideRequiresActivePaymentMethod
framework |
403 | This merchant cannot be moved to the recurring contract billing path without an active stored payment method. Capture a payment method for the merchant first, then change the billing path. No message defined. A recurring-billing override was requested for a merchant with no active payment method to bill against. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Merchants:RecurringOverrideRequiresCollectionMerchant
framework |
403 | This merchant cannot be set to the recurring contract billing path: its reseller has no collection merchant configured. Set a collection merchant on the reseller's billing preferences first. No message defined. A recurring-billing override was requested for a merchant that is not a collection merchant. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Merchants:ResellerRestrictsMerchantToSandbox
framework |
409 | The reseller this merchant belongs to is marked as a test reseller, so the merchant stays in the sandbox and cannot be promoted. Turn off Is Test on the reseller first, then promote this merchant on its own. No message defined. The save would put a merchant into Production or Pending Promotion while the reseller it belongs to is flagged as a test reseller. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Merchants:SettlementTimeOffCadence
framework |
400 | Settlement Time must fall on a settlement cadence boundary and carry no seconds. Auto settlement runs on a fixed cadence, so a time between cadence marks is never acted on. No message defined. The supplied auto-settlement time does not fall on a settlement cadence boundary, so the platform would never act on it at the minute it names. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Merchants:TenderDisabledByMerchant
framework |
403 | This tender is not enabled for this merchant. No message defined. The merchant has not opted in to the requested tender. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Merchants:TenderDisabledByReseller
framework |
403 | This tender is not enabled by the reseller. No message defined. The reseller has not opted in to the requested tender. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Merchants:TenderDisabledByTenant
framework |
403 | This tender is turned off platform-wide. No message defined. Tenant-level kill switch is off for the requested tender. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Merchants:TenderNotSupportedByProcessorAccount
framework |
403 | The selected processor account does not support this tender. No message defined. The selected processor account does not support the requested tender. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Merchants:TrialExtensionMerchantHasNoTrial
framework |
400 | This merchant is not on a trial, so there is no trial to extend. No message defined. A trial extension named a merchant that has no trial: it is on no plan and carries no trial deadline. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Merchants:TrialExtensionNotInFuture
framework |
400 | The new trial end date must be in the future. Choose a later date and try again. No message defined. A trial extension named a deadline that is not in the future, so it would not have extended anything. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Merchants:TrialExtensionSuspensionNotFromTrial
framework |
409 | This merchant was suspended for a reason other than its trial ending, so extending the trial does not lift the suspension. Lift the suspension by changing the merchant's environment first. No message defined. A trial extension named a suspended merchant whose suspension did not come from its trial running out. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Multi Merchant
| Code | Status | Message |
|---|---|---|
MultiMerchant:MerchantNotActive
framework |
409 | Merchant is not active! No message defined. The named merchant resolved, but is not active. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MultiMerchant:MerchantNotFound
framework |
404 | Merchant not found! No message defined. The request named a merchant (by id or name) that does not resolve to a configuration. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications
| Code | Status | Message |
|---|---|---|
Notifications:ChannelIdsRequired
framework |
400 | At least one channel is required on a subscription. No message defined. At least one channel ID is required on a subscription. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:ChannelInUseBySubscription
framework |
409 | This channel cannot be deleted while these subscriptions use it: {subscriptionNames}. No message defined. Channel cannot be deleted because it is referenced by one or more subscriptions. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:ChannelNameAlreadyExists
framework |
409 | A channel with this name already exists in this scope. No message defined. Channel name already exists within the same tenant/scope. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:ChannelNotFound
framework |
404 | The channel could not be found. No message defined. Channel entity not found. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:ChannelScopeViolation
framework |
403 | The channel's scope is not compatible with the subscription's scope. No message defined. Channel scope is incompatible with the referencing subscription's scope. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:DeliveryNotFound
framework |
404 | The delivery record could not be found. No message defined. Delivery record not found. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:DeliveryNotRetryable
framework |
409 | This delivery cannot be retried from its current status ({Status}). No message defined. A manual retry was requested for a delivery whose current status cannot be reset (it never failed, or it already succeeded). Replaces a raw InvalidOperationException, which surfaced to the caller as a 500 rather than a handled error. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:DestinationConfigUnreadable
framework |
409 | This destination's configuration could not be read. Correct the configuration before trying again. No message defined. Destination configuration could not be parsed. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:DestinationInUseByChannel
framework |
409 | This destination cannot be deleted while these channels use it: {channelNames}. No message defined. Destination cannot be deleted because it is referenced by one or more channels. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:DestinationNameAlreadyExists
framework |
409 | A destination with this name already exists in this scope. No message defined. Destination name already exists within the same tenant/scope. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:DestinationNotFound
framework |
404 | The destination could not be found. No message defined. Destination entity not found. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:DestinationScopeViolation
framework |
403 | The destination's scope is not compatible with the scope of the record referencing it. No message defined. Destination scope is incompatible with the referencing entity's scope. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:EventTypeNotAvailable
framework |
403 | One or more of the selected event types cannot be delivered, so the subscription would never fire. No message defined. One or more requested event types cannot be delivered: either they are not in the event-type registry at all, or they are registered as a placeholder with no publisher behind them (NotificationEventTypeDefinition.IsAvailable == false). Attaching one to a subscription would produce a subscription that never fires. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:EventTypesRequired
framework |
400 | At least one event type is required. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:FilterExpressionTooDeep
framework |
400 | The filter expression is nested too deeply. No message defined. Filter expression exceeds maximum depth. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:FilterExpressionTooManyConditions
framework |
400 | The filter expression has too many conditions. No message defined. Filter expression exceeds maximum number of conditions. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:InsufficientScopeAccess
framework |
403 | You do not have access to the selected scope. No message defined. User does not have access to the specified scope. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:InvalidDestinationConfig
framework |
400 | The destination configuration is not valid. No message defined. Destination configuration is invalid. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:InvalidFilterExpression
framework |
400 | The filter expression is not valid. No message defined. Filter expression is invalid. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:ListenSessionMerchantRequired
framework |
403 | A listen session covers one merchant, so select a merchant before opening one. No message defined. A listen session was requested for a merchant the caller is not authorized over, or by a caller with no merchant context at all. A session is always scoped to exactly one merchant. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:ListenSessionNotActive
framework |
404 | That listen session is not available. It may have ended, expired, or never existed. Open a new session to keep listening. No message defined. The requested listen session does not exist, has ended, or has expired. The three are deliberately indistinguishable so a caller cannot probe for another integrator's session id. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:ListenSessionSampleEnvironmentUnknown
framework |
403 | Sample events are for sandbox only, and this request carries nothing that says which environment it is acting in. Use a test API key (sk_test_); a key issued before environments existed has to be rotated before it can trigger a sample. No message defined. A sample event was requested for a listen session by a caller carrying no evidence of which world they are acting in: a cookie session, or an API key minted before environments existed. Distinguished from ListenSessionSampleProductionRefused because the remedy is different (rotate the key so it is stamped, rather than switch to a test one), and because neither answer is an oracle for anything the caller does not already know about themselves. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:ListenSessionSampleProductionRefused
framework |
403 | Sample events are for sandbox only. This request used a live API key, and a sample is a synthetic event that never happened, so it is not delivered alongside real traffic. Use a test key (sk_test_) to trigger a sample. No message defined. A sample event was requested for a listen session by a caller acting in the live world. Triggering a sample is sandbox-only: a sample is a synthetic event that never happened, and staging one into a production feed would put an invented occurrence in front of a receiver processing a merchant's real traffic. The remedy is a test key. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:MerchantIdRequiredForMerchantScope
framework |
400 | A merchant is required when the subscription scope is Merchant. No message defined. MerchantId is required when scope is Merchant. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:QuickSetupAlreadyExists
framework |
409 | A quick-setup subscription already exists for this item. No message defined. A quick-setup subscription already exists for the given context key. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:QuickSetupContextFilterMismatch
framework |
400 | The quick-setup filter does not pin the subscription to the item its context key names. No message defined. Quick-setup ContextKey identifies a specific entity instance (e.g. hpp:{guid}) but the supplied FilterExpressionJson does not pin the subscription to that instance. Server-side guard against an API caller bypassing the UI-supplied filter. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:ResellerIdRequiredForResellerScope
framework |
400 | A reseller is required when the subscription scope is Reseller. No message defined. ResellerId and ResellerPathPrefix are required when scope is Reseller. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:SecretRotationAlreadyInProgress
framework |
409 | A signing-secret rotation is already in progress for this destination. Promote or cancel it before starting another. No message defined. A signing-secret rotation is already in overlap for this destination. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:SecretRotationNoPrimarySecret
framework |
409 | This destination has no signing secret, so there is nothing to rotate. Set a secret on the destination first. No message defined. The destination has no signing secret, so there is nothing to rotate. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:SecretRotationNotInProgress
framework |
409 | No signing-secret rotation is in progress for this destination. No message defined. No signing-secret rotation is in overlap, so there is nothing to promote or cancel. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:SecretRotationNotSupported
framework |
400 | Signing-secret rotation applies to webhook destinations only. This destination is a {destinationType} destination. No message defined. Signing-secret rotation was requested for a destination type that has no signature. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:SecretRotationSecretInvalid
framework |
400 | The replacement signing secret must be at least {minLength} characters. No message defined. The replacement secret is missing or shorter than the configured minimum length. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:SecretRotationSecretUnchanged
framework |
409 | The replacement signing secret is the same as the current one, so rotating to it would change nothing. No message defined. The replacement secret is the same as the one currently in use. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:SubscriptionNameAlreadyExists
framework |
409 | A subscription with this name already exists in this scope. No message defined. Subscription name already exists within the same tenant/scope. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:SubscriptionNotFoundForDelivery
framework |
404 | The subscription behind this delivery could not be found, so it cannot be retried. No message defined. Subscription not found for delivery retry. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:TooManyChannels
framework |
400 | A subscription can have at most {max} channels. No message defined. Subscription exceeds the maximum number of channels. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:TooManyEventTypes
framework |
400 | A subscription can have at most {max} event types. No message defined. Subscription exceeds the maximum number of event types. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:UnknownEventType
framework |
400 | The event type '{eventType}' is not in the event registry. No message defined. Event type is not recognized in the registry. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:UnsubscribeFailed
framework |
400 | The unsubscribe request could not be processed. Please try again. No message defined. Unsubscribe request could not be processed due to an internal error. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:UnsupportedDestinationType
framework |
400 | This destination type is not supported yet. No message defined. Destination type is not currently supported (no processor available). Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:WebhookEventsMerchantRequired
framework |
403 | This reads one merchant's own webhook deliveries, so the credential has to resolve a single merchant. Use a merchant-scoped API key. No message defined. The events pull API was called by a caller with no merchant context: an unscoped administrator, or a tenant-wide API key. The surface answers with one merchant's own deliveries and has no meaning without one, so it refuses rather than widening to every merchant. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:WebhookReplayBudgetExhausted
framework |
429 | This endpoint has used its replay allowance for the current window. The delivery is unchanged. Wait for the window to roll over, then replay it. No message defined. A replay was refused because this endpoint's replay budget for the current window is spent. The delivery is untouched and the same request succeeds once the window rolls over. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:WebhookReplayEndpointSuppressed
framework |
409 | This delivery's destination endpoint is suppressed, so nothing would be sent. The delivery is unchanged. Clear the suppression, then replay it. No message defined. A replay was refused because the delivery's destination endpoint is actively suppressed. The delivery is untouched: clearing a suppression is an administrator's action, so the caller is told that rather than handed an attempt that was never going to leave. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Notifications:WebhookReplayUnavailable
framework |
409 | Webhook replay is unavailable on this deployment, so nothing was changed. Try again shortly. No message defined. A replay was refused because this deployment composes no delivery attempt seam. Nothing was reset, deliberately: a delivery reset on a host that cannot then attempt it is left in a state that host never sweeps. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Operating Context
| Code | Status | Message |
|---|---|---|
WinkPG.OperatingContext:InvalidMerchant
framework |
404 | The target merchant does not exist, or its ownership chain is not valid. No message defined. The requested merchant does not exist, or its tenant / reseller ownership chain does not lead back to the context being switched into. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
WinkPG.OperatingContext:InvalidReseller
framework |
404 | The target reseller does not exist, or it does not belong to the specified tenant. No message defined. The requested reseller does not exist, or does not belong to the specified tenant. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Payment
| Code | Status | Message |
|---|---|---|
Volo.Payment:010001
framework |
403 | The payment request has no currency. Set a currency on the request before you start a one-time payment. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Payment Encryption Virtu Crypt
| Code | Status | Message |
|---|---|---|
03
framework |
403 | A token value is outside the range the command accepts. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
04
framework |
403 | A required token is missing. The AN token names which. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
06
framework |
403 | The major key the request named is not loaded on the HSM. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
07
framework |
403 | The storage-table slot the request named holds no key. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
15
framework |
403 | The HSM timed out talking to something behind it. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
17
framework |
403 | A message authentication code did not verify. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
19
framework |
403 | The function is not supported or is blocked, which is how an unlicensed command reads. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
20
framework |
403 | The command is not allowed in the HSM's current state. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
26
framework |
403 | The feature is not licensed on this HSM. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
34
framework |
403 | The token is invalid, which is what an expired or malformed bearer token reads as. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
45
framework |
403 | The transaction counter in the key serial number is illegal. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
46
framework |
403 | The key serial number is the same as the current one, so the counter did not advance. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
48
framework |
403 | The wrapped key block could not be unwrapped. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
49
framework |
403 | The login was refused. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
50
framework |
403 | The session is not logged in. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
63
framework |
403 | The key is the wrong type for the command, commonly a wrong major key. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
84
framework |
403 | The derived key is weak and the HSM refuses to use it. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
91
framework |
403 | The identity holds no permission for this command. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
93
framework |
403 | The transaction counter is illegal. The second code the HSM uses for the same fault. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Payment Tokenization
| Code | Status | Message |
|---|---|---|
PaymentTokenization:DomainAlreadyExists
framework |
409 | Domain '{domain}' already exists for this wallet provider. No message defined. Domain already exists for this wallet provider registration. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:DomainNotFound
framework |
404 | The specified domain was not found in this wallet provider registration. No message defined. Domain was not found in the wallet provider registration. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:InternalTokenNotDecryptable
framework |
400 | Internal stored tokens are resolved through the stored payment method, not the wallet decryption path. No message defined. An internal stored token was submitted to the wallet decryption seam. Internal tokens are resolved through IPaymentTokenCrudAppService upstream and are never decryptable here. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:MetadataNotFound
framework |
404 | The specified provider metadata key '{key}' was not found. No message defined. Error code indicating that the requested provider metadata key was not found. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:PazeCertificateNoPendingRequest
framework |
409 | There is no pending {environment} certificate request to merge. Generate a CSR first. No message defined. There is no pending Paze certificate request to merge for the environment (nothing was generated, or the pending request is no longer in progress). Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:PazeCertificateNotReady
framework |
409 | The {environment} Paze certificate hasn't been generated yet. Generate it on the Settings page first. No message defined. The environment's certificate has not been generated (or is still pending), so the public key needed to build the JWKS is not available yet. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:PazeCertificateOperationInProgress
framework |
409 | A {environment} certificate request is already in progress. Download and merge the pending CSR, or cancel it, then try again. If you just started it, wait a moment and retry. No message defined. A Paze certificate request is already in progress for the environment (or Key Vault has not finished preparing it), so a new generation cannot start yet. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:PazeSignedCertificateInvalid
framework |
400 | The uploaded file isn't a valid signed certificate. Upload the CA-signed certificate as a PEM, base64, or DER (.cer) file. No message defined. The uploaded CA-signed certificate could not be read as a valid signed certificate (expected PEM, base64, or DER). Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:ProviderNotRecognized
framework |
400 | The submitted token provider does not correspond to a supported wallet provider. No message defined. The submitted token provider type has no corresponding wallet provider type, so no provider could be selected for decryption. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:ProviderNotRegistered
framework |
409 | The selected wallet provider is not configured or does not support this operation. No message defined. The configured wallet provider is not registered in the runtime registry. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:ProviderRegistrationFailed
framework |
429 | The wallet provider could not complete the merchant registration. Please verify the details and try again. No message defined. The wallet provider rejected the merchant-registration request. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:ProviderSessionFailed
framework |
429 | The wallet provider could not start a payment session. Please try again. No message defined. The wallet provider could not produce a payment session. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:ProviderUnregisterFailed
framework |
429 | The wallet provider could not remove the requested domain(s). Please try again. No message defined. The wallet provider rejected the unregister-domains request. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:WalletDomainAlreadyRegistered
framework |
409 | Domain '{0}' is already registered on another Paze registration in this environment. Each domain can belong to only one Paze registration per environment. No message defined. A domain in the create request is already registered on another registration row for a provider that requires globally-unique onboarding identity (Paze). Raised by the create path's pre-flight uniqueness check before the wire call. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:WalletMerchantNameAlreadyRegistered
framework |
409 | Merchant name '{0}' is already used by another registration for this wallet in this environment. Each merchant name must be unique per environment. No message defined. The merchant name in the create request is already used by another registration row for a provider whose traits require a unique merchant name per environment. Raised by the create path's pre-flight uniqueness check before the wire call. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:WalletProviderAlreadyExists
framework |
409 | Wallet provider is already registered for this merchant. No message defined. A wallet provider is already registered for the given merchant and provider type. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:WalletProviderNotFound
framework |
404 | Wallet provider registration was not found for the specified merchant and provider. No message defined. Wallet provider registration was not found for the given identifiers. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Payment Tokenization Apple Pay
| Code | Status | Message |
|---|---|---|
PaymentTokenization:ApplePay:CertificateRenewalFailed
framework |
429 | The Apple Pay certificate renewal could not be started. Please try again, or use the manual certificate signing request flow. No message defined. Certificate renewal could not start (CSR initiate failed). Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:ApplePay:ConnectionTestFailed
framework |
429 | The connection test to Apple Pay failed. Please verify the credentials and certificates, then try again. No message defined. Connectivity / credential probe to Apple's API failed. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:ApplePay:DeactivationFailed
framework |
429 | Apple Pay could not deactivate the merchant registration. Please try again. No message defined. Apple's API rejected the merchant deactivation. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:ApplePay:DomainVerificationUnsupported
framework |
400 | Apple Pay does not offer a standalone domain verification call. Domains are verified when the merchant is registered. No message defined. Domain verification could not be performed (Apple has no standalone API for it). Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:ApplePay:MerchantIdOidMissing
framework |
403 | The Apple Pay payment processing certificate is missing the Apple merchant identifier extension. Re-run the payment processing certificate flow for this Platform Integrator. No message defined. The Payment Processing certificate loaded from Key Vault is missing the Apple merchant-id-hash OID (1.2.840.113635.100.6.32). The cert was provisioned incorrectly; re-run the Payment Processing CSR / Complete lifecycle for this Platform Integrator. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:ApplePay:PayloadFieldsMissing
framework |
400 | The Apple Pay payment token decrypted successfully but was missing required card details, so no usable payment credential could be produced. No message defined. The token decrypted successfully but the plaintext payload was missing a required field (primary account number, or a parseable expiration date), so no usable card credential could be produced. Distinct from TokenDecryptionFailed (the cipher itself failed). Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:ApplePay:PaymentSessionFailed
framework |
429 | Apple Pay could not start a payment session. Please try again. No message defined. Apple Pay merchant session creation failed. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:ApplePay:PlatformIntegratorIdentifierNotConfigured
framework |
403 | The Apple Pay Platform Integrator identifier is not configured. Set it on the Wallets settings page before registering merchants. No message defined. Apple Pay PlatformIntegratorIdentifier setting is not configured. Drives both the Key Vault cert lookup and the encryptTo wire field on registerMerchant; without it, no Apple call can be made. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:ApplePay:PublicKeyHashMismatch
framework |
400 | The Apple Pay token was encrypted for a different payment processing certificate. This usually means a certificate renewal is in flight or the environment does not match. No message defined. Apple Pay token's header.publicKeyHash does not match the SHA-256 of the loaded Payment Processing certificate's SubjectPublicKeyInfo. The token was encrypted to a different certificate (likely cert renewal in flight, an environment mismatch, or a stale FE-side cached pub key). Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:ApplePay:RegistrationFailed
framework |
429 | Apple Pay could not complete the merchant registration. Please verify the merchant name, URL, and domains, then try again. No message defined. Apple's API rejected the merchant registration. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:ApplePay:SignatureVerificationFailed
framework |
400 | The Apple Pay payment token signature could not be verified. No message defined. Apple Pay token signature verification failed. Emitted only when ApplePaySettings.VerifySignature is on. Covers every failure branch of the pre-decryption signature check: malformed/absent CMS signature, cryptographic signature mismatch, missing Apple marker OIDs, a chain that does not build to the pinned Apple Root CA - G3, an unsupported token version, or (when enforced) a signing time outside the allowed window. The specific reason is in the operational log; only this stable code is surfaced to the caller (PCI: never echo token or crypto-library detail into the result message). Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:ApplePay:TokenDecryptionFailed
framework |
400 | The Apple Pay payment token could not be decrypted. No message defined. Apple Pay token decryption failed for a non-classified reason, typically malformed token JSON, an unparseable ephemeral public key, or an AES-GCM authentication-tag failure. The original exception details are emitted to the operational log; this code is the only thing surfaced to the caller (PCI: never echo cryptographic-library messages into ErrorMessage). Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Payment Tokenization Google Pay
| Code | Status | Message |
|---|---|---|
PaymentTokenization:GooglePay:AuthMethodNotSupported
framework |
403 | The Google Pay payment token used a card authentication method this gateway does not support. No message defined. The payload declared an authMethod this provider does not implement. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:GooglePay:DecryptionFailed
framework |
403 | The Google Pay payment token could not be decrypted. Check that the key pair in Key Vault is the one the payment page published its public key from. No message defined. The ECDH / HKDF / AES-CTR decryption of encryptedMessage failed, including a MAC mismatch. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:GooglePay:GatewayMerchantIdMismatch
framework |
403 | The Google Pay payment token was minted for a different merchant. Check that the gateway merchant ID on the wallet registration matches the one the payment page was configured with. No message defined. The decrypted payload's gatewayMerchantId is not the one the merchant's wallet registration holds, so the token was minted for a different merchant. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:GooglePay:PayloadFieldsMissing
framework |
403 | The Google Pay payment token decrypted but carried no usable card number or expiration date. No message defined. The inner payload decrypted successfully but was missing a required field (card number, or a parseable expiration month/year), so no usable card credential could be produced. Distinct from DecryptionFailed: the crypto was fine and the contents were not. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:GooglePay:PrivateKeyNotConfigured
framework |
403 | Google Pay is not provisioned for this environment. Check that a key alias is set in the Wallets settings and that the wallet registration carries a Google merchant ID. No message defined. No Key Vault alias is configured for the target environment, or the secret it names is absent. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:GooglePay:RootKeysUnavailable
framework |
403 | Google's root signing keys could not be retrieved, so the payment token's signature could not be checked. Check the root signing keys URL in the Wallets settings. No message defined. Google's root signing keys could not be fetched or parsed, so the signature could not be checked. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:GooglePay:SignatureVerificationFailed
framework |
403 | The Google Pay payment token's signature did not verify. Check that the merchant's Google merchant ID matches the one the payment page was configured with. No message defined. An ECDSA signature over the intermediate signing key or the signed message did not verify. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:GooglePay:TokenExpired
framework |
403 | The Google Pay payment token has expired and cannot be used. No message defined. The intermediate signing key, or the decrypted message itself, is past its expiration. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:GooglePay:TokenMalformed
framework |
403 | The Google Pay payment token could not be read. Only the ECv2 protocol version is supported. No message defined. The encrypted token was absent, was not JSON, or declared a protocol version this provider does not implement. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Payment Tokenization Paze
| Code | Status | Message |
|---|---|---|
PaymentTokenization:Paze:ConnectionTestFailed
framework |
429 | The connection test to Paze failed. Please verify the credentials and certificates, then try again. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:Paze:DeactivationFailed
framework |
429 | Paze could not deactivate the merchant registration. Please try again. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:Paze:JweDecryptionFailed
framework |
400 | The Paze secured payload could not be decrypted. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:Paze:OAuthFailed
framework |
429 | Paze rejected the authentication request. Please verify the OAuth settings and the environment certificate, then try again. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:Paze:PartnerNotConfigured
framework |
403 | The Paze partner details are not configured. Set the partner identifier and key alias on the Wallets settings page. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:Paze:PayloadFieldsMissing
framework |
400 | The Paze payload decrypted successfully but was missing required card details, so no usable payment credential could be produced. No message defined. The inner payload decrypted successfully but was missing a required field (network token, or a parseable expiration month/year), so no usable card credential could be produced. Distinct from TokenDecryptionFailed. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:Paze:PrivateKeyNotConfigured
framework |
403 | The Paze certificate for this environment has not been generated yet. Generate it on the Settings page first. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:Paze:RegistrationFailed
framework |
429 | Paze could not complete the merchant onboarding. Please verify the merchant details and try again. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:Paze:SecuredPayloadMissing
framework |
400 | The Paze response did not include a secured payload, so no payment credential could be read. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:Paze:SignatureVerificationFailed
framework |
400 | The Paze payload signature could not be verified. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentTokenization:Paze:TokenDecryptionFailed
framework |
400 | The Paze payment token could not be decrypted. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Phoeni X Gate V2
| Code | Status | Message |
|---|---|---|
PhoeniXGate:Data:ConcurrencyConflict
framework |
409 | This record was changed by someone else while you were editing it. Reload it and try again. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PhoeniXGateV2:InvalidLandingPageUrl
framework |
400 | The landing page URL must be a valid relative path (e.g. /Dashboard/Merchant). No message defined. A landing-page URL was supplied that is not a safe relative path: it is absolute, protocol-relative, carries a scheme, or does not parse as a relative URI. Rejected to close the open-redirect vector. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PhoeniXGateV2:TooManyShortcuts
framework |
403 | You can pin at most {max} shortcuts ({count} were submitted). No message defined. More shortcuts were saved than PhoeniXGateV2Settings.UserShortcutsMaxCount allows. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PhoeniXGateV2:UnknownFeatureProvider
framework |
400 | There is no feature provider named {ProviderName}. Features can only be read or changed for a provider this system manages. No message defined. A feature-management request named a feature value provider this host has no policy for. Only the providers registered in FeatureManagementOptions.ProviderPolicies can be read or written; a name outside that set, the merchant setting provider name M included, is a caller mistake rather than a server fault. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PhoeniXGateV2:UnknownPermissionProvider
framework |
400 | There is no permission provider named {ProviderName}. Permissions can only be read or changed for a provider this system manages. No message defined. A permission-management request named a permission value provider this host has no policy for. Only the providers registered in PermissionManagementOptions.ProviderPolicies can be read or written; a name outside that set is a caller mistake rather than a server fault. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PhoeniXGateV2:UserNameChangeNotSupportedOnSelfServiceProfile
framework |
403 | Username cannot be changed from the profile page. Contact an administrator if you need a different username. No message defined. A user name change was submitted through the self-service profile. The self-service profile does not change user names; an administrator changes them through user management. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Volo.Account:PhoneNumberConfirmationDisabled
framework |
403 | Phone number confirmation is disabled! No message defined. Phone-number confirmation was requested while the SignIn.EnablePhoneNumberConfirmation setting is off. See AccountPhoneNumberEmpty for why this vendored namespace has a first-party constant. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Volo.Account:PhoneNumberEmpty
framework |
400 | Phone number is empty! No message defined. A phone-number operation was requested for a user who has no phone number on record. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Promotions
| Code | Status | Message |
|---|---|---|
Promotions:ApplicabilityTargetsRequired
framework |
400 | A promotion narrowed to pages, products or plans must name at least one. No message defined. The applicability scope names a target list, and the list is empty. Such a promotion could never apply to anything, so it is refused rather than stored as permanently inert. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Promotions:CurrencyRequiredForFlatDiscount
framework |
400 | A flat-amount promotion must name the currency its value is in. No message defined. A flat-amount promotion must name the currency its value is denominated in. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Promotions:DiscountValueOutOfRange
framework |
400 | A {DiscountType} discount of {Value} is outside the allowed range, which tops out at {Maximum}. No message defined. The discount value is outside the range its discount type allows. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Promotions:DurationCyclesRequired
framework |
400 | Say how many billing cycles the discount runs for. No message defined. A duration of Cycles must name how many billing cycles it runs for. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Promotions:LimitOutOfRange
framework |
400 | That limit is outside the allowed range. No message defined. A redemption ceiling or minimum amount is outside the range the promotion accepts. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Promotions:MerchantIdIsImmutable
framework |
409 | A promotion cannot be moved to a different merchant after it is created. No message defined. A promotion's owning merchant cannot be changed after it is created. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Promotions:PromotionCodeAlreadyExists
framework |
409 | Another promotion of this merchant already uses that code. No message defined. Another promotion of the same merchant already uses this code. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Promotions:PromotionNotFound
framework |
404 | That promotion could not be found. No message defined. The promotion was not found, or is not visible to the caller. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Promotions:RedemptionContention
framework |
409 | That promotion is being used by too many customers at once. Please try again. No message defined. A redemption could not be recorded because too many concurrent redemptions of the same promotion contended for the ceiling. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Promotions:RedemptionLimitReached
framework |
409 | That promotion has been fully used. No message defined. A redemption was recorded against a promotion whose redemption ceiling is already reached. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Promotions:StartMustBeBeforeEnd
framework |
400 | The promotion start must fall before the promotion end. No message defined. The validity start must fall before the validity end. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Promotions:TooManyApplicabilityTargets
framework |
400 | A promotion can name at most {Maximum} pages, products or plans, and {Requested} were given. No message defined. The applicability scope names more targets than the embedded list holds. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Rate Limiting
| Code | Status | Message |
|---|---|---|
RateLimiting:ProfileNameAlreadyExists
framework |
409 | A rate limit profile named '{name}' already exists. No message defined. Another profile in the same tenant already uses the requested name. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
RateLimiting:ProfileNotFound
framework |
404 | The selected rate limit profile does not exist. No message defined. The profile a rule points at does not exist. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
RateLimiting:RuleAlreadyExistsForLimiter
framework |
409 | This profile already has a rule for the limiter '{limiterName}'. No message defined. The profile already carries a rule for the same limiter. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Referential Integrity
| Code | Status | Message |
|---|---|---|
WinkPG.ReferentialIntegrity:Blocked
framework |
409 | This record is still referenced by other records, so it cannot be changed or removed. No message defined. Code set when GuardAsync``1 trips on a HardBlock reference. The exception's Data bag carries: entityType: full CLR type name of the target. entityId: stable identifier of the target. operation: Kind. references: JSON-serializable list of blocking EntityReference rows. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Reports
| Code | Status | Message |
|---|---|---|
Reports:ExportFormatNotSupported
framework |
400 | This report cannot be exported as {Format}. No message defined. The export asked for a file format this report does not produce. The report catalog lists each report's formats. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Reports:InvalidFilterValue
framework |
400 | The value for the filter '{Filter}' is not valid. No message defined. The run supplied a filter value that does not fit the filter's type or its allowed options. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Reports:MerchantFilterNotSupported
framework |
400 | This report cannot be narrowed to a single merchant. No message defined. The run named a merchant, but this report cannot be narrowed to one merchant because it does not report merchant-scoped data. The report catalog says which reports accept a merchant. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Reports:MerchantNotInScope
framework |
404 | The merchant was not found or is not available to you. No message defined. The run named a merchant the caller cannot read. Answered the same way whether the merchant is outside the caller's scope or does not exist, so the refusal does not reveal which. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Reports:ReportNotFound
framework |
404 | The report was not found. No message defined. The report does not exist, or it is not available to this tenant because the feature it belongs to is turned off. Both answer the same way on every report route, so a caller cannot tell a disabled report from one that was never defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Reports:RowLimitExceeded
framework |
400 | The report returned more than {MaxRowCount} rows. Narrow the date range or add filters, then run it again. No message defined. The run produced more rows than a single request may return. Narrow the date range or add filters and run it again. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Reports:UnknownFilter
framework |
400 | The filter '{Filter}' is not defined for this report. No message defined. The run supplied a filter this report does not define. The report's parameters route lists the filters it accepts. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Resellers
| Code | Status | Message |
|---|---|---|
Resellers:CaptureHppPageRejected
framework |
403 | The selected card capture Hosted Payment Page is not valid. It must be an active Save Card page that belongs to this reseller. No message defined. The reseller's candidate card-capture hosted payment page does not exist, is not a card capture page, or belongs to a different reseller. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Resellers:CardAcceptanceDefaultIssuerCountriesInvalid
framework |
400 | The card acceptance default's issuer countries are not valid for the selected mode. The allow list and deny list modes need at least one country and the other modes need none, and every code must be a distinct two-letter ISO 3166-1 alpha-2 country, for example US. No message defined. The reseller's card acceptance default carries an issuer country list that disagrees with the issuer country mode it was sent with, or a code that is not a two-letter ISO 3166-1 alpha-2 country. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Resellers:CardAcceptanceDefaultRefusesEverything
framework |
400 | The card acceptance default refuses both credit and debit cards, or every card type, which refuses very nearly every card for every merchant that inherits it. Accept at least one of credit or debit, and at least one of consumer, commercial or GSA. No message defined. The reseller's card acceptance default refuses both card rails, or every issued entity, so it would refuse very nearly every card for every merchant that inherits it. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Resellers:CollectionMerchantRejected
framework |
403 | The selected collection merchant is not valid. It must be an active merchant that belongs to this reseller. No message defined. The reseller's candidate collection merchant does not exist, is inactive, or belongs to a different reseller. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Resellers:DefaultTaxRateRejected
framework |
403 | The selected default tax rate is not valid. It must be an active tax rate that belongs to this reseller. No message defined. The reseller's candidate default tax rate does not exist, is inactive, or belongs to a different biller. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Resellers:InvoiceTemplateRejected
framework |
403 | The selected invoice template is not valid. It must be an active template that belongs to this reseller. No message defined. The reseller's candidate default invoice template does not exist, is inactive, or belongs to a different biller. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Resellers:ResellerParentCheckUnavailable
framework |
403 | The reseller hierarchy could not be checked, so the parent change was not saved. Try again in a moment. No message defined. The parent chain could not be read, so the cycle check could not reach a verdict. Distinct from a rejection: the request may succeed unchanged on a retry. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Resellers:ResellerParentCreatesCycle
framework |
403 | A reseller cannot be moved beneath itself or beneath one of its own sub resellers. Choose a parent outside this reseller's hierarchy. No message defined. The selected parent reseller would place the reseller inside its own ancestry. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Resellers:ResellerParentNotPermitted
framework |
403 | You can only place a reseller beneath your own reseller. Choose your reseller, or one below it, as the parent. No message defined. The selected parent reseller is outside what the caller is permitted to parent under. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Resellers:SubResellerCreationDisabled
framework |
403 | Sub resellers are not enabled for this reseller. Ask an administrator to turn on the Sub Resellers option before creating one. No message defined. Sub-reseller creation is switched off for the acting reseller or for the selected parent. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Resellers:TopLevelResellerRequiresAdmin
framework |
403 | Only an administrator can create a top-level reseller. Choose a parent reseller for the new reseller. No message defined. Creating a reseller with no parent is reserved to administrators. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Saas
| Code | Status | Message |
|---|---|---|
Saas:Edition:0001
framework |
403 | Edition doesn't have a plan! No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Saas:Edition:0002
framework |
403 | Unable to delete {EditionName}, It is in use by tenants. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Scoped Settings
| Code | Status | Message |
|---|---|---|
WinkPG.ScopedSettings:InvalidTarget
framework |
400 | The target reseller or merchant is not valid. No message defined. The target reseller/merchant id is empty (Empty). Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
WinkPG.ScopedSettings:NotOverridable
framework |
403 | This setting cannot be overridden at the requested scope. No message defined. The setting is not registered overridable at the requested scope. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
WinkPG.ScopedSettings:ProviderNotAllowed
framework |
403 | This setting cannot be saved at the requested scope: its definition does not allow the scoped provider, so the value would never be read back. No message defined. The setting is registered overridable at the scope, but its ABP SettingDefinition.Providers restriction excludes the matching scoped provider ("R"/"M"), so a write would persist a value the read pipeline can never resolve (a silent dead write). Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
WinkPG.ScopedSettings:ScopeUnavailable
framework |
403 | No reseller or merchant scope is available to save this setting against. No message defined. No effective reseller/merchant scope is available to resolve a *ForCurrent* write. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Security Posture
| Code | Status | Message |
|---|---|---|
Sbom:Error:InvalidBuildId
framework |
400 | Invalid SBOM build identifier. No message defined. The supplied SBOM build identifier is empty or not in the accepted shape. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Sbom:Error:InvalidComponentName
framework |
400 | Invalid SBOM component name. No message defined. The supplied SBOM component name is empty or not in the accepted shape. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Sbom:Error:NotConfigured
framework |
403 | The SBOM archive is not configured for this deployment. Set WinkPG:SecurityPosture:SbomStorage in configuration to enable it. No message defined. The SBOM archive has no storage configured for this deployment, so nothing can be served. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Shipping
| Code | Status | Message |
|---|---|---|
Shipping:DefaultCannotBeCleared
framework |
409 | This is the current default. Make another one the default first; the flag moves in one step. No message defined. The row is the merchant's default and the merchant has others, so the default flag cannot be switched off on it directly: another row has to be made the default first, which moves the flag in one step and never leaves the merchant without one. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Shipping:DefaultCannotBeDeleted
framework |
409 | This is the current default and others exist. Make another one the default before deleting this one. No message defined. The row is the merchant's default and the merchant has others, so deleting it would leave the merchant with rows but no default. Another row has to be made the default first. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Shipping:MerchantIdIsImmutable
framework |
409 | A ship-from origin or parcel preset cannot be moved to a different merchant after it is created. No message defined. An origin's or preset's owning merchant cannot be changed after it is created. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Shipping:OriginNotFound
framework |
404 | That ship-from origin could not be found. No message defined. The ship-from origin was not found, or is not visible to the caller. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Shipping:ParcelMeasureOutOfRange
framework |
400 | Every parcel measure must be greater than zero and no more than {Maximum}. No message defined. A parcel's weight, length, width or height is zero, negative, or above its ceiling: 100,000 for weight and 10,000 for each dimension, in the parcel's own units. Arrives as the code of each validationErrors entry, whose member names the field (for example parcels[0].Weight on a rate quote, or height on a parcel preset). Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Shipping:ParcelPresetNotFound
framework |
404 | That parcel preset could not be found. No message defined. The parcel preset was not found, or is not visible to the caller. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Shipping:QuoteDestinationChanged
framework |
409 | The shipping address changed after the rate was quoted. Get shipping rates again for the new address. No message defined. The submitted destination is not the address the rate quote was priced against. An address change after quoting needs a new quote, never a stale price. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Shipping:QuoteExpired
framework |
409 | That shipping rate has expired. Get shipping rates again and choose a service. No message defined. The selected rate quote is past its expiry. The carrier price it recorded is no longer honored, and the shopper has to quote again. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Shipping:QuoteNotFound
framework |
404 | That shipping rate could not be found. Get shipping rates again and choose a service. No message defined. The selected rate quote cannot be redeemed: no quote with that identifier exists for this merchant, it belongs to another merchant or was issued for another hosted payment session, or the submit named no quote on a page that prices shipping from one. Deliberately one code for all of these, so a probe cannot tell an unknown identifier from another shopper's quote. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Shipping:QuoteOptionNotFound
framework |
404 | That shipping service is not one of the rates offered. Get shipping rates again and choose a service. No message defined. The selected option is not one of the options the rate quote returned. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Shipping:QuoteRateLimitExceeded
framework |
429 | Too many shipping rate quotes were requested for this merchant. Wait a moment and try again. No message defined. The merchant has requested more rate quotes inside the current window than the platform's per-merchant ceiling allows. Answered before any carrier call is made. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Step Up
| Code | Status | Message |
|---|---|---|
WinkPG.StepUp:MfaEnrolmentRequired
framework |
403 | This action needs an authenticator app. Set one up in your security settings, then try again. No message defined. The action can only be satisfied by an enrolled second factor and the acting user has none. The remedy is enrolment, never a weaker factor. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
WinkPG.StepUp:NoInteractiveSession
framework |
403 | This action can only be performed by a signed-in person, so it cannot run from an automated caller or an API key. No message defined. The call reached a guarded action with no interactive session behind it: a Functions host, a background job, or a route authenticated with an API key rather than a person. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
WinkPG.StepUp:Required
framework |
403 | For your security, confirm it is you before continuing. No message defined. The caller must re-authenticate before this action. Carries the action key and the window in the exception data so a client can tell the person what to satisfy and for how long it lasts. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
WinkPG.StepUp:UnknownAction
framework |
403 | This action is misconfigured and has been refused. Contact support. No message defined. The guarded method names an action key no contributor declared. A configuration defect, refused rather than passed through so a method that looks guarded is never silently unguarded. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Stored Credential Consents
| Code | Status | Message |
|---|---|---|
stored_credential_consent_input_invalid
framework |
400 | A capture request was submitted with fields that contradict each other (e.g. Captured=false but other fields populated; Recurring-scoped consent with no enrollment terms). No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
stored_credential_consent_required
framework |
400 | The transaction would store the card and this merchant requires captured consent. Fetch the terms from GET /api/merchant/stored-credential-consent/config and re-submit with a StoredCredentialConsentInput. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
stored_credential_consent_text_version_retracted
framework |
409 | A transaction submitted a ConsentTextVersion for a template that has been retracted. Refetch the consent config and resubmit. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
stored_credential_consent_text_version_unknown
framework |
400 | A transaction submitted a ConsentTextVersion that does not match any known template. The caller should refetch the consent config and resubmit. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Surcharging
| Code | Status | Message |
|---|---|---|
Surcharging:ConfigurationAlreadyExists
framework |
409 | A surcharge configuration already exists for this merchant. No message defined. A surcharge configuration already exists for the merchant (one per merchant). Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Surcharging:ConfigurationNotFound
framework |
404 | This merchant has no surcharge configuration to change. Create one before updating it. No message defined. The merchant has no surcharge configuration to change. Raised by the merge patch endpoint, which has to read the stored configuration before it can apply a patch to it. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Surcharging:DuplicateStatePolicy
framework |
400 | The same state code appears more than once in the state policy list. No message defined. A state policy list contains the same state code more than once. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Surcharging:ForceEnableNotAvailable
framework |
403 | Skipping the notice waiting period is only possible in a non-production environment with the sandbox override setting turned on. No message defined. The non-production waiting-period bypass is not available here: the host environment is not on the allowlist, or the sandbox-override setting is off. A policy refusal, not a state conflict. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Surcharging:ForceEnableRequiresConfiguration
framework |
409 | Save a surcharge rate for this merchant before activating surcharging. No message defined. Force-enable was requested for a configuration that has not been set up far enough to activate (it carries no rate, so it is still NotConfigured). Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Surcharging:InvalidRate
framework |
400 | The surcharge rate is invalid. No message defined. A supplied rate is invalid (e.g. negative). Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Surcharging:NewNoticeRequiredForProcessorChange
framework |
409 | This merchant has an active card processor that no filed surcharge notice covers. File a notice for that processor, or one without a processor account to cover every processor, before activating surcharging. No message defined. An enable, a force enable or the waiting-period sweep refused a configuration because the merchant has an active card processor profile that no counted notice covers. Raised only while the RequireProcessorNoticeCoverage setting is on. A state conflict: filing a notice for that processor profile, or one with no processor account (which covers every processor), clears it. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Surcharging:NoApplicableNotice
framework |
409 | Surcharging cannot start: no filed notice applies to the currently allowed networks. No message defined. Activation has no notice applicable to the currently allowed networks. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Surcharging:NoticeNotFound
framework |
404 | No surcharge notice with this id exists for this merchant. A notice without an id cannot be amended; file a new notice to correct it. No message defined. No notice on this merchant's configuration carries the supplied notice id. That includes a notice recorded before notice ids were assigned, which carries none and so cannot be named in an amendment; it is corrected by filing a new notice instead. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Surcharging:NoticeRequired
framework |
400 | A surcharge notice must be filed before surcharging can be activated. No message defined. An operation requires at least one filed notice. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Surcharging:ProcessorAccountNotFound
framework |
400 | The processor account is not one of this merchant's card processor profiles. Use a processor profile id from the merchant's processing settings, or leave the processor account out to file a notice that covers every processor. No message defined. A notice named a processorAccountId that is not one of the merchant's card processor profiles. The value is the processor profile id from the merchant's processing settings; an omitted value files an all-processor notice instead. A request error rather than a state conflict: the same request can never succeed until it names a profile the merchant has. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Surcharging:PromotionBlockedByPolicy
framework |
409 | Surcharging cannot be activated: this platform only activates merchants whose card-brand notice was filed the required way, and the notices on file for this merchant were not. File a new notice through the API, or ask an administrator about the automatic promotion source policy. No message defined. An activation was refused by the deployment's SurchargeAutoPromotionSourcePolicy: the notices this configuration's waiting period rests on were not filed the way the policy requires, or the policy promotes nothing at all. A state conflict rather than an authorization failure, for the same reason PromotionHeld is: the caller may hold every permission the verb needs and still be refused until a notice is filed the sanctioned way, or an operator moves the policy. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Surcharging:PromotionHeld
framework |
409 | Surcharging cannot be activated: a promotion hold is in place for this merchant. Release the hold to allow activation. No message defined. An activation was refused because the configuration carries an explicit promotion hold. A state conflict, not an authorization failure: the caller may hold every permission the verb needs and still be refused until the hold is released. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Surcharging:QuoteRateLimitExceeded
framework |
429 | Too many surcharge-quote requests. Please slow down and try again shortly. No message defined. The surcharge-quote endpoint received more requests than its per-caller ceiling allows. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Surcharging:RateExceedsCap
framework |
400 | The surcharge rate exceeds the maximum permitted rate. No message defined. A surcharge rate exceeds the applicable cap (network or state). Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Surcharging:RateRequired
framework |
409 | Set a default surcharge rate, or a rate for every allowed card network, before filing a notice or activating surcharging. No message defined. A notice, an enable or a force enable was refused because the configuration names no rate for at least one card network it may surcharge: there is no default rate, and either no network policies (so every brand is allowed) or an allowed network with no rate of its own. A state conflict: saving a default rate, or a rate on every allowed network, clears it. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Surcharging:ReEnableRequiresDisabled
framework |
409 | Surcharging can only be re-enabled from a disabled state. No message defined. Re-enabling requires the configuration to be in the disabled state. No longer raised: the separate re-enable path was retired and an enable from Disabled goes through the ordinary enable. Kept because the code is published in the customer-facing error code catalog. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Surcharging:WaitingPeriodActive
framework |
409 | Surcharging cannot start yet: the required notice waiting period has not elapsed. No message defined. An operation requires the mandatory notice waiting period to have elapsed. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Three D Secure
| Code | Status | Message |
|---|---|---|
ThreeDSecure:CapabilityNotSupported
framework |
403 | The configured 3-D Secure provider does not support this step of the authentication. No message defined. The registered 3-D Secure provider does not implement the capability the caller needs, for example asking a provider with no challenge support to build a challenge request. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
ThreeDSecure:FeatureDisabled
framework |
403 | 3-D Secure is not enabled for this account. No message defined. The 3-D Secure capability is switched off for this host or tenant, so its configuration and invocation surfaces refuse. Distinct from a merchant that simply has no binding, which is not an error at all: this says the platform is not serving the capability to anyone here. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
ThreeDSecure:ProviderNotRegistered
framework |
403 | 3-D Secure authentication is not available: the configured provider is not installed on this environment. No message defined. No 3-D Secure provider is registered for the requested provider type. Either the vendor's module is not wired into the host, or configuration selected a provider that does not ship. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Three D Secure Fake
| Code | Status | Message |
|---|---|---|
ThreeDSecure.Fake:AssertionSignatureMissing
framework |
400 | The 3-D Secure device confirmation could not be verified because it carried no signature. No message defined. A Secure Payment Confirmation assertion was submitted with no signature, so there was nothing to verify. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
ThreeDSecure.Fake:ChallengeResultMissing
framework |
400 | The 3-D Secure challenge result could not be read because it carried no data. No message defined. A challenge result was submitted with no encoded payload, which a real ACS never does. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Three D Secure Paay
| Code | Status | Message |
|---|---|---|
ThreeDSecure.Paay:AuthenticationRejected
framework |
400 | The 3-D Secure provider refused this authentication request. No message defined. Paay refused the request. The content, the credentials, or the account configuration was not acceptable, and repeating the same call unchanged will be refused again. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
ThreeDSecure.Paay:ChallengeInstructionIncomplete
framework |
400 | The 3-D Secure challenge could not be started because the provider returned no challenge address. No message defined. Paay reported that a challenge is required but did not return the ACS URL and ACS transaction identifier needed to run one, leaving the caller an instruction it cannot act on. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
ThreeDSecure.Paay:ChallengeResultMissing
framework |
400 | The 3-D Secure challenge result could not be read because it carried no data. No message defined. A challenge result was submitted with no encoded payload, so there was nothing to attribute to the cardholder. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
ThreeDSecure.Paay:CredentialsNotConfigured
framework |
403 | 3-D Secure authentication is not available: the provider credentials have not been configured for this environment. No message defined. No Paay API key and secret are configured for this environment, so no call was attempted. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
ThreeDSecure.Paay:CurrencyNotSupported
framework |
400 | The 3-D Secure provider does not support the currency of this transaction. No message defined. The requested currency is not in Paay's published currency table, so no numeric code could be sent. Omitting the field would have Paay authenticate against the account's default currency instead, which is a wrong answer reported as a right one. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
ThreeDSecure.Paay:PurchaseContextRequired
framework |
400 | The 3-D Secure device check could not be prepared because the purchase amount, currency, or browser details were missing. No message defined. The 3DS Method step was requested without the purchase context Paay needs. Paay has no PAN-only method lookup: the method URL comes back from the authentication call, which requires the amount, the currency, and the browser data. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
ThreeDSecure.Paay:ResultNotReady
framework |
429 | The 3-D Secure provider did not return a result in time. The authentication is still open and can be checked again. No message defined. The polling budget was spent before Paay produced a result. The authentication is still open on Paay's side; polling the same transaction again can still answer. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
ThreeDSecure.Paay:ThreeRiCredentialsNotConfigured
framework |
403 | 3-D Secure authentication for stored cards is not available: the provider credentials for it have not been configured for this environment. No message defined. No Paay 3RI OAuth client is configured for this environment. The 3RI endpoints authenticate with a separate client credential pair from the browser Direct API, so an account can hold one and not the other. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
ThreeDSecure.Paay:VendorUnavailable
framework |
429 | The 3-D Secure provider could not be reached. Try again shortly. No message defined. Paay could not be reached, answered a server error, or rate-limited the call. Nothing about the request was rejected, so the same call can succeed later. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transaction Manager
| Code | Status | Message |
|---|---|---|
AUTH_RESULT_TIMEOUT
framework |
429 | The authorization result did not arrive inside the pending-authorization window. The transaction may still complete out of band, so the caller should reconcile rather than assume the charge did not happen. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
CardNotAcceptedByMerchantPolicy
framework |
400 | The merchant's card acceptance policy refuses the card, judged from the BIN data resolved by enrichment. The orchestrator's backstop for the create path's own gate, and the only enforcement point for a payload whose PAN becomes available only after enrichment. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
CashAmountExceedsMerchantPolicy
framework |
400 | A cash sale is above the merchant's maximum cash sale amount. The orchestrator's backstop for the create path's Transactions:CashAmountExceedsMerchantPolicy, for a cash sale that reached orchestration without passing the create path's gate. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
CashRegisterRequiredByMerchantPolicy
framework |
400 | A cash sale names no register and the merchant's cash policy requires one. The orchestrator's backstop for the create path's Transactions:CashRegisterRequiredByMerchantPolicy. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
CashSourceNotAllowedByMerchantPolicy
framework |
400 | A cash sale came from a source other than the Virtual Terminal and the merchant's cash policy takes cash there only. The orchestrator's backstop for the create path's Transactions:CashSourceNotAllowedByMerchantPolicy. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Decline
framework |
409 | The transaction was rejected before any processor could act on it, typically because every candidate processor was exhausted. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
InvalidMerchantInfo
framework |
404 | The merchant the request named could not be resolved. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
MISSING_CONTEXT
framework |
400 | The request reached the orchestrator without context the flow needs before it can run, such as merchant or user detail the validation stage could not resolve. The response names the missing pieces. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
OPERATION_NOT_ALLOWED
framework |
409 | The requested operation is not valid for the transaction's current state, for example a capture against a transaction that was never authorized. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentechIncrementalAuthorization.BrandNotSupported
framework |
403 | The card brand on the transaction does not support incremental authorization at Paymentech. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentechIncrementalAuthorization.InvalidAmount
framework |
403 | The requested incremental authorization amount is not one the Paymentech host accepts. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentechIncrementalAuthorization.MissingAuthCode
framework |
403 | An incremental authorization named no authorization code from the original approval, which the Paymentech host requires to attach the increment to it. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentechIncrementalAuthorization.MissingFields
framework |
403 | An incremental authorization reached the Paymentech handler without the fields the host requires to raise the reserved amount. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentechIncrementalAuthorization.NotAuthorized
framework |
403 | An incremental authorization was requested against a transaction that is not in an authorized state, so there is no reservation to raise. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PaymentechReversal.PartialReleaseUnavailable
framework |
403 | A partial release could not be resolved to an amount the Paymentech host would accept, so no reversal was attempted. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PinDebitNotSupportedOnCreditBin
framework |
400 | The request asked for a PIN debit funding source on a card whose BIN is credit. The two directives contradict each other and no processor can satisfy both. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
PolicyRejected
framework |
403 | A platform policy rule refused the transaction, for example the certification-overrides gate. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
ProcessorNotConfigured
framework |
409 | No processor could be selected for this transaction. A merchant configuration change is needed before a retry can succeed. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
REVIEW_DECLINED
framework |
not an HTTP status | A reviewer declined a transaction that fraud screening had held for manual review. This is a policy refusal and it is final: a human looked at this order and rejected it. No message defined. Read from responseData.declineReasonCode on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
REVIEW_EXPIRED
framework |
not an HTTP status | A transaction held for manual review reached its deadline with no disposition, and the merchant's configured expiry action was to decline. Nobody rejected the order; nobody released it either. No message defined. Read from responseData.declineReasonCode on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Reject
framework |
409 | The transaction was rejected by the orchestrator's own pre-authorization checks. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
SCREENING_STOPPED
framework |
403 | A screening contributor stopped the transaction. This is a policy refusal and it is final: resubmitting the same request will be stopped again. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
SCREENING_UNAVAILABLE
framework |
429 | Screening could not be completed, for example a screening provider timed out or its circuit is open, on a profile configured to hard stop. Retrying later may succeed with no configuration change. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
ThreeDSecureAuthenticationRequired
framework |
400 | The merchant requires 3-D Secure authentication and the transaction arrived without a usable one. Raised by the pipeline's 3DS stage for a merchant on the Require policy mode when no authentication ran, the issuer did not authenticate, or the result handed to the pipeline failed validation. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
TransactionManager:NoAuthorizationContributorRegistered
framework |
403 | No payment processor integration is registered for processor '{ProcessorKey}'. Please contact support. No message defined. A processor profile was selected, but no authorization contributor is registered for the processor key. This typically means the processor integration is not installed or configured. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
UserAuthenticationFailed
framework |
404 | The user the request named could not be resolved. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
VALIDATION_FAILED
framework |
400 | The transaction failed validation. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions
| Code | Status | Message |
|---|---|---|
ACH_REPEAT_AMOUNT_REQUIRED
framework |
400 | A Repeat against a bank-account (ACH) transaction needs an amount greater than zero, because a repeat of a check tender is always a fresh debit. Re-submit with the amount to debit. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
ADJUSTMENT_TYPE_NOT_SUPPORTED
framework |
409 | The merchant's active processor does not support the adjustment the request asked for (OfflineAdjustment or IncrementalAuthorization). Submit an adjustment the processor supports, or route the merchant to one that offers the shape you need. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Decryption:InvalidPayload
framework |
400 | The encrypted payload is missing the key serial number or the encrypted track data needed to decrypt it. No message defined. The request is marked as encrypted with a DUKPT or ONGUARD encryption type but carries no key serial number or no encrypted track data the gateway could decrypt. Send the key serial number and the encrypted track 2 (or track 1) data. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Decryption:InvalidResult
framework |
409 | The payment encryption provider returned no usable cleartext for the payload. No message defined. The payment encryption provider answered, but the answer carried no usable cleartext. Retry the swipe; if it recurs, the key configured for this key serial identifier does not match the reader's injected key. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Decryption:KeyDeactivated
framework |
403 | The key serial number matches a key that has been deactivated for the merchant. No message defined. The key serial number on the request matches a key serial identifier the merchant has deactivated. Reactivate the key, or re-inject the reader with an active key. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Decryption:ProviderAuthenticationFailed
framework |
409 | The payment encryption provider refused the gateway's credentials. No message defined. The payment encryption provider refused the gateway's credentials. This is a configuration fault on the gateway or merchant side, not something the caller can correct. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Decryption:ProviderNotConfigured
framework |
403 | The merchant's payment encryption provider cannot decrypt this payload: the provider does not support the scheme, or the matched key is not fully configured. No message defined. The request carried a DUKPT or ONGUARD payload and the merchant's payment encryption provider cannot serve it: the provider does not support the scheme, or the matched key has no key reference on file. Complete the merchant's payment encryption configuration. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Decryption:ProviderRejected
framework |
409 | The payment encryption provider refused to decrypt the payload. No message defined. The payment encryption provider refused the decryption. The provider's own result code is recorded for the merchant's support contact; the payload cannot be retried as sent. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Decryption:Timeout
framework |
429 | The payment encryption provider did not respond in time. Retry the request. No message defined. The payment encryption provider did not answer within the merchant's decryption timeout. Retry the request; no configuration change is needed. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Decryption:UnknownKeySerialIdentifier
framework |
403 | The key serial number does not match any key serial identifier configured for the merchant. No message defined. The key serial number on the request does not match any key serial identifier in the merchant's key table. Add the reader's key serial identifier to the merchant's payment encryption configuration. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
OPERATION_IDEMPOTENCY_KEY_CONFLICT
framework |
409 | The operation IdempotencyKey was already used on this transaction for a different OperationType. A key identifies one logical operation attempt, so use a fresh key for the new operation. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
OPERATION_IDEMPOTENCY_STORE_UNAVAILABLE
framework |
429 | The operation-idempotency dedupe store could not be consulted or updated. The operation is rejected rather than executed without dedupe protection. Retry the operation with the same key. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
OPERATION_IN_PROGRESS
framework |
409 | The same operation is already in flight for this transaction and IdempotencyKey. Poll the transaction status for the final outcome rather than re-submitting. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
OPERATION_NOT_ALLOWED_IN_STATE
framework |
409 | The transaction's current state does not allow the requested operation. The error carries operationType, allowedActions, currentStage and settlementStatus under Data. Submit one of the allowed operations, or wait for a stage where this one applies. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
OPERATION_TARGET_NOT_FOUND
framework |
404 | The transaction the operation targets does not exist, or is not visible to this caller. Check the merchant and transaction identifiers. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
OfflineAdjustment.FieldsRequired
framework |
400 | An OfflineAdjustment arrived with nothing to apply: either no OfflineAdjustmentFields bundle, or one in which every field is empty. Populate at least TipAmount. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
OfflineAdjustment.TipOnlyUntilWpg20_2682
framework |
400 | An offline adjustment can only change the tip today. Submit TipAmount on its own; any other field in the bundle is refused. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry OfflineAdjustment.TipOnly in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
REVERSAL_AMOUNT_EXCEEDS_REMAINING
framework |
409 | The requested reversal is larger than the transaction's remaining reversible balance. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
REVERSAL_FULLY_CONSUMED
framework |
409 | The authorisation has already been reversed in full; there is nothing left to reverse. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:AchAuthorizationEvidenceRequired
framework |
400 | This ACH payment needs an authorization on file. Choose how the account holder authorized the debit (phone or signed form) and confirm you obtained it before submitting. No message defined. A Virtual Terminal Check (ACH) debit was submitted without the required NACHA authorization evidence: the operator did not select a valid TEL / PPD SEC code, or did not attest that the account holder's authorization was obtained. Rejected at the transaction-create boundary (before the transaction document is persisted and before the durable orchestration starts) so a CSR-keyed ACH debit is never taken without a substantiable authorization record. The VT UI gates the submit client-side; this is the authoritative server-side fail-closed guard. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:AuthCodeMalformed
framework |
400 | The auth code must be 1 to 20 alphanumeric characters. No message defined. OriginalTransaction.AuthCode is outside the accepted 1-20 alphanumeric-character bound. Rejected at the boundary so malformed or unbounded input cannot reach processor payloads or persisted state. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:BatchSequenceMerchantNotFound
framework |
403 | The merchant could not be found. No message defined. The merchant named by a batch-sequence request could not be read. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:BatchSequenceNumberOutOfRange
framework |
403 | The batch number is outside the range this processor accepts. No message defined. The requested next batch number falls outside the range the processor's host accepts. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:BatchSequenceProcessorNotFound
framework |
403 | This merchant has no active processor profile for the selected processor. No message defined. The merchant has no active processor profile for the processor a batch-sequence request named. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:CaptureNotAllowedOnZeroAuth
framework |
409 | Capture is not allowed on a zero-amount authorization. Zero-dollar authorizations verify the card only and cannot be captured or settled. No message defined. A capture was requested against a zero-amount authorization. Zero-dollar authorizations are verification-only and can never be captured or settled. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:CardNotAcceptedByMerchantPolicy
framework |
400 | This merchant does not accept this type of card. Please use a different card. No message defined. The merchant's card acceptance policy refuses the card the request presented. No transaction is created and nothing is sent to a processor. Opt-in and per merchant. The card is judged from its BIN on three independent axes: funding source (credit, debit, prepaid), issued entity (consumer, commercial, GSA) and issuer country. A merchant that has configured no policy accepts every card and never produces this code. The response carries a reason datum naming the axis that refused the card (FundingSource, IssuedEntity, IssuerCountry or UnknownBin) and no card data of any kind. Resolution: present a different card, or ask the merchant to widen the policy. Retrying the same card is refused again. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:CashAmountExceedsMerchantPolicy
framework |
400 | This cash sale is above the largest cash sale this merchant accepts. Take the payment by another method. No message defined. A cash sale is above the largest cash sale the merchant's cash policy allows. No transaction is created. Opt-in and per merchant: a merchant with no maximum set never produces this code, and a sale equal to the maximum is accepted. The response carries a reason datum of AmountExceedsMaximum and does not state the maximum. Resolution: take the payment by another tender, or ask the merchant to raise the maximum. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:CashRegisterRequiredByMerchantPolicy
framework |
400 | This merchant requires a register on every cash sale. Select the register the cash was taken into and submit again. No message defined. A cash sale names no till (register) and the merchant's cash policy requires one. No transaction is created. Opt-in and per merchant: a merchant that does not require till tracking never produces this code. The response carries a reason datum of RegisterRequired. Resolution: submit the sale again with a register whose id is set. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:CashSourceNotAllowedByMerchantPolicy
framework |
400 | This merchant accepts cash only at the Virtual Terminal. Record the cash sale there, or take the payment by another method. No message defined. A cash sale was submitted from somewhere other than the Virtual Terminal, and the merchant's cash policy takes cash at the Virtual Terminal only. No transaction is created. Opt-in and per merchant: a merchant that allows cash from every source (the default) never produces this code. The response carries a reason datum of SourceNotAllowed. Resolution: record the cash sale at the Virtual Terminal, or ask the merchant to allow cash from other sources. Retrying from the same source is refused again. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:CashTenderDeclarationConflictsWithPaymentData
framework |
400 | A cash transaction cannot carry a payment method. Remove CardData, CheckData, and TokenData, or remove the cash tender declaration. No message defined. Raised when a request declares tender: Cash while also carrying a payment instrument (card, check, or token). A cash transaction carries no instrument, so the two statements contradict each other and the request is refused rather than resolved in favour of either. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:CashTenderNotConfiguredForMerchant
framework |
400 | This merchant is not configured to accept cash payments. Enable a cash processor profile on the merchant account, or submit the transaction with cardData, checkData, or tokenData instead. No message defined. Raised when a request explicitly declares a cash tender for a merchant that has no active cash-capable processor profile. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:CashbackNotAllowedForTender
framework |
400 | Cashback is available on EBT Cash only. No message defined. Cashback is permitted on EBT Cash only; EBT SNAP and eWIC reject any cashback amount. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:CashbackNotAllowedOnOperation
framework |
400 | Cash back is only available on a sale. No message defined. Cash back is only permitted on a sale. A return, an authorization-only, a repeat sale, a force, or a follow-up operation cannot hand cash to the cardholder. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:CashbackRequiresCardPresent
framework |
400 | Cash back requires a card-present entry mode (swipe, chip, contactless, or fallback). No message defined. Cash back requires a card-present entry mode (swipe, chip, contactless, or fallback). A keyed or otherwise card-not-present entry has no till to hand cash from. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:CashbackRequiresPin
framework |
400 | Cash back requires a PIN debit purchase; supply the PIN block. No message defined. Cash back on a credit / debit card requires a PIN: it is a PIN debit network transaction, and a card with no PIN block authorizes on the credit rail, which has no cash-back construct. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:CertificationOverridesNotPermitted
framework |
403 | Processor certification overrides are not permitted for this merchant or processor profile. No message defined. A request supplied ProcessorCertificationOverrides but the merchant or processor profile is not authorised to accept them. Cert overrides are gated by Merchant.IsTest AND the active processor profile's AcceptCertificationOverrides flag, AND the override object's Processor field must match the active processor. Production merchants will always see this rejection: overrides are a cert-tooling-only escape hatch. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:ConvenienceFeeDisclosureEvidenceRequired
framework |
400 | A transaction that charges a convenience fee must record when and where the fee was disclosed and accepted. Send convenienceFeeDisclosureAcknowledgedAt (the UTC time the payer accepted the disclosed fee) and convenienceFeeDisclosureChannel (one of: VirtualTerminal, HostedPaymentPage, Api). No message defined. A transaction charging a non-zero convenience fee on a card tender was submitted without complete disclosure evidence: the UTC time the payer accepted the disclosed fee, and the channel the disclosure was shown on. The fee is only permitted where the payer was told about it and chose to pay it, so the acknowledgment is the compliance artifact behind every fee the platform charges; a fee nobody claims to have disclosed cannot be substantiated later. The Virtual Terminal and Hosted Payment Page produce the evidence themselves, so this code is what a caller posting straight to the transaction API sees. Also returned when the supplied evidence is present but not usable: a channel outside the recognized set, or an acknowledgment timestamp materially in the future. An ACH / e-check debit is out of scope (the card-only tender gate governs whether a fee belongs there at all), and an EBT / eWIC benefit tender is already rejected by ConvenienceFeeNotAllowedForTender. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:ConvenienceFeeNotAllowedForTender
framework |
400 | A convenience fee cannot be charged on an EBT or eWIC tender. No message defined. Convenience fee amounts are not permitted on EBT / eWIC tenders. USDA SNAP regulations prohibit both surcharges and convenience fees on benefit transactions. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:ConvenienceFeeNotEnabled
framework |
403 | Convenience fees are not currently enabled. Remove the convenience amount from the request, or ask an administrator to enable convenience fees before submitting a transaction that includes one. No message defined. A transaction carried a convenience amount greater than zero while the tenant-level convenience-fee launch feature is off. The fee is resolved by the client surfaces rather than computed by the pipeline, so a caller posting straight to the API would otherwise bypass the gated Virtual Terminal / hosted-page surfaces and charge a cardholder a fee the platform is not offering. Operations on an already-processed transaction (Void, Capture, CaptureAll, Adjustment, a linked Return) are exempt, so turning the feature off cannot strand an existing authorization that carried a fee. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:CreateIdempotencyInProgress
framework |
409 | A transaction with this idempotency key is still being processed. Retry shortly with the same key to receive the recorded outcome. No message defined. A create arrived carrying an idempotencyKey whose original create is still running. No second charge is attempted, and the request does not wait for the original to finish: the caller receives this deterministic rejection instead. Resolution: retry shortly with the same key to receive the recorded outcome, or resolve the transaction directly through the lookup-by-idempotency-key endpoint. The key itself is never echoed back. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:CreateIdempotencyStoreUnavailable
framework |
429 | The idempotency check could not be completed, so the transaction was not submitted. Retry the request with the same key. No message defined. The create-idempotency dedupe store could not be consulted or updated. The create is rejected (fail closed) rather than executed without dedupe protection, because an unprotected retry of a create is exactly the double charge the key exists to prevent. Resolution: retry the request with the same key. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:CvvAliasInvalid
framework |
409 | The CVV alias cannot be used with this card. It may have expired or belong to a different card or merchant, or the card may not belong to this merchant directly. Nothing was charged. If the alias expired, ask the cardholder to enter the CVV again and submit with the new alias. No message defined. The CVV alias could not be used with this card: it is unknown, it has expired, it was issued for a different card or merchant, or the card belongs to this merchant only through reseller token sharing. Nothing was charged. Resolution: when the alias expired, have the cardholder enter the CVV again, which returns a new alias, and submit with that; an alias cannot be used with a shared card at all. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:CvvAliasNotSupported
framework |
403 | CVV aliases are not available for this merchant. Nothing was charged. Send the request without cvvAlias. No message defined. CVV aliases are not available for this merchant: the vault proxy is not enabled for it, or not deployed in this environment. Nothing was charged. Resolution: send the request without cvvAlias, or ask for vault routes to be enabled. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:CvvAliasRequiresPublicTokenReference
framework |
400 | A CVV alias can only be used on a sale or authorization that charges a stored card by its pt_ reference. Nothing was charged. Send the pt_ reference returned with the alias as tokenData.token, or send the request without cvvAlias. No message defined. A CVV alias was sent with a token that is not the card's pt_ public reference, or on a request that does not charge a stored card by its token (a force, a repeat sale, an unlinked return). An alias is bound to that reference, so nothing else can carry one. Nothing was charged. Resolution: send the pt_ reference returned with the alias as tokenData.token, or send the request without cvvAlias. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:CvvAliasStoreUnavailable
framework |
429 | The CVV alias could not be checked right now. Nothing was charged. Retry shortly with the same alias. No message defined. The store that holds CVV aliases could not be reached, so the alias could not be checked. Nothing was charged. Resolution: retry shortly with the same alias, which stays valid until it expires. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:DatawireProfileNotConfigured
framework |
409 | This processor profile has no processor configuration, so the Datawire ID could not be saved to it. Open the profile, check its configuration, and save the merchant before registering again. No message defined. A Datawire registration reached the persistence step for a processor profile whose MerchantProcessorConfiguration is absent on the merchant aggregate. Unreachable through the normal path (the same profile was already read and validated through the merchant DTO before anything was sent to Datawire), so this guards a torn write rather than an operator mistake: it exists so the issued id is never silently dropped on the floor. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:DirectAchVaultUnavailable
framework |
429 | The bank account could not be saved for this session. Confirm the account holder details, then start the capture again. No message defined. The operator-keyed direct ACH vault (IHppDirectAchVaultSubmitter) could not bind a customer to vault the bank account against: the resolved HPP tokenization session does not request credential storage, no usable account-holder email was supplied, or the session is otherwise not in a state where a stored-credential customer can be resolved. The operator should confirm the account-holder details and restart the capture. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:DirectCaptureSessionUnavailable
framework |
429 | The card capture session is no longer available. Start the capture again. No message defined. The operator-keyed direct-capture submit (IHppDirectCaptureSubmitter) could not resolve the HPP tokenization session addressed by the supplied short token: the session is missing, expired, or otherwise not in a usable state. The operator should restart the capture so a fresh session is issued. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:EnhancedDataRequirementsNotMet
framework |
400 | This merchant requires complete enhanced data on a commercial card. Correct the values named below and submit again. No message defined. A commercial Visa or Mastercard transaction was submitted with enhanced data that is unlikely to meet the card brand requirements, for a merchant whose Processing.EnhancedDataEnforcement setting is Strict. No transaction is created. Opt-in and per merchant. The gateway accepts this data everywhere else and settles it at whatever rate it earns; a merchant chooses Strict because a commercial-card participation fee makes an unqualifiable sale worse than a refused one. A merchant left at the default never sees this code. The response carries one validation error per finding, each naming the field to correct and carrying the same plain-language message the Virtual Terminal shows. The findings are WinkPG's assessment against the published Visa CEDP and Mastercard Data Rate requirements, not an acquirer determination. Resolution: complete the named fields and re-submit, or ask the merchant to move the setting to Warn. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:FollowUpCardExpirationMismatch
framework |
400 | The card expiration does not match the original authorization. No message defined. The card expiration supplied on a Force does not match the original authorization's. Compared on the effective (year, month) resolved from whichever expiration fields each side supplied, so a request that sends month and year still matches a stored expiration date. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:FollowUpCardNumberMismatch
framework |
400 | The card number does not match the original authorization. No message defined. The card number supplied on a Force does not match the card on the original authorization. Compared on the full PAN when both are available and on the last four digits otherwise. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:FollowUpMerchantMismatch
framework |
400 | The original transaction belongs to a different merchant. No message defined. The referenced original transaction belongs to a different merchant than the follow-up request. Intentionally reported as a validation failure rather than a not-found result so the two cases stay distinguishable to the caller that legitimately owns the transaction. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:FollowUpOriginalNotAuthorization
framework |
409 | A force can only be applied to an authorization. No message defined. A Force (capture) references an original transaction that is not an Authorization. Only an Authorization holds an amount that a capture can draw against. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:FollowUpPostOperationReadFailed
framework |
429 | The operation completed, but the transaction could not be read back to build the response. Re-read the transaction rather than submitting it again. No message defined. A Force or Void submitted through the create path completed on the orchestration, but the transaction could not be re-read to build the response. The create path maps its TransactionDto from committed state rather than from the orchestrator's reply, so a failed re-read leaves nothing authoritative to return. Reported as a codified error instead of mapping the submitted model, which would present pre-operation values as the operation's outcome. The operation itself has already been applied: resolution is to re-read the transaction, not to re-submit. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:ForceRequestShapeInvalid
framework |
400 | A force needs an original transaction id, a merchant transaction id, or an auth code, and the two gateway identifiers cannot both be supplied. No message defined. A Force request does not match either supported shape. It must carry at least one of OriginalTransaction.TransactionId, MerchantTransactionId, or OriginalTransaction.AuthCode, and the two gateway identifiers are mutually exclusive because they name the same prior transaction. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:HppSessionInvalidTransactionType
framework |
400 | This transaction type cannot be submitted from a hosted payment page. No message defined. The HPP-session-bearing anonymous create request supplied a TransactionType that is not part of the allowed cardholder-submit set (Sale / Authorization). Refunds, voids, captures, force-captures and any follow-up shapes are rejected before the AuthZ bypass is committed, since they have no business arriving via the cardholder iframe and would touch downstream code paths that assume an authenticated principal. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:HppSessionLinkVerificationFailed
framework |
400 | This payment session could not be verified. Start the payment again. No message defined. The HPP-session-bearing anonymous create request (CreateFromHppSessionAsync) could not verify that the supplied session was atomically consumed by the supplied transaction id. Returned uniformly for every server-side failure shape (session not found, not in Consumed status, ConsumedByTransactionId mismatch, expired) so an attacker probing the endpoint cannot enumerate session identifiers or differentiate failure modes. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:InvalidStoredCardExpiration
framework |
400 | The stored card expiration on this contract is missing or unreadable. Update the contract's payment method. No message defined. A recurring billing run produced a transaction whose stored card expiration could not be parsed into a valid month/year. Indicates corrupt or unset contract data; the transaction is rejected before it reaches the processor so the failure surfaces as a deterministic app-layer error rather than an opaque processor decline. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:InvalidStoredCardPaymentToken
framework |
400 | The stored card payment method on this contract could not be resolved. Update the contract's payment method. No message defined. A recurring billing run references a PaymentTokenId that cannot be resolved to a valid Card payment token with a usable account number. Surfaces failures from four distinct conditions: the token does not exist, it exists but is not a Card token, ownership verification failed, or the resolved payment details do not contain a non-empty card number. Rejected before the processor call so the failure is a deterministic app-layer error: callers can triage the contract's token reference instead of chasing an opaque "Invalid CardNumber format" decline. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:InvalidStoredCheckPaymentToken
framework |
400 | The stored bank account on this contract could not be resolved. Update the contract's payment method. No message defined. A recurring billing run references a PaymentTokenId on a Check (ACH) contract that cannot be resolved to a valid Check payment token with a usable account number. Surfaces failures from the same conditions as InvalidStoredCardPaymentToken (token missing, wrong token type, ownership failure, or empty/masked account data) but for the ACH token resolver. Rejected before the processor call so the failure is a deterministic app-layer error rather than an opaque VeriCheck "Invalid Account Number" decline. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:KeyedCardEntryNotSupportedByProcessor
framework |
403 | This merchant's processor requires card data captured by a reader, so a manually keyed card cannot be charged. No message defined. A manually keyed card charge was submitted for a merchant whose every active card-capable processor profile runs on a processor that can only accept card data a physical reader captured (encrypted tracks, a device-encrypted EMV payload, or a stored reader token). A keyed PAN carries no ciphertext for such a processor to decrypt, so the charge can never be authorized as submitted; it is rejected at the boundary rather than run through the whole create / validate / enrich / screen pipeline only to fail at authorization with a message that reads as a bug ("no card is present" when the caller supplied one). Fail-open by construction: a merchant with any keyed-capable card profile, a processor that does not advertise the requirement, and a capability lookup fault all permit the charge. Reader-captured submissions, reader-token and vault-token charges, wallet charges, stored-payment snapshots, and operations on an already-processed transaction (Void, Capture, CaptureAll, Adjustment, a linked Return) are never gated. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:LinkedRefundInstrumentMismatch
framework |
400 | The payment instrument does not match the original transaction's. No message defined. A refund that names an original transaction carried a card, a stored payment token, or a bank account that is not the one the original transaction was paid with. A linked refund is paid to the original's payment instrument, so send the refund with no payment data, or with the original's. A digital wallet or card-reader token is refused here too, because the gateway cannot read the card it stands for and so cannot confirm it is the same one. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:MerchantCannotProcessCheck
framework |
403 | This merchant cannot accept eCheck (ACH) payments. No active ACH processor is configured for the merchant. No message defined. A Check (ACH / eCheck) transaction was submitted for a merchant that has no active ACH/eCheck-capable processor profile. Rejected at the transaction-create boundary (before the transaction document is persisted and before the durable orchestration starts) so the caller gets a deterministic, client-safe validation error instead of an orphaned Declined record and a late ProcessorNotConfigured decline from the Transaction Manager. The InitializeContext processor-configuration throw remains as a defense-in-depth backstop for any path that bypasses this gate. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:MerchantIdRequired
framework |
400 | A merchant is required for this request. No message defined. MerchantId is required but was not provided in the request. Applies to admin, reseller, and multi-merchant users who must specify it explicitly. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:MerchantInitiatedCustomerIdRequired
framework |
400 | A merchant-initiated charge against a stored payment method requires a customer. Re-submit with the customer that owns the stored payment method. No message defined. A merchant-initiated transaction supplied a resolvable stored payment method token but no invoiceData.customerId. The stored credential (and therefore the consent that authorizes the charge) is resolved from the token within a customer scope, so the customer binding is a required precondition. Distinct from WinkPG.StoredCredentialConsents.StoredCredentialConsentsErrorCodes.StoredCredentialConsentRequired on purpose: no consent is consulted on this branch, so the consent code would point the caller at a remediation (capture consent and re-submit) that cannot fix a missing customer id. Resolution: re-submit with invoiceData.customerId set to the customer that owns the token being charged. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:MerchantNotFoundOrAccessDenied
framework |
404 | The merchant could not be found, or you do not have access to it. No message defined. The specified merchant was not found or the caller does not have access to it. Intentionally ambiguous to prevent merchant ID enumeration. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:NoMerchantsAvailable
framework |
403 | Your account has no merchants associated with it. No message defined. The current user has no merchants associated with their account. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:OperationNotAllowed
framework |
409 | The operation '{requestedOperation}' is not allowed on a {originalTransactionType} transaction with result '{result}' and settlement state '{settlementState}'. No message defined. The requested follow-on operation is not allowed against the original transaction's type, result and settlement state. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:OriginalTransactionIdMalformed
framework |
400 | The original transaction id is not a valid identifier. No message defined. OriginalTransaction.TransactionId was supplied but is not a well-formed GUID. Distinguishes a malformed identifier from one that is well-formed but resolves to no transaction (which is reported separately as a not-found result). Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:OriginalTransactionReferenceRequired
framework |
400 | A void or return needs either the original transaction id or the merchant transaction id. No message defined. A Void or Return request carries neither OriginalTransaction.TransactionId nor MerchantTransactionId. Both operations act on a prior gateway transaction, so at least one identifier is required to resolve it. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:PartialApprovalAcknowledgmentUnavailable
framework |
409 | This decision cannot be applied yet on this gateway build. The partial approval is unchanged and still awaiting a decision; voiding it is available in the meantime. No message defined. The acknowledgment is the right operation for the transaction's state, and the gateway admits it, but the handler that applies this particular decision is not wired in this build. Surfaced verbatim from the orchestration's own verdict rather than translated into a generic failure: nothing is broken and nothing was applied, so the reduced authorization is still held and still awaiting a decision. Voiding a pending partial approval is unaffected and remains available. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:PartialApprovalDeferralNotAllowed
framework |
400 | This merchant does not accept partial approvals, so there is no partial approval to decide. Nothing was charged. Remove deferPartialApprovalAcknowledgment and submit again. No message defined. A create request asked to decide a partial approval itself (deferPartialApprovalAcknowledgment) for a merchant that does not accept partial approvals. Such a merchant never keeps one, so there would be nothing to decide. Nothing was charged. Resolution: remove deferPartialApprovalAcknowledgment, or turn partial approvals on for the merchant. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:PartialApprovalNotFound
framework |
404 | This transaction was not partially approved, so there is no decision to record. No message defined. An acknowledgment named a transaction that carries no partial approval at all. Distinct from PartialApprovalNotPending, which is a partial approval that existed and has already been decided: only the latter means somebody (or the deadline) got there first. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:PartialApprovalNotObserved
framework |
429 | The decision was submitted, but the updated transaction could not be read in time. Refresh the transaction to see the outcome; do not submit the decision again. No message defined. The acknowledgment was accepted and raised on the parked orchestration, but the transaction did not show a resolved disposition within the bounded wait, so there is no post-acknowledgment state to return. The decision is not lost. It was durably raised before this code is reported, and the orchestration applies it independently of whether anyone is still waiting. Reported rather than answering with the pre-acknowledgment transaction, which would show an operator their decision as still pending. Resolution is to re-read the transaction, never to re-submit: a second acknowledgment answers PartialApprovalNotPending. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:PartialApprovalNotPending
framework |
409 | This partial approval has already been decided. It was accepted, voided or moved to a split tender, or its acknowledgment deadline passed and the reduced authorization was voided. Refresh the transaction to see the outcome. No message defined. An acknowledgment was submitted against a partial approval that is no longer awaiting a decision. It was already accepted, voided or moved to a split tender by another caller, or its acknowledgment deadline elapsed and the gateway voided the reduced authorization. Raised both by the app service's own state gate (read from committed state before anything is sent) and by the orchestration, which is the authoritative answer when the disposition moves in the window between that read and the raise. The pre-check is advisory for exactly that reason; a late acknowledgment is refused rather than quietly applied on top of an outcome the platform already committed. Resolution: re-read the transaction and see what actually happened. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:PartialApprovalTransactionNotFound
framework |
404 | Transaction not found. No message defined. An acknowledgment named a transaction that does not exist, or that the caller cannot see. The lookup is a partition-scoped point read against the resolved merchant, so a well-formed id paired with the wrong merchant answers this rather than confirming the transaction exists under another merchant. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:PartialApprovalVoidReasonNotPermitted
framework |
400 | The void reason looks like it contains card or credential data, or a reason was supplied on a decision that does not record one. Describe why the reduced amount was rejected without it. No message defined. A void acknowledgment carried a reason that looks like it contains card or credential data, or an accept / split-tender acknowledgment carried a void reason at all. The field is operator-entered free text that lands on the transaction document and crosses the durable event boundary, so the "never put card data here" invariant is enforced rather than documented, and a reason supplied on a decision that never records one is named rather than silently dropped. The refusal never echoes the offending text. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:PartialApprovalVoidReasonTooLong
framework |
400 | The void reason is too long. Shorten it and submit the decision again. No message defined. A void acknowledgment carried a reason longer than the accepted bound. The field is a stable gateway-authored code or a short operator note; it is persisted onto the transaction document and carried over the durable event boundary, so it is bounded at the point of entry rather than trusted to be short. Rejected rather than truncated, because silently shortening the justification for releasing a live authorization damages the audit record the field exists to be. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:PaymentMethodRequiredForNonCashMerchant
framework |
400 | A payment method is required. Provide cardData, checkData, or tokenData. This merchant is not configured to accept cash payments. No message defined. An initial Sale, Authorization, or unlinked Return was submitted with no card, check, or token for a merchant that has no active cash-capable processor profile. A tender-less request is not malformed in itself: the platform reads it as a cash transaction, which is a first-class tender the Virtual Terminal offers. What it cannot do is tell "I meant cash" from "I forgot the tender", so the request is accepted only where the merchant is actually configured to take cash. Everywhere else it would previously have been persisted and then rejected late at processor-profile filtering, returning a ProcessorNotConfigured error inside a 200 that reads like a gateway fault. A merchant that is cash-capable is unaffected. Resolution: send cardData, checkData, or tokenData. Also returned for a tender-less submission on the anonymous hosted-payment-page path, which rejects unconditionally: a hosted page collects no cash tender, so a tender-less submit there is always a defect regardless of how the merchant is configured elsewhere. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:PaymentTokenNotOwnedByCustomer
framework |
403 | The requested payment token does not belong to the customer. Ownership verification failed. No message defined. The payment token being charged is bound to a different customer than the one the charge names in invoiceData.customerId. No transaction is created. A token that is bound to no customer, and a charge that names no customer, never produce this code. Resolution: name the customer the token is bound to, or omit the customer. Retrying the same pair is refused again. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:PaymentTokenNotOwnedByMerchant
framework |
403 | The requested payment token does not belong to the merchant. Ownership verification failed. No message defined. The payment token being charged belongs to a different merchant than the one the charge is for, and no token-sharing arrangement lets this merchant use it. No transaction is created. Resolution: charge a token this merchant owns. Retrying the same token is refused again. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:PayoutRequiresCheckData
framework |
400 | Payout requires CheckData (bank account routing and account number). Payout is an ACH credit operation; card payouts are not supported. No message defined. A Payout transaction was submitted without CheckData. Payout is an ACH credit operation that sends funds to the payee's bank account, so it requires bank-account routing and account details carried on CheckData. A card Payout has no processor dispatch path (TSYS falls through to Ccretail.Authorize, which charges the cardholder instead of paying out). Rejected at the boundary so the caller learns which tender to supply. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:ReceiptMerchantMismatch
framework |
404 | This receipt belongs to a different merchant. No message defined. A receipt operation resolved a transaction belonging to a different merchant than the caller's. Rejected rather than served, so a receipt cannot expose cross-merchant data. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:ReceiptNoEmailAddress
framework |
400 | No email address is available for this receipt. Supply one with the request. No message defined. Emailing a receipt was requested with no address to send it to: none was supplied on the request and the receipt snapshot carries no customer email. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:ReceiptSplitTenderSummaryNotGeneratedPerTransaction
framework |
400 | A split tender summary receipt covers every payment in the group and is generated automatically when the last payment completes. It cannot be generated for a single transaction. No message defined. A split tender summary receipt was requested through the single-transaction receipt generation path. The summary covers every tender in a group, so it cannot be built from one transaction; it is generated by the split tender completion path once the group is complete. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:RecurringBillingNoResolvablePaymentInstrument
framework |
409 | This recurring contract has no usable payment method. Add a card or bank account to the contract. No message defined. A recurring billing run produced a transaction that carries no resolvable payment instrument: no card number, no check account, and no payment token. Without this guard the transaction reaches the Transaction Manager, classifies as a Cash tender (the classifier's last-resort default), and fails with the opaque "No active processor profile configured for payment method Cash" message (or, worse, silently records a $0 cash sale if the merchant has a cash processor). Rejected before the processor call so the failure is a deterministic app-layer error: a recurring contract must always resolve to a card or check instrument. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:RefundAmountExceedsRemaining
framework |
409 | The refund amount is greater than the amount still refundable on this transaction. No message defined. The requested refund exceeds the amount still refundable on the original transaction. Follow-ups accumulate on the same transaction document, so the remaining amount accounts for every refund already applied. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:ReversalAmountExceedsRemaining
framework |
409 | The reversal amount is greater than the amount still reversible on this transaction. No message defined. The requested reversal exceeds the amount still reversible on the original transaction. The remaining amount accounts for every reversal already applied to the same transaction document. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:ReviewDispositionNotObserved
framework |
429 | The decision was submitted, but the updated transaction could not be read in time. Refresh the transaction to see the outcome; do not submit the decision again. No message defined. The disposition was accepted and raised on the parked orchestration, but the transaction did not show a resolved hold within the bounded wait, so there is no post-disposition state to return. The decision is not lost. It was durably raised before this code is reported, and the orchestration applies it independently of whether anyone is still waiting. Reported rather than answering with the pre-disposition transaction, which would show the reviewer their approval as still pending. Resolution is to re-read the transaction, never to re-submit: a second disposition on the same hold answers ReviewNotPending. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:ReviewDispositionReasonNotPermitted
framework |
400 | The review reason looks like it contains card or credential data. Describe the decision without it. No message defined. A review disposition carried a reason that looks like it contains card or credential data. The field is operator-entered free text that lands on the transaction document and crosses the durable event boundary, so the "never put card data here" invariant is enforced rather than documented. Rejected rather than redacted, for the same reason an over-long reason is rejected rather than truncated: this is an audit record, and silently rewriting what an operator typed is as damaging as silently shortening it. The refusal never echoes the offending text. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:ReviewDispositionReasonRequired
framework |
400 | A reason is required to decline a transaction held for review. No message defined. A decline was submitted with no reason. Approving a held transaction needs no justification (the payment simply proceeds as the cardholder intended), but rejecting one is an adverse decision the merchant has to be able to substantiate later, so the reason is required on that direction only. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:ReviewDispositionReasonTooLong
framework |
400 | The review reason is too long. Shorten it and submit the decision again. No message defined. A review disposition carried a reason longer than the accepted bound. The field is a stable gateway-authored code or a short operator note; it is persisted onto the transaction document and carried over the durable event boundary, so it is bounded at the point of entry rather than trusted to be short. Rejected rather than truncated, because silently shortening the justification for an adverse decision damages the audit record the field exists to be. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:ReviewHoldNotFound
framework |
404 | This transaction was never held for manual review, so there is no decision to record. No message defined. A review disposition named a transaction that carries no review hold at all: it was never parked for manual review, so there is no decision to record. Distinct from ReviewNotPending, which is a hold that existed and has already been resolved: the remedies differ, and only the latter means "somebody else got there first". Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:ReviewNotPending
framework |
409 | This transaction is not awaiting a review decision. It was already approved or declined, or its review deadline passed. Refresh the queue to see the outcome. No message defined. A review disposition was submitted against a hold that is no longer awaiting a decision. The hold was already approved or declined by another reviewer, or its deadline elapsed and the merchant's configured expiry behaviour resolved it. Raised both by the app service's own state gate (read from committed state before anything is sent) and by the orchestration seam's typed conflict, which is the authoritative answer when the hold resolves in the window between the two. The disposition seam has no late arm on purpose: a stale decision is refused rather than quietly applied on top of an outcome the platform already committed. Resolution: refresh the queue and read what actually happened. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:ReviewTransactionNotFound
framework |
404 | Transaction not found. No message defined. A review disposition named a transaction that does not exist, or that the caller cannot see. The lookup is a partition-scoped point read against the supplied merchant, so a well-formed id paired with the wrong merchant answers this rather than exposing that the transaction exists under another merchant. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SandboxAchStatusAlreadyInTargetStatus
framework |
409 | This transaction is already {status}. Advancing it again would publish nothing, because repeat deliveries of the same event are dropped. Use a new transaction to test the same step again. No message defined. The named transaction already holds the requested status. Refused rather than re-published, because the notification event ids are deterministic and a second delivery would be dropped downstream anyway: answering success would report a delivery that never happened. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SandboxAchStatusEnvironmentUnknown
framework |
403 | Advancing an ACH settlement status is for the sandbox only, and this request did not state which environment it was for. Authenticate with a test API key (sk_test_); a key issued before environments existed has to be rotated first. No message defined. An ACH status advance was requested by a caller carrying no environment stamp: a cookie session, or an API key minted before environments existed. Distinguished from SandboxAchStatusProductionRefused because the remedy is different: use a sk_test_ key, or rotate a key that predates environment stamping. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SandboxAchStatusMerchantUnknown
framework |
403 | This API key is not tied to a merchant, so there is no transaction to advance. Use a key issued for the sandbox merchant that owns the transaction. No message defined. An ACH status advance was requested by a caller whose credential names no merchant. The transaction is loaded by a partition-scoped point read against the caller's own merchant, so without the claim there is no partition to read. Raised by an admin or reseller key. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SandboxAchStatusNotAchSale
framework |
409 | This endpoint advances ACH sales. The transaction you named is a {transactionType} and carries no check data. No message defined. The named transaction is not an ACH sale. The settlement statuses this endpoint writes are the ACH lifecycle's own, and a card transaction reaches its settled state through the batch pipeline instead. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SandboxAchStatusNotApproved
framework |
409 | This ACH sale was not approved, so it has no settlement lifecycle to advance. Send a sale at an approving amount first. No message defined. The named ACH sale was not approved. A refused sale never had a settlement status written at all, and giving one a lifecycle here would let an integrator certify against a state the platform never produces. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SandboxAchStatusNotLoopbackTransaction
framework |
403 | This transaction was processed by {processor}, not by the sandbox simulator. Only a simulator transaction can have its ACH settlement status advanced by hand. No message defined. The named transaction is not owned by the loopback simulator. This endpoint fabricates a settlement outcome, so it may only ever move a transaction no real processor has an opinion about. A transaction carrying no processor key at all is refused here too. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SandboxAchStatusNotSandboxTransaction
framework |
403 | This transaction was not taken in the sandbox, so its settlement status cannot be simulated. No message defined. The named transaction carries no sandbox stamp, or is stamped for the live world. The second belt behind the environment claim: the claim states which world the caller is acting in, and this states which world the transaction was taken in. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SandboxAchStatusProductionRefused
framework |
403 | Advancing an ACH settlement status is for the sandbox only, and this request used a live API key. Real ACH status comes from the processor. Use a test key (sk_test_) against a sandbox merchant. No message defined. An ACH status advance was requested with a credential the platform stamped for the live world. The simulator drives the real lifecycle publish path, so letting a live key reach it would let an integrator fabricate settlement events for a production merchant's transactions. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SandboxAchStatusTargetStatusRequired
framework |
400 | Name the settlement status to advance to: SettlementSucceeded, SettlementRolledBack, NotEligible, SettlementFailed, Accepted, Verifying, Originated or PartiallySettled. No message defined. An ACH status advance named no target status. Refused rather than defaulted: the enum's zero member is SettlementSucceeded, so a request that forgot the field would otherwise settle the transaction and report that the caller had asked for it. The boundary validator refuses this first; the app service re-checks because an in-process caller never passes through it. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SandboxAchStatusTransactionNotFound
framework |
404 | No transaction with this id belongs to the merchant this API key was issued for. No message defined. The named transaction does not exist in the calling credential's merchant partition, or is not visible to this caller. A well-formed id belonging to another merchant answers this rather than disclosing that it exists elsewhere. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SandboxAchStatusTransitionNotAllowed
framework |
409 | An ACH transaction cannot move from {currentStatus} to {targetStatus}. The intermediate statuses only move forward (Accepted, then Verifying, then Originated, then PartiallySettled), a returned transaction is final, and from any other final status only a late return can still land. No message defined. The ACH lifecycle does not allow the requested move from the transaction's current status. The same rule the production status sync obeys: a return is terminal and is never overwritten, and from any other terminal status only a late return may still land. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SandboxCloseCohortTooLarge
framework |
409 | This merchant has {count} transactions waiting to settle, and the on-demand close handles at most {maximum} in one request. They will settle on the next scheduled close. No message defined. The merchant's outstanding cohort is larger than the on-demand close will settle in one synchronous request. The close answers only once the batch has cleared, so it is bounded rather than allowed to hold a request open for an unbounded set; the scheduled close has no such bound. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SandboxCloseEnvironmentUnknown
framework |
403 | Closing a batch on demand is for the sandbox only, and this request did not state which environment it was for. Authenticate with a test API key (sk_test_); a key issued before environments existed has to be rotated first. No message defined. An on-demand batch close was requested by a caller carrying no environment stamp: a cookie session, or an API key minted before environments existed. Distinguished from SandboxCloseProductionRefused because the remedy is different: use a sk_test_ key, or rotate a key that predates environment stamping. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SandboxCloseInProgress
framework |
409 | A batch close is already running for this merchant. It finishes in the request that started it, so wait for that response rather than retrying this one. No message defined. An on-demand batch close was requested for a merchant that already has one running. The close is read-then-settle, so two concurrent runs would load the same cohort and each settle it, producing overlapping batch rows and duplicate settled events for the same transactions. The second caller is refused rather than queued: the first is synchronous and about to answer, and by the time it does there is nothing left for the second to close. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SandboxCloseMerchantUnknown
framework |
403 | This API key is not tied to a merchant, so there is no batch to close. Use a key issued for the sandbox merchant whose batch you want to close. No message defined. An on-demand batch close was requested by a caller whose credential names no merchant. The close acts on the caller's own merchant and takes no merchant argument, so without the claim there is nothing to close. Raised by an admin or reseller key, which is not tied to a merchant. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SandboxCloseProductionRefused
framework |
403 | Closing a batch on demand is for the sandbox only. This request used a live API key, and when a production batch closes is scheduled by the platform. Use a test key (sk_test_) against a sandbox merchant. No message defined. An on-demand batch close was requested with a credential the platform stamped for the live world. When a production batch closes is a scheduling decision this platform owns; the on-demand close exists so a sandbox integrator can reach post-settlement behaviour at all. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SettlementAlreadyInProgress
framework |
403 | A settlement run is already in progress for this merchant. Wait for it to finish, then try again. No message defined. A settlement was triggered for a processor that already has a batch in progress. The batch in flight has to reach a terminal state before another can be started for the same processor. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SettlementBatchNotBlocking
framework |
409 | This settlement batch is no longer blocking a new run: it is already in {Status} status. No message defined. An override was requested against a settlement batch that is no longer Pending, so it is not blocking anything and there is nothing to override. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SettlementBatchNotFound
framework |
404 | The settlement batch could not be found for this merchant. No message defined. The requested settlement batch does not exist, or belongs to another merchant. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SettlementOverride:InvalidTarget
framework |
403 | The requested settlement status is not a valid target for an override. No message defined. The requested status is not a settlement status an override can target at all. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SettlementOverride:NoOp
framework |
403 | The transaction is already in the requested settlement status, so there is nothing to change. No message defined. The transaction already carries the requested status, so the override would change nothing. Reported rather than silently accepted so a bulk request tells the caller which of its transactions it actually moved. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SettlementOverride:NotEligible
framework |
403 | This transaction cannot have its settlement status overridden while it is in its current state. No message defined. The transaction's current state does not admit a settlement override, for example one that has not reached settlement at all. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SettlementOverride:ReasonRequired
framework |
403 | A settlement status override needs a reason. Supply one and submit the change again. No message defined. The override was submitted without the reason the audit trail records against it. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SettlementOverride:SystemOnlyTarget
framework |
403 | Only the platform can move a transaction into the requested settlement status. Choose a status an operator is allowed to set. No message defined. The requested status is one only the platform sets as a batch progresses, so an operator cannot move a transaction into it by hand. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SettlementProcessorKeyNotActive
framework |
403 | The processor '{ProcessorKey}' is not active for this merchant. No message defined. A settlement trigger selected a processor that is not active for the merchant. Caught before the run starts, because the fan-out would otherwise filter to zero groups and report success while nothing settled. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SettlementTriggerFailed
framework |
429 | The settlement run could not be started. Please try again. No message defined. Starting the settlement workflow failed. The underlying fault is logged with its exception; the caller gets a single deterministic code plus correlation ids. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SplitTenderAmountExceedsRemaining
framework |
409 | The amount is more than the split tender still has to collect. Refresh the transaction and submit no more than the remaining balance. No message defined. A continuation asked for more than the group still has to collect. The remaining balance is the order total less what the group's tenders have already collected or are collecting. Resolution: re-read the group and submit a continuation for no more than what remains. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SplitTenderContinuationAmountInvalid
framework |
400 | An additional payment on a split tender must be for more than zero. No message defined. A continuation's amount was zero or negative. A continuation exists to collect part of the remaining balance, so it must ask for a positive amount. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SplitTenderContinuationLinkedToOriginal
framework |
400 | An additional payment on a split tender is a new charge. Remove the original transaction reference and submit it again. No message defined. A continuation referenced an existing transaction as its original. A continuation is a new charge in the group, never a follow-up operation on another transaction, and it names the group's primary through the route rather than through the request. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SplitTenderContinuationNotSale
framework |
400 | An additional payment on a split tender must be a sale. No message defined. A continuation was not a Sale. Every continuation tender authorizes and captures in one step, so an authorization-only, return or follow-up shape is refused whatever the group's state. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SplitTenderGroupBusy
framework |
409 | Another payment is already being added to this split tender. Nothing was charged. Wait for it to finish, refresh the transaction, and submit again if a balance remains. No message defined. Another payment is already being added to the same split tender. Continuations on one group are taken one at a time, because each one is checked against what the group has already collected. Nothing was charged. Resolution: wait for the other payment to finish, re-read the group, and submit again if a balance remains. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SplitTenderGroupNotFound
framework |
404 | Transaction not found. No message defined. A continuation named a primary transaction that does not exist, or that the caller cannot see. The lookup is a partition-scoped point read against the continuation's own merchant, so a primary that belongs to another merchant answers this rather than confirming it exists. Also the answer when the split tender of a transaction that is not part of one is read. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SplitTenderGroupNotOpen
framework |
409 | This transaction has no split tender open for another payment. The split tender was never started, it is already complete or closed, or the transaction was voided. Refresh the transaction to see what happened. No message defined. A continuation named a primary transaction that exists but has no split-tender group open for further tenders. The group was never started, it has already been completed or closed, or the primary was voided. Resolution: re-read the primary and see what happened to the group. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SplitTenderMaxTendersReached
framework |
409 | This split tender already has the most payments the merchant allows. No message defined. The group already holds as many tenders as the merchant's split-tender maximum allows, so no further continuation can be added. A declined or voided tender does not hold a place. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SplitTenderNotEnabled
framework |
403 | Split tender is turned off for this merchant, so nothing was changed or charged. A partial approval awaiting a decision can still be accepted or voided. No message defined. A split tender was started for a merchant whose split-tender setting is turned off: either on a partial approval, or by declaring a split-tender order total on a create request. Nothing was raised or charged: a partial approval is unchanged and still awaiting a decision, so it can still be accepted or voided. The setting is read from the merchant that owns the transaction. A split tender that was already open when the setting was turned off is not affected and can still collect its remaining balance. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SplitTenderPlanMaxTendersTooLow
framework |
403 | This merchant allows only one payment per order, so a split tender cannot be planned. Nothing was charged. Submit the payment without a split tender order total. No message defined. A create request declared a split-tender order total for a merchant whose split-tender maximum is a single payment, so no second payment could ever be added. Nothing was charged. Resolution: raise the merchant's split-tender maximum to at least two, or submit the payment without a declared order total. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SplitTenderPlanNotFirstPayment
framework |
400 | Only the first payment of an order can declare a split tender order total. Nothing was charged. Remove the split tender order total and submit again. No message defined. A create request declared a split-tender order total on a payment that is itself an additional payment on a split tender, or that references another transaction. One order has one split tender, and only its first payment declares the order total. Nothing was charged. Resolution: remove the declared order total. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SplitTenderTenderNotSupported
framework |
400 | This payment method is not accepted for this split tender payment. Use a card, a bank account or cash. No message defined. A continuation used a payment method that is not accepted as a continuation tender, or a create request declared a split-tender order total on a payment that is not a card (the first payment of a planned split tender is always a card). Card, ACH (check) and cash continuations are accepted. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:StandaloneTokenCreateIdempotencyInProgress
framework |
409 | A token with this idempotency key is already being created. Retry shortly; the retry returns the original token. No message defined. A standalone token create arrived carrying an idempotencyKey whose original create is still running. No second token is minted, and the request does not wait for the original to finish: the caller receives this deterministic rejection instead. Resolution: retry shortly with the same key to receive the original token. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:StandaloneTokenCreateIdempotencyKeyReused
framework |
409 | This idempotency key was already used for a different payment method. No token was created. Use a new key, or resend the original payment details unchanged. No message defined. A standalone token create arrived carrying an idempotencyKey that an earlier create already used for a different payment method. Replaying would hand back a token for the wrong card, so the request is refused and nothing is minted. Resolution: send a fresh key for the new card, or resend the original payment details unchanged. The key itself is never echoed back. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:StandaloneTokenCreateIdempotencyStoreUnavailable
framework |
429 | The idempotency check could not be completed, so no token was created. Retry the request with the same key. No message defined. The create-idempotency dedupe store could not be consulted or updated on a standalone token create. The create is rejected (fail closed) rather than executed without dedupe protection, because an unprotected retry is exactly the duplicate vault record the key exists to prevent. Resolution: retry the request with the same key. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:StandaloneTokenCreateIdempotencyTokenGone
framework |
409 | This idempotency key can no longer be resolved to a token, so the original response cannot be returned. Use a new idempotency key to create a new token. No message defined. A standalone token create arrived carrying an idempotencyKey whose original create produced a token that no longer exists. The original response cannot be reconstructed, and minting under a key whose original cannot be accounted for would be the second vault record the key exists to prevent, so the request is refused. Resolution: use a new idempotency key. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:StoredCredentialConsentLookupUnavailable
framework |
not an HTTP status | The stored payment method's consent status could not be verified, so the automatic charge was not submitted. It will be retried on the next cycle; a failure that repeats needs investigation. No message defined. A platform-originated merchant-initiated charge (a recurring-invoice auto-charge or a payment-plan installment) could not verify the stored credential's consent status because the lineage or consent lookup faulted. Not a consent decision: nothing is known about whether the credential is consented, so the charge fails closed, but it is recorded as a retryable decline so the next sweep tries again, and logged at Error so a fault that repeats every cycle is visible to operators. Distinct from WinkPG.StoredCredentialConsents.StoredCredentialConsentsErrorCodes.StoredCredentialConsentRequired, which is the non-retryable answer when the consent state was read and does not permit the charge. Read from payments[].declineReasonCode | installments[].lastDeclineReasonCode on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SurchargeDisclosureRequired
framework |
400 | A surcharge was submitted without a disclosure acknowledgment. Confirm the surcharge was disclosed to and accepted by the cardholder (set the surcharge disclosure acknowledgment) before submitting. No message defined. An API-channel transaction carried a non-zero surcharge but no surcharge disclosure attestation. The API enforcement path fails closed: unlike the Virtual Terminal / Hosted Payment Page (whose UI captures the acknowledgment), a direct integrator must attest that it disclosed the surcharge to the cardholder, so a surcharge submitted without SurchargeDisclosureAcknowledgedAt is rejected before persist / orchestration. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SurchargeExceedsPermitted
framework |
400 | The submitted surcharge exceeds the maximum permitted for this card. Request a surcharge quote and submit the returned amount, or reduce the surcharge, before resubmitting. No message defined. An API-channel transaction carried a surcharge that exceeds the maximum the gateway's server-side re-evaluation permits for the card / transaction (the lesser of the network, state, and cost-of-acceptance caps). The over-cap surcharge is rejected rather than reduced, so the integrator corrects the value instead of unknowingly over-charging the cardholder. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SurchargeIsGatewayComputed
framework |
400 | The gateway computes the surcharge for this merchant; remove the surcharge amount from the request. No message defined. A transaction on a non-API channel carried a caller-supplied, non-zero surcharge while the surcharging feature is enabled and the merchant has an active surcharge configuration. For an actively-surcharging merchant the gateway computes the authoritative surcharge post-BIN, so a caller-supplied value is rejected (not silently overwritten) to surface the integrator's disclosure mismatch at the boundary rather than hiding it. The API channel is exempt: a direct integrator may submit an attested, server-re-validated surcharge via the eligibility quote path. Operations on an already-processed transaction (Void, Capture, CaptureAll, Adjustment, a linked Return) are exempt, so an existing authorization that carried a surcharge is never stranded. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SurchargeNotAllowedForTender
framework |
400 | A surcharge cannot be charged on an EBT or eWIC tender. No message defined. Surcharge amounts are not permitted on EBT / eWIC tenders. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SurchargeNotEligibleForTransaction
framework |
400 | The submitted surcharge cannot be applied to this card. The gateway re-evaluated eligibility and found this transaction is not surchargeable. Remove the surcharge and resubmit. No message defined. An API-channel transaction carried a non-zero surcharge, but the gateway's server-side re-evaluation found the card / transaction is not eligible to be surcharged (for example a debit or prepaid card, a non-US-issued card, or a state that prohibits surcharging). The integrator's client-computed surcharge is rejected with this distinct code rather than silently zeroed, so the mismatch surfaces at submission. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:SurchargeNotEnabled
framework |
403 | Surcharging is not enabled for this merchant. Remove the surcharge amount from the request, or enable surcharging before submitting a transaction that includes one. No message defined. A transaction-create request supplied a non-zero surcharge amount while the surcharging feature is disabled for the transaction's merchant scope. Rejected at the transaction-create boundary (before the transaction document is persisted and before the durable orchestration starts) so the integrator learns immediately that their request and the merchant's feature state disagree, rather than a disclosed fee silently flowing through to the processor. Fails closed on writes; persisted surcharge values on responses are left untouched. Linked follow-up operations that inherit an original transaction's surcharge are exempt. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:TenderNotEligibleForRecurringBilling
framework |
400 | EBT and eWIC tenders cannot be used for recurring billing. No message defined. EBT / eWIC tenders are ineligible for recurring billing contracts. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:TenderNotEligibleForStoredPayment
framework |
400 | EBT and eWIC tenders cannot be used with a stored payment method. No message defined. EBT / eWIC tenders are ineligible for stored-payment replay (token transactions). Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:TenderNotEligibleForWalletPayment
framework |
400 | EBT and eWIC tenders cannot be used with a digital wallet. No message defined. EBT / eWIC tenders are ineligible for wallet / network-token flows (Apple Pay, Google Pay, etc.). Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:TenderOperationNotAllowed
framework |
400 | This operation is not permitted for the selected tender. No message defined. The requested TransactionType is not permitted for the tender (per the allowed-operations matrix). Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:TenderRequiresCardPresent
framework |
400 | This tender requires a card-present entry mode. No message defined. EBT SNAP / EBT Cash / eWIC require a card-present entry mode (swipe / chip / contactless / fallback). Raised for manual-keyed transactions on these tenders unless the processor configuration explicitly permits manual entry. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:TenderRequiresPin
framework |
400 | This tender requires the cardholder PIN. No message defined. EBT SNAP / EBT Cash / eWIC require the cardholder PIN per program rules. Raised when the request omits PIN data (HasPin not set or false). Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:TenderRequiresValidEntryMode
framework |
400 | The entry mode could not be determined, and this tender requires a valid card-present entry mode. No message defined. The submitted entry mode could not be classified (Unknown / NotApplicable) while the tender requires a valid card-present entry mode. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:TenderTypeImmutableOnChainedTransaction
framework |
409 | The tender type cannot change on a follow-up transaction. Omit it, or send the same value as the original. No message defined. A chained transaction (Capture / Refund / Void / Reversal) supplied a CardTenderType that differs from the original transaction's tender. Tender is immutable across the chain: the child must either omit the field (defaults to inheritance) or supply the same value as the original. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:TipNotAllowedForTender
framework |
400 | A tip cannot be added to an EBT or eWIC tender. No message defined. Tip / gratuity adjustments are not permitted on EBT / eWIC tenders. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:TokenMintTenderMissing
framework |
400 | This transaction has no stored card or bank account to tokenize. Tokens can only be minted from transactions that captured a reusable card or check. No message defined. Minting a token from a transaction found no reusable stored tender on it: a wallet-only or track-only row carries no persisted account number to vault. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:TokenRedacted
framework |
409 | This payment token has been redacted. Its stored card or bank account details were permanently erased, so it cannot be reactivated, regenerated, updated or charged. No message defined. The requested operation was refused because the token has been redacted. Redaction wipes the vaulted account data and is terminal, so a redacted token can no longer be reactivated, regenerated, updated or charged. Raised by reactivate, regenerate and update; the charge path keeps its existing token-not-accessible outcome. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:TokenRegenerationFailed
framework |
429 | The payment token could not be regenerated. Please try again shortly. No message defined. Token regeneration failed for a reason that is not a business-rule violation. The underlying fault is logged; the caller gets a single deterministic code. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:TransactionManagerUnavailable
framework |
429 | Transaction Manager is temporarily unavailable. Please try again shortly. No message defined. The Transaction Manager Function App is unreachable, unhealthy, or did not respond within the configured operation timeout. Surfaces as a typed business error instead of a generic 500 so HTTP clients (and the Blazor UI) can display a meaningful message and decide whether to retry. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:UserContextUnavailable
framework |
403 | Your user context could not be determined, so the merchant could not be validated. Sign in again and retry. No message defined. Unable to determine the current user context for merchant validation. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:VoiceAuthForceCheckDataNotPermitted
framework |
403 | A voice-authorization force cannot carry check data. Voice approval codes apply to card transactions only. No message defined. A voice-authorization Force was submitted with CheckData. Verbal approval codes are a card-network construct with no ACH equivalent, so the check path is rejected explicitly at the boundary instead of failing later at the processor with a less clear error. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:VoiceAuthForceRequiresCardData
framework |
400 | A voice-authorization force needs the card data supplied with the request. No message defined. A voice-authorization Force (an AuthCode with no prior-transaction reference) was submitted without CardData. Verbal approval codes are issued against a card, so the card data must accompany the request rather than being inherited. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:VoucherClearRequiresEbtTender
framework |
400 | A voucher clear applies to EBT SNAP and eWIC tenders only. No message defined. A VoucherClear was submitted against something other than an EBT SNAP or eWIC card tender. The offline paper-voucher program exists for food stamps and eWIC only: EBT Cash has no paper voucher, and credit/debit has no benefit voucher at all. Reported separately from TenderOperationNotAllowed so the caller learns the operation needs a benefit tender, rather than reading a generic matrix rejection as though the tender they sent were unsupported outright. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:VoucherClearRequiresVoucherApprovalCode
framework |
400 | A voucher clear needs the voucher approval code obtained by phone. No message defined. A VoucherClear was submitted without ebt.voucherApprovalCode. A voucher is only clearable because an approval code was obtained by phone while the terminal was offline; that code is the authorization the clear presents in place of an online approval, and TSYS carries it as VoucherCode. A clear without it has no substantiated approval behind it, so it is rejected at the boundary rather than sent to settle. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:VoucherClearRequiresVoucherNumber
framework |
400 | A voucher clear needs the paper voucher number. No message defined. A VoucherClear was submitted without ebt.voucherNumber. The voucher number is the paper voucher's identity and is what both processors put on the wire (Fiserv EbtGrp.VoucherNum, TSYS VoucherNumber); without it there is nothing to clear, and the handlers would fall back to a placeholder that clears no real voucher. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:WalletNotEnabled
framework |
403 | This digital wallet is not currently enabled on the platform. No message defined. A charge was submitted through a digital wallet whose environment-wide feature toggle (Wallets.ApplePay / Wallets.Paze) is off. The toggle is the platform-level kill switch that sits above the per-merchant wallet binding: while it is off the wallet is withheld from every hosted payment page, so this code is what a caller posting straight to the transaction API sees. Distinct from WalletNotSupportedForCardPresentIndustry, which is a merchant-configuration rejection and not affected by the toggle. Operations on an already-processed wallet transaction (Void, Capture, CaptureAll, Adjustment, a linked Return) are exempt, so turning a toggle off cannot strand an existing authorization. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Transactions:WalletNotSupportedForCardPresentIndustry
framework |
403 | Digital wallet payments are not supported on this merchant's processor profile, which is configured for card-present processing. No message defined. A digital wallet charge (Apple Pay, Google Pay, or Paze) was submitted for a merchant whose routed processor profile carries a card-present industry (Retail, Food/Restaurant). Wallet transactions always emit card-not-present authentication fields (the wallet cryptogram travels as CAVV, alongside ECI and XID), which are supported only on the card-not-present processor component, so the charge can never be authorized as submitted. Rejected at the boundary rather than sent to the processor, where it would decline with a message that never names the industry as the cause. The capability layer already hides wallet buttons from the hosted payment pages for these merchants; this code is what a direct API caller sees. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
VOID_NOT_APPLICABLE_ZERO_DOLLAR_VERIFICATION
framework |
409 | A Void was requested against a zero-dollar verification authorization, for example a TSYS PREATH. No funds were held, so there is nothing to release. Carries the same Data context as OPERATION_NOT_ALLOWED_IN_STATE. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
initiation_type_required
framework |
400 | A Repeat request did not declare an InitiationType. Re-submit with InitiationType=CardholderInitiated when the cardholder is present, or InitiationType=MerchantInitiated together with an MITReason. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
mit_reason_required
framework |
400 | A merchant-initiated Repeat request did not carry an MITReason. Re-submit with the reason that matches the charge, for example Recurring, UnscheduledCOF, NoShow, DelayedCharge or Installment. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
original_transaction_not_resubmittable
framework |
409 | The original transaction's decline does not qualify for network resubmission. Only NSF-class declines qualify: InsufficientFunds, ActivityLimitExceeded and ExceedsApprovalAmount. Re-submit as a cardholder-initiated charge, or as a general MIT under a captured consent. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
resubmission_amount_mismatch
framework |
400 | A resubmission has to be for the same amount as the original declined charge. Re-submit at the original amount, or send the request as an ordinary cardholder-initiated or merchant-initiated charge. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
resubmission_limit_exceeded
framework |
409 | The original declined charge has already used its network resubmission allowance, for example 15 attempts within 30 days on Visa. Re-authorize with the cardholder (CIT), or under a stored credential consent (general MIT). No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Twilio
| Code | Status | Message |
|---|---|---|
Twilio:ApiKeyRequiredForWebhookRegistration
framework |
400 | Set the SendGrid API key before registering the webhook; the gateway needs it to call the SendGrid configuration API. No message defined. Auto-registration was attempted but no SendGrid API key is configured. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Twilio:SendGridApiKeyNotConfigured
framework |
403 | The message was not sent because no SendGrid API key is configured. Set the SendGrid API key, then retry. No message defined. An outbound email send was attempted with no SendGrid API key configured. Terminal: the send cannot succeed and no retry changes that. Raised rather than swallowed so a caller holding a delivery record (the notification email destination) records a failed attempt instead of a silent success for a message that was never sent. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Twilio:SendGridFromAddressMissing
framework |
403 | The message was not sent because it had no sender address and no default from-address is configured. Set a default from-address, then retry. No message defined. An outbound email send was attempted with no From address, and none could be resolved from the host's default mailing configuration either. Terminal for the same reason as SendGridApiKeyNotConfigured. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Twilio:SendGridRecipientMissing
framework |
400 | The message was not sent because it had no To address. Add at least one To recipient, then retry. No message defined. An outbound email send was attempted with no To address. CC and BCC recipients alone do not make a message sendable. Terminal for the same reason as SendGridApiKeyNotConfigured. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Twilio:SendGridReturnedEmptyPublicKey
framework |
429 | SendGrid accepted the webhook configuration but returned an empty signed-events public key. Try again, or configure signed events manually in the SendGrid dashboard. No message defined. SendGrid returned an empty public key after enabling signed events: config did not land. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Twilio:SendGridWebhookRegistrationTimedOut
framework |
429 | SendGrid did not respond within {budgetSeconds} seconds, so the webhook registration did not finish. Registration is safe to repeat; try again in a few minutes. No message defined. SendGrid did not answer the webhook registration calls within the registration budget (one SendGrid send timeout for all three calls). Every registration step is idempotent, so retrying later can succeed with no configuration change. The exception carries budgetSeconds. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Twilio:SmsComplianceScopeUnresolved
framework |
400 | The message was not sent because the merchant could not be determined, so the recipient's opt-out status could not be checked. Try again, or specify the merchant explicitly. No message defined. The merchant scope required to evaluate merchant-scoped opt-outs could not be resolved (the ambient merchant lookup threw). The send is blocked fail-closed rather than falling back to an unscoped check that could bypass a merchant opt-out. Non-interactive callers should set SmsMessageProperties.MerchantId to supply the scope explicitly. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Twilio:SmsDisallowedLinkDomain
framework |
400 | The message was not sent because its body links to a web address the messaging policy does not permit. Use a platform-branded link; public link shorteners are blocked by mobile carriers. No message defined. The message body carries a link on a host the platform link policy refuses: a public URL shortener, or (where an allowlist is configured) a host outside it. Carriers filter A2P traffic containing public shortener links, so the send is refused at authoring time rather than dropped invisibly by the carrier. The exception carries the offending host. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Twilio:SmsNotConfigured
framework |
403 | SMS sending is not configured. Configure the Twilio SMS settings (Account SID, Auth Token, and either a Messaging Service SID or a From Phone Number) in the settings panel. No message defined. Twilio SMS is not configured: the Account SID or Auth Token is missing, or neither sender (Messaging Service SID, From Phone Number) is set. Either sender satisfies the check. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Twilio:SmsQuietHoursBlocked
framework |
429 | The message was not sent because it falls outside the permitted sending window for marketing and reminder messages. Schedule it inside the window, or send it as part of a live customer interaction. No message defined. The send was refused because it fell outside the quiet-hours sending window on the recipient's clock. Applies to the recurring categories only (Marketing and Reminder); a transactional message is never blocked by this. The exception carries nextAllowedUtc when the next permitted instant is known, so a caller holding a schedule can defer instead of failing. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Twilio:SmsRecipientOptedOut
framework |
403 | This recipient has opted out of SMS messages from this merchant. The message was not sent. The recipient must opt back in before SMS can resume. No message defined. The recipient has opted out of SMS for the sending merchant. The send-time compliance gate blocks the message before any Twilio API call. Stable so callers can record a channel-level failure (e.g. suppress the SMS channel on a multi-channel notification) without failing sibling channels. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Twilio:SmsSendFailed
framework |
429 | Failed to send SMS via Twilio. Please check your Twilio configuration and try again. No message defined. Twilio API returned an error when attempting to send an SMS. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Twilio:SmsSettingsAreHostOnly
framework |
403 | Twilio SMS settings are platform-wide and can only be changed from the host context. Sign in to the host to configure them. No message defined. A Twilio SMS settings save was attempted from a tenant context. The values are host-level: the anonymous inbound webhook and Functions-host sends read them with no ambient tenant, so a tenant-scoped write would never be seen by any reader. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Twilio:WebhookBaseUrlMustBeHttps
framework |
400 | The public webhook base URL must be HTTPS. SendGrid will not accept HTTP for signed events. No message defined. Auto-registration was called with a non-HTTPS public base URL. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Twilio:WebhookRegistrationIsHostOnly
framework |
403 | Registering the SendGrid signed event webhook is a host-only operation. Sign in to the host context to configure the gateway-wide webhook key. No message defined. Webhook registration was attempted from a tenant context; it is a host-only operation. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Usage
| Code | Status | Message |
|---|---|---|
USAGE_BUDGET_EXCEEDED
framework |
429 | The caller's plan has no budget left for this operation. No message defined. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Usage:ConcurrencyConflict
framework |
409 | A concurrency conflict occurred while updating usage aggregates. Please retry. No message defined. An optimistic concurrency conflict occurred during aggregate update. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Usage:ExceedsResellerEntitlement
framework |
403 | Requested quantity ({RequestedQuantity}) exceeds the reseller's entitlement for SKU '{SkuCode}' (limit: {ResellerLimit}). No message defined. A merchant entitlement requested more quantity than the reseller above it is entitled to. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Usage:InvalidScope
framework |
400 | The supplied entitlement scope value is not valid. No message defined. The supplied EntitlementScope value is outside the defined enum range. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Usage:MerchantAndResellerIdRequired
framework |
400 | ResellerId and MerchantId are both required for the {Scope} scope. No message defined. A merchant-scoped entitlement was supplied without both the merchant and the reseller that merchant sits under. Merchant scope is nested inside reseller scope, so both are required. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Usage:PrerequisiteNotMet
framework |
409 | SKU '{SkuCode}' requires prerequisite SKU '{PrerequisiteSkuCode}', which is not entitled at the caller's scope. No message defined. The consumed SKU declares a PrerequisiteSkuCode that has not been met by the caller. Met = the prerequisite SKU has a non-disabled effective entitlement at the caller's scope. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Usage:ResellerIdRequired
framework |
400 | ResellerId is required for the {Scope} scope. No message defined. A reseller-scoped entitlement was supplied without the reseller it is scoped to. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Usage:ScopeNotPermitted
framework |
403 | The requested reseller/merchant scope is not accessible from your operating context. No message defined. The caller's operating context does not match the requested reseller/merchant scope. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Usage:SkuDisabled
framework |
403 | SKU '{SkuCode}' is disabled for this scope. No message defined. The SKU is disabled for the current entitlement scope. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Usage:SkuNotFound
framework |
404 | SKU '{SkuCode}' is not registered. No message defined. The requested SKU code is not registered in the system. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Usage:UsageLimitExceeded
framework |
403 | Usage limit exceeded for SKU '{SkuCode}'. Current: {CurrentUsage}, Limit: {Limit}. No message defined. Consumption would exceed the hard limit for this SKU. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
Vault Proxy
| Code | Status | Message |
|---|---|---|
VaultProxy:AmbiguousProperty
framework |
400 | A property in the request body appears more than once. No message defined. A property on a filter path appears twice in one object, by the same name or by names that differ only by case, so the route cannot tell which one the upstream reads. Answered 400. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
VaultProxy:BodyTooLarge
framework |
413 | The request body is larger than the vault route allows. No message defined. The body is larger than the route's cap. Answered 413 before the body is parsed. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
VaultProxy:CaptureRouteNotFound
framework |
404 | The vault route was not found. No message defined. No enabled inbound route answers to the public id, or the vault proxy feature is off for the route's tenant. One code for every case, so the answer cannot be used to tell them apart. Answered 404. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
VaultProxy:CvvAliasStoreUnavailable
framework |
503 | The card could not be captured. Try again. No message defined. The short-lived CVV alias store could not be written, so the capture was refused rather than forwarding a card without a usable CVV alias. Nothing is forwarded and no token is minted. Answered 503. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
VaultProxy:CvvWithoutCardNumber
framework |
400 | The request carries a CVV but no card number. No message defined. The body carries a CVV but no card number, so there is no card to bind the CVV alias to. Answered 400. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
VaultProxy:InvalidCardNumber
framework |
400 | The card number is not valid. No message defined. The value at the route's card number path is not a 13 to 19 digit number that passes the Luhn check. Answered 400. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
VaultProxy:InvalidCvv
framework |
400 | The CVV is not valid. No message defined. The value at the route's CVV path is not a 3 or 4 digit number. Answered 400. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
VaultProxy:InvalidUpstreamPath
framework |
400 | The request path is not valid. No message defined. The path after the route id contains a dot segment or a double-dot segment, or an encoded slash or backslash. Answered 400. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
VaultProxy:MalformedBody
framework |
400 | The request body is not valid JSON. No message defined. The body is not well-formed JSON. Answered 400. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
VaultProxy:MerchantIdIsImmutable
framework |
409 | A vault route's merchant cannot be changed. No message defined. A route's owning merchant cannot be changed after it is created. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
VaultProxy:OriginNotAllowed
framework |
403 | This origin is not allowed to post to the vault route. No message defined. The request named an Origin the route does not allow. Answered 403. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
VaultProxy:OriginRequired
framework |
403 | The request must carry an Origin header. No message defined. The request carried no Origin header and the route does not accept native clients. Answered 403. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
VaultProxy:RouteNotFound
framework |
404 | The vault route was not found. No message defined. The route was not found, is not visible to the caller, or the vault proxy feature is off for the tenant. One code for all three, so the answer cannot be used to tell them apart. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
VaultProxy:UnsupportedMediaType
framework |
415 | The vault route accepts JSON request bodies only. No message defined. The body is not JSON. Only JSON bodies are captured. Answered 415. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
VaultProxy:UnvaultedCardNumber
framework |
400 | The request body carries a card number in a field the vault route does not protect. No message defined. The body carries a card number at a path the route does not vault. Nothing is forwarded and no token is minted. Answered 400. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
VaultProxy:UpstreamTimeout
framework |
504 | The merchant's server did not answer in time. No message defined. The upstream did not answer within the route's timeout. The request was sent once and is never retried. Answered 504. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
VaultProxy:UpstreamUnavailable
framework |
502 | The merchant's server could not be reached. No message defined. The upstream could not be reached: a connection, TLS or DNS failure, or an address the proxy refuses to connect to. Answered 502. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |
VaultProxy:VaultUnavailable
framework |
503 | The card could not be captured. Try again. No message defined. The card vault could not be read or written. Nothing is forwarded. Answered 503. Read from on the transaction rather than from a response status. Deprecated: responses also carry in error.data.successorCode, which replaces this code in error.code in a later release. Match on either value. |