---
updatedAt: 2026-05-27T08:01:17.000Z
agentTools:
  siteIndex: https://developer.eagleeye.com/llms.txt
  projectIndex: https://developer.eagleeye.com/eagleeye-developer/llms.txt
---

# Release a Wallet Transaction using a Transaction Reference

This API method allows the calling application to release a transaction using a transaction reference, processing the accounts attached to the transaction and removing them from the transaction so they can be used elsewhere, while also leaving the wallet transaction active to be reused.

# OpenAPI definition

```json
{
  "x-explorer-enabled": false,
  "openapi": "3.0.3",
  "servers": [
    {
      "url": "https://wallet.uk.eagleeye.com/2.0",
      "description": "UK Production"
    }
  ],
  "info": {
    "title": "Wallet API",
    "description": "These API's are used for the interaction with the Eagle Eye AIR platform when using Wallets. A Wallet is a data container that links multiple other data objects. Wallets are typically accessed through the walletId which is obtained by calling application by looking up from an identity. Each wallet can have one or many identities.<br/><br/>For the avoidance of doubt this specification documents error codes thrown by the application it, does not cover error codes such as 429 to many requests, 503 service unavailable or 504 Gateway timeout.<br/><br/>The API supports standard Keep Alive as passed in through the Connection header (as supported by Google Cloud) and compression through the Accept-Encoding header is supported (gzip and deflate). Other standard HTTP headers maybe supported but not explicitly documented here.<br/><br/>This API is secured by Eagle Eye's standard security mechanic which is a client-id and hash where the hash is generated during the request. All API requests require the X-EES-AUTH-CLIENT-ID and X-EES-AUTH-HASH headers to be correct and valid (for more details see the authorise section) and as such are not directly specified per API definition below. <br/><br/>There are some additional headers supported by the system which are available on all API requests so documented in the table below to keep the specification cleaner<table><th width=25%>Header</th><th>Description</th></tr><tr><td>X-EES-TRANSACTION-ID</td><td>Unique Reference for the API transaction within the calling company</td></tr><tr><td>X-CUSTOM-SUBSYSTEM-ID</td><td>Optional header provided by the calling application for EES AIR to identify what was the external Subsystem that made the request, this is passed through in the atomic events and used for clients for their own purposes</td></tr><tr><td>X-CUSTOM-KEY</td><td>Optional header(s) provided by the calling application to EES AIR. Please note this header name has to follow pattern X-CUSTOM-* and is passed through to the atomic events for clients own purposes</td></tr></table>",
    "version": "2.170.0",
    "contact": {
      "name": "Eagle Eye Solutions",
      "url": "https://www.eagleeye.com/"
    }
  },
  "tags": [
    {
      "name": "Services",
      "description": "Service end points to perform business logic and can interact with multiple data objects."
    }
  ],
  "paths": {
    "/services/wallet/transaction/release": {
      "patch": {
        "summary": "Release a Wallet Transaction using a Transaction Reference",
        "deprecated": true,
        "operationId": "releaseWalletTransactionServiceByTransactionReference",
        "description": "This API method allows the calling application to release a transaction using a transaction reference, processing the accounts attached to the transaction and removing them from the transaction so they can be used elsewhere, while also leaving the wallet transaction active to be reused.",
        "parameters": [
          {
            "$ref": "#/components/parameters/eesAirWalletTransactionReference"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/walletTransactionServicesReleasePayload"
              }
            }
          },
          "description": "JSON payload"
        },
        "tags": [
          "Services"
        ],
        "responses": {
          "200": {
            "description": "Released",
            "x-eventNotifications": {
              "events": [
                {
                  "eventName": "SERVICE.WALLET.TRANSACTION.RELEASE",
                  "atomicOperations": [
                    {
                      "schema": {
                        "$ref": "#/components/schemas/walletTransactionEntity"
                      },
                      "operationType": "UPDATE"
                    },
                    {
                      "schema": {
                        "$ref": "#/components/schemas/walletAccountEntity"
                      },
                      "operationType": "UPDATE",
                      "description": "one item for each updated walletAccountEntity"
                    },
                    {
                      "schema": {
                        "$ref": "#/components/schemas/walletAccountTransactionEntity"
                      },
                      "operationType": "UPDATE",
                      "description": "one item for each updated walletAccountTransactionEntity"
                    }
                  ]
                }
              ]
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/walletTransactionEntity"
                }
              },
              "request": {
                "examples": {
                  "response": {
                    "value": {
                      "reference": "9D6183BE4E8AD946D2AD47D271F1C41A",
                      "body": {
                        "location": {
                          "storeId": "0576",
                          "storeParentId": "300"
                        }
                      }
                    }
                  }
                }
              },
              "response": {
                "examples": {
                  "response": {
                    "value": {
                      "payload": {
                        "walletTransactionId": "24932",
                        "parentWalletTransactionId": "0",
                        "walletId": "75859",
                        "reference": "9D6183BE4E8AD946D2AD47D271F1C41A",
                        "identityId": "51632",
                        "type": "SETTLE",
                        "status": "ACTIVE",
                        "meta": {
                          "key1": "Value1"
                        },
                        "state": "ACTIVE",
                        "accounts": [
                          {
                            "accountId": "16287857",
                            "accountTransactionId": "129106"
                          }
                        ],
                        "basket": {
                          "contents": [
                            {
                              "UPC": "SKU1744",
                              "calculatedPrice": 700,
                              "qualifyingPrice": 700,
                              "quantity": 1,
                              "sale": true
                            }
                          ],
                          "summary": {
                            "itemCount": 1,
                            "totalCalculatedPrice": 700,
                            "totalQualifyingPrice": 700,
                            "totalTaxAmount": 0,
                            "pointsCredited": 200,
                            "pointsRedeemed": 0,
                            "pointsRefunded": 0,
                            "basketTransactionId": "9D6183BE4E8AD946D2AD47D271F1C41A"
                          },
                          "payment": [
                            {
                              "cardNumberHash": "833D53C0D3AF911948C38F237FD6886F",
                              "PCFTender": false,
                              "type": "DEBITCARD",
                              "amount": 700
                            }
                          ]
                        },
                        "channel": "pos2",
                        "location": {
                          "storeId": "0576",
                          "storeParentId": "300"
                        },
                        "dateCreated": "2017-01-17T13:21:40+00:00",
                        "lastUpdated": "2017-01-17T13:21:40+00:00"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "404": {
            "$ref": "#/components/responses/notFound"
          },
          "409": {
            "$ref": "#/components/responses/conflict"
          },
          "415": {
            "$ref": "#/components/responses/unsupportedMediaType"
          },
          "423": {
            "$ref": "#/components/responses/locked"
          },
          "429": {
            "$ref": "#/components/responses/tooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/serverError"
          }
        }
      }
    }
  },
  "security": [
    {
      "eesAuthenticationClientId": [],
      "eesAuthenticationHash": []
    }
  ],
  "components": {
    "parameters": {
      "eesAirWalletTransactionReference": {
        "name": "reference",
        "in": "query",
        "description": "The wallet transaction reference.",
        "required": true,
        "schema": {
          "type": "string"
        }
      }
    },
    "responses": {
      "badRequest": {
        "description": "Bad Request",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/defaultErrorEntity"
            }
          }
        }
      },
      "unauthorized": {
        "description": "Unauthorized",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/defaultErrorEntity"
            },
            "example": {
              "errorCode": "AF",
              "errorMessage": "Authentication Failure, Please check if required AUTH headers are present in your Request and if AUTH Hash is calculated correctly"
            }
          }
        }
      },
      "forbidden": {
        "description": "Forbidden",
        "content": {
          "application/json": {
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/defaultErrorEntity"
                }
              ],
              "example": {
                "errorCode": "P",
                "errorMessage": "You don't have appropriate Privileges to perform this operation"
              }
            }
          }
        }
      },
      "notFound": {
        "description": "Not Found",
        "content": {
          "application/json": {
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/defaultErrorEntity"
                }
              ],
              "example": {
                "errorMessage": "Not Found",
                "errorCode": "NF"
              }
            }
          }
        }
      },
      "conflict": {
        "description": "Conflict",
        "content": {
          "application/json": {
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/defaultErrorEntity"
                }
              ],
              "example": {
                "errorMessage": "Conflict",
                "errorCode": "C"
              }
            }
          }
        }
      },
      "unsupportedMediaType": {
        "description": "Unsupported Media Type",
        "content": {
          "application/json": {
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/defaultErrorEntity"
                }
              ],
              "example": {
                "errorMessage": "Unsupported media type - Check the content type of your request",
                "errorCode": "MP"
              }
            }
          }
        }
      },
      "locked": {
        "description": "Locked",
        "content": {
          "application/json": {
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/defaultErrorEntity"
                }
              ],
              "example": {
                "errorMessage": "Transaction ID {transactionId} is not unique",
                "errorCode": "ITID"
              }
            }
          }
        }
      },
      "tooManyRequests": {
        "description": "Too Many Requests",
        "headers": {
          "Retry-after": {
            "description": "The number of seconds after which to retry the request",
            "schema": {
              "type": "integer"
            }
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "errorCode": {
                  "type": "string",
                  "description": "The error code",
                  "enum": [
                    "CE"
                  ]
                },
                "errorMessage": {
                  "type": "string",
                  "description": "The error message for this error",
                  "enum": [
                    "This request has been throttled. Please try again later."
                  ]
                }
              }
            }
          }
        }
      },
      "serverError": {
        "description": "Server Error",
        "content": {
          "application/json": {
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/defaultErrorEntity"
                }
              ],
              "example": {
                "errorMessage": "Internal Server Error"
              }
            }
          }
        }
      }
    },
    "securitySchemes": {
      "eesAuthenticationClientId": {
        "type": "apiKey",
        "in": "header",
        "description": "Client ID, This will be provided by EES and is unique to the company calling the API. Please note the authentication mechanic requires the receipt of the full payload so any headers that would chunk the request up, such as transfer-encoding chunked could potentially cause authentication failures.",
        "name": "X-EES-AUTH-CLIENT-ID"
      },
      "eesAuthenticationHash": {
        "type": "apiKey",
        "in": "header",
        "description": "Request Security Hash, calculated using SHA-256 function from concatenated full Request URI Path with Query String(s), Payload and Client Secret. Please note the authentication mechanic requires the receipt of the full payload so any headers that would chunk the request up, such as transfer-encoding chunked could potentially cause authentication failures.",
        "name": "X-EES-AUTH-HASH"
      }
    },
    "schemas": {
      "datesEntity": {
        "type": "object",
        "properties": {
          "start": {
            "type": "string",
            "pattern": "/\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\\d|3[0-1])T[0-2]\\d:[0-5]\\d:[0-5]\\d[+-][0-2]\\d:[0-5]\\d/",
            "example": "2017-01-17T13:20:48+00:00"
          },
          "end": {
            "type": "string",
            "pattern": "/\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\\d|3[0-1])T[0-2]\\d:[0-5]\\d:[0-5]\\d[+-][0-2]\\d:[0-5]\\d/",
            "example": "2017-01-17T13:20:48+00:00"
          }
        }
      },
      "walletTransactionServicesReleasePayload": {
        "type": "object",
        "properties": {
          "location": {
            "$ref": "#/components/schemas/locationEntity"
          }
        }
      },
      "walletTransactionEntity": {
        "type": "object",
        "properties": {
          "walletTransactionId": {
            "type": "string",
            "description": "Wallet Transaction ID"
          },
          "parentWalletTransactionId": {
            "type": "string",
            "description": "Parent Wallet Transaction ID"
          },
          "walletId": {
            "type": "string",
            "description": "Wallet ID"
          },
          "reference": {
            "type": "string",
            "description": "Calling party's reference to this transaction"
          },
          "transactionDateTime": {
            "type": "string",
            "pattern": "/\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\\d|3[0-1])T[0-2]\\d:[0-5]\\d:[0-5]\\d[+-][0-2]\\d:[0-5]\\d/",
            "example": "2017-01-17T13:20:48+00:00",
            "description": "Calling party's Transaction Date Time"
          },
          "identityId": {
            "type": "string",
            "description": "Wallet Identity ID used for this transaction."
          },
          "identity": {
            "type": "string",
            "description": "Wallet Identity used for this transaction."
          },
          "type": {
            "type": "string",
            "description": "Wallet Transaction Type"
          },
          "status": {
            "type": "string",
            "description": "Wallet Transaction status",
            "enum": [
              "ACTIVE",
              "SETTLED",
              "EXPIRED",
              "CANCELLED",
              "DELETED",
              "PURGED"
            ]
          },
          "meta": {
            "$ref": "#/components/schemas/metaEntity"
          },
          "state": {
            "type": "string",
            "description": "Wallet Transaction state"
          },
          "expiryDate": {
            "type": "string",
            "pattern": "/\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\\d|3[0-1])T[0-2]\\d:[0-5]\\d:[0-5]\\d[+-][0-2]\\d:[0-5]\\d/",
            "example": "2017-01-17T13:20:48+00:00",
            "description": "Wallet Transaction Expiry Timestamp (date-time), when transaction should expiry and automatically be settled."
          },
          "accounts": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "accountId": {
                  "type": "string",
                  "description": "Wallet Account ID"
                },
                "accountTransactionId": {
                  "type": "string",
                  "description": "Wallet Account Transaction ID"
                }
              }
            }
          },
          "basket": {
            "$ref": "#/components/schemas/walletTransactionBasketEntity"
          },
          "channel": {
            "type": "string",
            "description": "Channel used for Transaction creation or update"
          },
          "location": {
            "$ref": "#/components/schemas/locationEntity"
          },
          "dateCreated": {
            "description": "Date this Wallet Transaction was created",
            "type": "string",
            "pattern": "/\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\\d|3[0-1])T[0-2]\\d:[0-5]\\d:[0-5]\\d[+-][0-2]\\d:[0-5]\\d/",
            "example": "2017-01-17T13:20:48+00:00"
          },
          "lastUpdated": {
            "description": "Date this Wallet Transaction was last updated",
            "type": "string",
            "pattern": "/\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\\d|3[0-1])T[0-2]\\d:[0-5]\\d:[0-5]\\d[+-][0-2]\\d:[0-5]\\d/",
            "example": "2017-01-17T13:20:48+00:00"
          }
        }
      },
      "walletTransactionBasketEntity": {
        "type": "object",
        "description": "Details about the basket related to the wallet transaction.",
        "properties": {
          "summary": {
            "$ref": "#/components/schemas/walletTransactionBasketSummaryEntity"
          },
          "contents": {
            "$ref": "#/components/schemas/walletTransactionBaskeContentstEntity"
          },
          "payment": {
            "type": "object",
            "description": "Payment Object - TBC"
          }
        }
      },
      "walletTransactionBaskeContentstEntity": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/walletTransactionBaskeContentstItemEntity"
        }
      },
      "walletTransactionBasketSummaryEntity": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "pointsCredited": {
              "type": "integer",
              "description": "The number of points credited to the account by the transaction."
            },
            "pointsRedeemed": {
              "type": "integer",
              "description": "The number of points redeemed to the account by the transaction."
            },
            "pointsRefunded": {
              "type": "integer",
              "description": "The number of points refunded to the account by the transaction."
            }
          }
        }
      },
      "walletTransactionBaskeContentstItemEntity": {
        "type": "object",
        "properties": {
          "upc": {
            "type": "string",
            "description": "Item UPC"
          },
          "description": {
            "type": "string",
            "description": "Item Name / Description"
          },
          "quantity": {
            "type": "integer",
            "description": "Quantity"
          },
          "price": {
            "type": "number",
            "format": "double",
            "description": "Item Price"
          }
        }
      },
      "locationEntity": {
        "type": "object",
        "properties": {
          "storeId": {
            "type": "string",
            "format": "string",
            "description": "Identifier of the store where this transaction has happened (Outlet Incoming Identifier)."
          },
          "storeParentId": {
            "type": "string",
            "format": "string",
            "description": "Identifier of the parent store where this transaction has happened (Outlet Parent Incoming Identifier). This can be used when the parent of the store is a child of the caller Unit."
          }
        }
      },
      "metaEntity": {
        "type": "object",
        "properties": {
          "key1": {
            "type": "string",
            "description": "Meta 1 property, up to 255 characters; up to 255 characters for Key 1 Value"
          },
          "key2": {
            "type": "string",
            "description": "Meta 2 property, up to 255 characters; up to 255 characters for Key 2 Value"
          }
        }
      },
      "walletAccountRelationEntity": {
        "type": "array",
        "items": {
          "type": "object",
          "required": [
            "accountId",
            "dateCreated"
          ],
          "properties": {
            "accountId": {
              "type": "string",
              "format": "int64",
              "description": "Account ID"
            },
            "dateCreated": {
              "type": "string",
              "pattern": "/\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\\d|3[0-1])T[0-2]\\d:[0-5]\\d:[0-5]\\d[+-][0-2]\\d:[0-5]\\d/",
              "example": "2017-01-17T13:20:48+00:00",
              "description": "Relation creation date-time"
            }
          }
        }
      },
      "walletAccountEntity": {
        "type": "object",
        "required": [
          "accountId",
          "walletId",
          "campaignId",
          "type",
          "clientType",
          "status",
          "state",
          "dates",
          "balances",
          "dateCreated",
          "lastUpdated",
          "mobileWallet"
        ],
        "description": "The account object.",
        "properties": {
          "accountId": {
            "type": "string",
            "description": "EES AIR Wallet Account ID"
          },
          "walletId": {
            "type": "string",
            "description": "EES AIR Wallet ID"
          },
          "campaignId": {
            "type": "string",
            "description": "The Campaign ID this account belongs to."
          },
          "type": {
            "type": "string",
            "description": "EES AIR Account Type.",
            "enum": [
              "ECOUPON",
              "VOUCHER",
              "STAMP_CARD",
              "PAPER",
              "DEBIT",
              "PLASTIC",
              "POINTS",
              "CONTINUITY",
              "STANDARD_SUBSCRIPTION",
              "QUEST"
            ]
          },
          "clientType": {
            "type": "string",
            "description": "Account client type."
          },
          "status": {
            "$ref": "#/components/schemas/accountStatusEntity"
          },
          "state": {
            "type": "string",
            "description": "Account state, managed per retailer base, list of possible enum values could be set-up as part of the Onboarding process."
          },
          "dates": {
            "$ref": "#/components/schemas/datesEntity"
          },
          "meta": {
            "$ref": "#/components/schemas/metaEntity"
          },
          "balances": {
            "$ref": "#/components/schemas/accountBalancesEntity"
          },
          "relationships": {
            "type": "object",
            "description": "Wallet Accounts Relations",
            "properties": {
              "ENTITLEMENT": {
                "type": "object",
                "properties": {
                  "accountType": {
                    "$ref": "#/components/schemas/walletAccountRelationEntity"
                  }
                }
              },
              "ENTITLEMENT_OF": {
                "type": "object",
                "properties": {
                  "accountType": {
                    "$ref": "#/components/schemas/walletAccountRelationEntity"
                  }
                }
              },
              "OBJECTIVE": {
                "type": "object",
                "properties": {
                  "accountType": {
                    "$ref": "#/components/schemas/walletAccountRelationEntity"
                  }
                }
              },
              "OBJECTIVE_OF": {
                "type": "object",
                "properties": {
                  "accountType": {
                    "$ref": "#/components/schemas/walletAccountRelationEntity"
                  }
                }
              },
              "PROMOTION": {
                "type": "object",
                "properties": {
                  "accountType": {
                    "$ref": "#/components/schemas/walletAccountRelationEntity"
                  }
                }
              },
              "PROMOTION_OF": {
                "type": "object",
                "properties": {
                  "accountType": {
                    "$ref": "#/components/schemas/walletAccountRelationEntity"
                  }
                }
              },
              "BOUNCE_BACK_REWARD": {
                "type": "object",
                "properties": {
                  "accountType": {
                    "$ref": "#/components/schemas/walletAccountRelationEntity"
                  }
                }
              },
              "BOUNCE_BACK_REWARD_OF": {
                "type": "object",
                "properties": {
                  "accountType": {
                    "$ref": "#/components/schemas/walletAccountRelationEntity"
                  }
                }
              },
              "COUPON_STAMP_REWARD": {
                "type": "object",
                "properties": {
                  "accountType": {
                    "$ref": "#/components/schemas/walletAccountRelationEntity"
                  }
                }
              },
              "COUPON_STAMP_REWARD_OF": {
                "type": "object",
                "properties": {
                  "accountType": {
                    "$ref": "#/components/schemas/walletAccountRelationEntity"
                  }
                }
              },
              "LOYALTY_POINTS_REWARD_OF": {
                "type": "object",
                "properties": {
                  "accountType": {
                    "$ref": "#/components/schemas/walletAccountRelationEntity"
                  }
                }
              }
            }
          },
          "overrides": {
            "$ref": "#/components/schemas/accountOverridesEntity"
          },
          "dateCreated": {
            "description": "Date this Account was created",
            "type": "string",
            "pattern": "/\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\\d|3[0-1])T[0-2]\\d:[0-5]\\d:[0-5]\\d[+-][0-2]\\d:[0-5]\\d/",
            "example": "2017-01-17T13:20:48+00:00"
          },
          "lastUpdated": {
            "description": "Date this Account was last updated",
            "type": "string",
            "pattern": "/\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\\d|3[0-1])T[0-2]\\d:[0-5]\\d:[0-5]\\d[+-][0-2]\\d:[0-5]\\d/",
            "example": "2017-01-17T13:20:48+00:00"
          },
          "mobileWallet": {
            "type": "string",
            "description": "The URL that returns a digital platform wallet."
          }
        }
      },
      "accountOverridesEntity": {
        "type": "object",
        "description": "The object of overrides. A campaign must allow overrides.\n",
        "properties": {
          "continuity": {
            "type": "object",
            "description": "Overrides affecting the offer\n",
            "properties": {
              "qualification": {
                "type": "object",
                "description": "Continuity qualification area of the offer\n",
                "properties": {
                  "totalTransactionUnits": {
                    "type": "integer",
                    "description": "The number of units that are needed in the transaction to qualify for the reward."
                  },
                  "totalTransactionSpend": {
                    "type": "integer",
                    "description": "The transaction spend amount needed to qualify for the reward"
                  },
                  "totalTransactionCount": {
                    "type": "integer",
                    "description": "The number of transactions needed to qualify for the reward"
                  }
                }
              }
            }
          },
          "offer": {
            "type": "object",
            "description": "Overrides affecting the offer\n",
            "properties": {
              "qualification": {
                "type": "object",
                "description": "Qualification area of the offer",
                "properties": {
                  "minimumProductSpend": {
                    "nullable": true,
                    "type": "integer",
                    "description": "The minimum amount that must be spent."
                  },
                  "minimumUnits": {
                    "nullable": true,
                    "type": "integer",
                    "description": "The minimum number of units that must be in the basket to qualify."
                  },
                  "minimumBasketSpend": {
                    "nullable": true,
                    "type": "integer",
                    "description": "The minimum amount that must be spent in the basket."
                  }
                }
              },
              "reward": {
                "type": "object",
                "description": "Reward area of the offer\n",
                "properties": {
                  "creditAmount": {
                    "type": "integer",
                    "description": "The amount of points this account should earn when redeemed\n"
                  },
                  "step": {
                    "type": "integer",
                    "description": "The value of the interval when the discount amount should be stepped up."
                  },
                  "floor": {
                    "type": "integer",
                    "description": "The interval value where the credit amount should start increasing from."
                  },
                  "ceiling": {
                    "type": "integer",
                    "nullable": true,
                    "description": "The interval value where the credit amount should stop increasing."
                  },
                  "multiplierValue": {
                    "type": "integer",
                    "description": "The multiplication value to apply to the base issuance of points that would normally be awarded for the transaction."
                  }
                }
              }
            }
          },
          "campaign": {
            "type": "object",
            "description": "Overrides affecting the offer\n",
            "properties": {
              "rules": {
                "type": "object",
                "description": "The campaigns rules\n",
                "properties": {
                  "couponLimit": {
                    "type": "integer",
                    "description": "The amount of times a coupon can be redeemed, 0 is unlimited, 1 is default. If this is not set it will revert to what the campaigns couponLimit is set to\n"
                  }
                }
              }
            }
          },
          "reward": {
            "type": "object",
            "description": "Overrides affecting the reward\n",
            "properties": {
              "discountAmount": {
                "type": "integer",
                "minimum": 1,
                "description": "The discount amount to apply to the basket total.\n"
              },
              "finalAmount": {
                "type": "integer",
                "minimum": 1,
                "description": "The final amount to set the basket total to.\n"
              },
              "percentageAmount": {
                "type": "number",
                "minimum": 1,
                "description": "A percentage amount to be discounted. This must be an integer unless `allowDecimal` is enabled in the Unit.\n"
              },
              "discountValue": {
                "type": "integer",
                "minimum": 1,
                "description": "The discount value to increase with every interval.\n"
              }
            }
          }
        }
      },
      "accountBalancesEntity": {
        "type": "object",
        "description": "The object of balances. Some balances only apply to certain types of accounts. See notes below on balances.",
        "properties": {
          "available": {
            "type": "integer",
            "description": "The available balance. This is applicable for all account types, except POINTS and CONTINUITY, which uses its own balance keys. For ECOUPON account type this property will be returned and will be equal to zero."
          },
          "refundable": {
            "type": "integer",
            "description": "The refundable balance. This is applicable for all account types except POINTS and CONTINUITY, but is not used during account creation. For an Account Entity, the amount displayed here is the total refundable balance available. Please note for ECOUPON account type this property will be returned and equal to zero."
          },
          "totalSpend": {
            "type": "integer",
            "description": "The total spend balance. Applicable only to CONTINUITY type Accounts. If totalSpend is not provided on creation, this will be set to 0."
          },
          "totalUnits": {
            "type": "integer",
            "description": "The total units balance. Applicable only to CONTINUITY type Accounts. If totalUnits is not provided on creation, this will be set to 0."
          },
          "transactionCount": {
            "type": "integer",
            "description": "The transaction counter. Applicable only to CONTINUITY type Accounts. If transactionCount is not provided on creation, this will be set to 0."
          },
          "current": {
            "type": "integer",
            "description": "The current balance. Applicable only to accounts of type POINTS and STAMP. If not provided on creation, this will be set to 0."
          },
          "usable": {
            "type": "integer",
            "description": "The usable balance. Applicable only to accounts of type POINTS. If not provided on creation, this will be set to 0."
          },
          "locked": {
            "type": "integer",
            "description": "The locked balance. Applicable only to accounts of type POINTS. If not provided on creation, this will be set to 0."
          },
          "lifetime": {
            "type": "integer",
            "description": "The lifetime balance. Applicable only to accounts of type POINTS and STAMP. If not provided on creation, this will be set to 0."
          },
          "objectivesMet": {
            "type": "integer",
            "description": "The number of completed objectives. Applicable to only accounts of type QUEST."
          }
        }
      },
      "accountTransactionBalancesHistoryEntity": {
        "type": "object",
        "description": "The object of balances to show for either before or after the account transaction. Some balances only apply to certain types of accounts. See notes below on balances.",
        "properties": {
          "available": {
            "description": "The available balance. This is applicable for all account types, except STAMP, POINTS and CONTINUITY, which uses its own balance keys, and ECOUPON, which has no concept of a balance.",
            "type": "integer"
          },
          "refundable": {
            "description": "The refundable balance. This is applicable for all account types, except STAMP, ECOUPON, POINTS and CONTINUITY.",
            "type": "integer"
          },
          "current": {
            "type": "integer",
            "description": "The current balance. Applicable only to accounts of type Points and Stamp."
          },
          "lifetime": {
            "type": "integer",
            "description": "The lifetime balance. Applicable only to accounts of type Points and Stamp."
          },
          "totalSpend": {
            "type": "integer",
            "description": "The total spend balance. Applicable only to accounts of type Continuity."
          },
          "transactionCount": {
            "type": "integer",
            "description": "The transaction counter. Applicable only to accounts of type Continuity."
          }
        }
      },
      "accountStatusEntity": {
        "type": "string",
        "description": "Account Status",
        "default": "ACTIVE",
        "enum": [
          "ACTIVE",
          "BLOCKED",
          "CANCELLED",
          "DELETED",
          "EXPIRED",
          "INACTIVE",
          "INVALIDATED",
          "LOCKED",
          "STOLEN",
          "USED",
          "SUSPENDED"
        ]
      },
      "walletAccountTransactionEntity": {
        "type": "object",
        "description": "Object representing an account transaction.",
        "properties": {
          "accountTransactionId": {
            "type": "string",
            "description": "The account transaction id."
          },
          "accountId": {
            "type": "string",
            "description": "The account id related to this transaction."
          },
          "parentAccountTransactionId": {
            "type": "string",
            "description": "The parent account transaction."
          },
          "event": {
            "type": "string",
            "description": "The type of transaction.",
            "enum": [
              "CREATE",
              "REDEEM",
              "UNLOCK",
              "UNREDEEM",
              "VERIFY",
              "ACTIVATE",
              "INACTIVATE",
              "REACTIVATE",
              "LOAD",
              "CREDIT",
              "DEBIT",
              "BALANCE",
              "INVALIDATE",
              "BLOCK",
              "UNBLOCK",
              "RESEND",
              "STOLEN",
              "CANCEL",
              "VOID",
              "REISSUE",
              "REFUND",
              "TRANSFER",
              "TRANSFER_IN",
              "TOPUP",
              "AUTOTOPUP",
              "STAMP",
              "SPEND"
            ]
          },
          "value": {
            "type": "integer",
            "description": "The value related to this account transaction. Typically, if an account transaction like credit was executed with a value, then this value will be stored here. For Continuity, however, this value should always be 0, and the same for Coupon (since there is no value for a coupon)."
          },
          "source": {
            "type": "string",
            "description": "The source of this transaction e.g. from a client, or automated."
          },
          "transactionDetails": {
            "type": "object",
            "description": "An simple object of key value pairs representing the transaction details. For Points and Continuity, this can contain a JSON encoded object with the details of the amounts applied to each balance."
          },
          "balancesBefore": {
            "$ref": "#/components/schemas/accountTransactionBalancesHistoryEntity"
          },
          "balancesAfter": {
            "$ref": "#/components/schemas/accountTransactionBalancesHistoryEntity"
          },
          "properties": {
            "type": "object",
            "description": "Properties related to the account transaction."
          },
          "dateCreated": {
            "description": "Date this account transaction was created",
            "type": "string",
            "pattern": "/\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\\d|3[0-1])T[0-2]\\d:[0-5]\\d:[0-5]\\d[+-][0-2]\\d:[0-5]\\d/",
            "example": "2017-01-17T13:20:48+00:00"
          },
          "lastUpdated": {
            "description": "Date this account transaction was last updated",
            "type": "string",
            "pattern": "/\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\\d|3[0-1])T[0-2]\\d:[0-5]\\d:[0-5]\\d[+-][0-2]\\d:[0-5]\\d/",
            "example": "2017-01-17T13:20:48+00:00"
          },
          "account": {
            "$ref": "#/components/schemas/walletAccountEntity"
          },
          "children": {
            "type": "array",
            "description": "List of Child Wallet Account Transactions - for operations on multiple and linked accounts this property will be populated.",
            "items": {
              "$ref": "#/components/schemas/walletAccountTransactionChildEntity"
            }
          },
          "rewardAccounts": {
            "type": "array",
            "nullable": true,
            "description": "List of Reward Account Transactions or Accounts - for operations on multiple and linked accounts this property will be populated.",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/walletAccountEntity"
                },
                {
                  "$ref": "#/components/schemas/walletAccountTransactionChildEntity"
                }
              ]
            }
          }
        }
      },
      "walletAccountTransactionChildEntity": {
        "type": "object",
        "description": "Object representing an account transaction.",
        "properties": {
          "accountTransactionId": {
            "type": "string",
            "description": "The account transaction id."
          },
          "accountId": {
            "type": "string",
            "description": "The account id related to this transaction."
          },
          "parentAccountTransactionId": {
            "type": "string",
            "description": "The parent account transaction."
          },
          "event": {
            "type": "string",
            "description": "The type of transaction.",
            "enum": [
              "ACTIVATE",
              "AUTOTOPUP",
              "BALANCE",
              "BLOCK",
              "CANCEL",
              "CREATE",
              "CREDIT",
              "DEBIT",
              "INACTIVATE",
              "INVALIDATE",
              "LOAD",
              "REACTIVATE",
              "REDEEM",
              "REFUND",
              "REISSUE",
              "RESEND",
              "SPEND",
              "STAMP",
              "STOLEN",
              "TOPUP",
              "TRANSFER",
              "TRANSFER_IN",
              "UNBLOCK",
              "UNLOCK",
              "UNREDEEM",
              "VERIFY",
              "VOID"
            ]
          },
          "value": {
            "type": "integer",
            "description": "The value related to this account transaction. Typically, if an account transaction like credit was executed with a value, then this value will be stored here. For Continuity, however, this value should always be 0, and the same for Coupon (since there is no value for a coupon)."
          },
          "source": {
            "type": "string",
            "description": "The source of this transaction e.g. from a client, or automated."
          },
          "transactionDetails": {
            "type": "object",
            "description": "An simple object of key value pairs representing the transaction details. For Points and Continuity, this can contain a JSON encoded object with the details of the amounts applied to each balance."
          },
          "balancesBefore": {
            "$ref": "#/components/schemas/accountTransactionBalancesHistoryEntity"
          },
          "balancesAfter": {
            "$ref": "#/components/schemas/accountTransactionBalancesHistoryEntity"
          },
          "properties": {
            "type": "object",
            "description": "Properties related to the account transaction."
          },
          "dateCreated": {
            "description": "Date this account transaction was created",
            "type": "string",
            "pattern": "/\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\\d|3[0-1])T[0-2]\\d:[0-5]\\d:[0-5]\\d[+-][0-2]\\d:[0-5]\\d/",
            "example": "2017-01-17T13:20:48+00:00"
          },
          "lastUpdated": {
            "description": "Date this account transaction was last updated",
            "type": "string",
            "pattern": "/\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\\d|3[0-1])T[0-2]\\d:[0-5]\\d:[0-5]\\d[+-][0-2]\\d:[0-5]\\d/",
            "example": "2017-01-17T13:20:48+00:00"
          },
          "account": {
            "$ref": "#/components/schemas/walletAccountEntity"
          },
          "children": {
            "description": "List of Child Wallet Account Transactions - for operations on multiple and linked accounts this property will be populated.  This is a recursive array of contents with the same schema as  this object."
          },
          "rewardAccounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/walletAccountEntity"
            },
            "nullable": true,
            "description": "List of Reward Account Transactions or Accounts - for operations on multiple and linked accounts this property will be populated."
          }
        }
      },
      "defaultErrorEntity": {
        "type": "object",
        "required": [
          "errorCode",
          "errorMessage"
        ],
        "properties": {
          "errorCode": {
            "type": "string",
            "description": "Internal Error Code",
            "enum": [
              "AA",
              "AF",
              "ALR",
              "AALR",
              "AT",
              "CE",
              "CI",
              "CLPPR",
              "CILR",
              "CORQ",
              "CP",
              "CR",
              "CTNR",
              "CU",
              "CX",
              "DSN",
              "ELE",
              "FES",
              "IFU",
              "IH",
              "ILA",
              "IOC",
              "IP",
              "IPR",
              "IR",
              "ITID",
              "IW",
              "LIR",
              "LNA",
              "LPR",
              "MAC",
              "MAR",
              "MLV",
              "MNA",
              "MPA",
              "MTLE",
              "NF",
              "OC",
              "P",
              "RF",
              "RFL",
              "RW",
              "RWI",
              "TBR",
              "TBS",
              "TEXP",
              "TULR",
              "U",
              "UAS",
              "UV",
              "VA",
              "VC",
              "VI",
              "VL",
              "VNL",
              "VPUF",
              "VSM",
              "VU",
              "VUA",
              "VURC",
              "VURI",
              "VXP",
              "WLNF",
              "WTF",
              "WTNF"
            ]
          },
          "errorMessage": {
            "type": "string",
            "description": "Human Friendly Error Message"
          }
        },
        "x-enum": [
          {
            "errorCode": "AA",
            "errorMessage": "Invalid Access to API Method"
          },
          {
            "errorCode": "AF",
            "errorMessage": "Authorisation Failed"
          },
          {
            "errorCode": "ALR",
            "errorMessage": "Account Limit Reached"
          },
          {
            "errorCode": "AT",
            "errorMessage": "Account Type"
          },
          {
            "errorCode": "CE",
            "errorMessage": "Configuration Error"
          },
          {
            "errorCode": "CI",
            "errorMessage": "Campaign Inactive"
          },
          {
            "errorCode": "CILR",
            "errorMessage": "Campaign Issuance Limit Reached"
          },
          {
            "errorCode": "CLPPR",
            "errorMessage": "Campaign Limit Per Period Reached"
          },
          {
            "errorCode": "CORQ",
            "errorMessage": "Consumer Required"
          },
          {
            "errorCode": "CP",
            "errorMessage": "Campaign Pending"
          },
          {
            "errorCode": "CR",
            "errorMessage": "Campaign Removed"
          },
          {
            "errorCode": "CTNR",
            "errorMessage": "Consumer Type Not Recognized"
          },
          {
            "errorCode": "CU",
            "errorMessage": "Campaign Unknown"
          },
          {
            "errorCode": "CX",
            "errorMessage": "Campaign Expired"
          },
          {
            "errorCode": "DSN",
            "errorMessage": "Duplicated Serial Number"
          },
          {
            "errorCode": "ELE",
            "errorMessage": "Exchange Limit Exceeded"
          },
          {
            "errorCode": "FES",
            "errorMessage": "Scheduling Format Incorrect"
          },
          {
            "errorCode": "IFU",
            "errorMessage": "Insufficient Funds"
          },
          {
            "errorCode": "IH",
            "errorMessage": "Invalid Header set"
          },
          {
            "errorCode": "ILA",
            "errorMessage": "Invalid Load Amount"
          },
          {
            "errorCode": "IOC",
            "errorMessage": "Improper Offer Configuration"
          },
          {
            "errorCode": "IP",
            "errorMessage": "Invalid Parameter"
          },
          {
            "errorCode": "IPR",
            "errorMessage": "IP Address Rejected"
          },
          {
            "errorCode": "IR",
            "errorMessage": "Invalid Request"
          },
          {
            "errorCode": "ITID",
            "errorMessage": "Invalid Transaction ID"
          },
          {
            "errorCode": "IW",
            "errorMessage": "Voucher Can Not Be Created"
          },
          {
            "errorCode": "LIR",
            "errorMessage": "Outlet Identifier Required"
          },
          {
            "errorCode": "LNA",
            "errorMessage": "Outlet Not Allowed"
          },
          {
            "errorCode": "LPR",
            "errorMessage": "Outlet Prohibited by Campaign Settings"
          },
          {
            "errorCode": "MAC",
            "errorMessage": "Maximum Number of Code Variations"
          },
          {
            "errorCode": "MAR",
            "errorMessage": "Minimum Amount Required"
          },
          {
            "errorCode": "MLV",
            "errorMessage": "Maximum Voucher Value Exceeded"
          },
          {
            "errorCode": "MNA",
            "errorMessage": "Method Not Allowed"
          },
          {
            "errorCode": "MPA",
            "errorMessage": "Missing Parameter"
          },
          {
            "errorCode": "MTLE",
            "errorMessage": "Max Active Tokens Limit Exceeded"
          },
          {
            "errorCode": "NF",
            "errorMessage": "Not Found"
          },
          {
            "errorCode": "NPP",
            "errorMessage": "No Points Pending"
          },
          {
            "errorCode": "OC",
            "errorMessage": "Campaign has no Offer"
          },
          {
            "errorCode": "P",
            "errorMessage": "Privileges"
          },
          {
            "errorCode": "RF",
            "errorMessage": "Rollback Failure"
          },
          {
            "errorCode": "RFL",
            "errorMessage": "Redemption failed: Max redemption limit ... per period ... has been exceeded"
          },
          {
            "errorCode": "RW",
            "errorMessage": "Voucher Can Not Be Redeemed"
          },
          {
            "errorCode": "RWI",
            "errorMessage": "Token can not be Redeemed at this time. Blocked by redemption windows."
          },
          {
            "errorCode": "TBR",
            "errorMessage": "Minimum time since last redemption has not passed"
          },
          {
            "errorCode": "TBS",
            "errorMessage": "Minimum time since last stamp has not passed"
          },
          {
            "errorCode": "TEXP",
            "errorMessage": "Token Expired"
          },
          {
            "errorCode": "TULR",
            "errorMessage": "Token Usage Limit Reached"
          },
          {
            "errorCode": "U",
            "errorMessage": "Unknown Error"
          },
          {
            "errorCode": "UAS",
            "errorMessage": "Transaction Not Allowed by current account status"
          },
          {
            "errorCode": "UV",
            "errorMessage": "Voucher Unknown"
          },
          {
            "errorCode": "VA",
            "errorMessage": "Voucher already been sent"
          },
          {
            "errorCode": "VC",
            "errorMessage": "Voucher Cancelled"
          },
          {
            "errorCode": "VI",
            "errorMessage": "Voucher Invalid"
          },
          {
            "errorCode": "VL",
            "errorMessage": "Voucher Locked"
          },
          {
            "errorCode": "VNL",
            "errorMessage": "Voucher Not Locked"
          },
          {
            "errorCode": "VPUF",
            "errorMessage": "Voucher You don't have privileges to unlock this token"
          },
          {
            "errorCode": "VSM",
            "errorMessage": "Voucher Serial Mismatch"
          },
          {
            "errorCode": "VU",
            "errorMessage": "Voucher already redeemed"
          },
          {
            "errorCode": "VUA",
            "errorMessage": "No vouchers available for this campaign"
          },
          {
            "errorCode": "VURC",
            "errorMessage": "No Voucher Available to Redeem for Campaign"
          },
          {
            "errorCode": "VURI",
            "errorMessage": "No Voucher Available to Redeem for this Identity"
          },
          {
            "errorCode": "VXP",
            "errorMessage": "Voucher Expired"
          },
          {
            "errorCode": "WLNF",
            "errorMessage": "Wallet Link Not Found"
          },
          {
            "errorCode": "WTF",
            "errorMessage": "Wallet Transaction Failure"
          },
          {
            "errorCode": "WTNF",
            "errorMessage": "Wallet Transaction Not Found"
          }
        ]
      }
    }
  }
}
```