openapi: 3.0.3 info: title: TSYS Issuing Platform Accounts Transactions API description: TSYS Issuing Platform API for financial institutions and fintechs to manage card programs, cardholder accounts, card issuance, spending controls, and transaction history. Part of the Global Payments / TSYS API-driven payment stack. version: 1.0.0 contact: name: TSYS Developer Support url: https://www.tsys.com/platform servers: - url: https://issuing.api.tsys.com/v1 description: TSYS Issuing Platform Production API security: - bearerAuth: [] tags: - name: Transactions description: Card transaction history paths: /cards/{cardId}/transactions: get: operationId: listCardTransactions summary: List Card Transactions description: Returns transaction history for a specific card. tags: - Transactions parameters: - name: cardId in: path required: true schema: type: string - name: startDate in: query schema: type: string format: date description: Start of date range - name: endDate in: query schema: type: string format: date description: End of date range - name: page in: query schema: type: integer default: 1 - name: limit in: query schema: type: integer default: 50 responses: '200': description: Transaction list content: application/json: schema: $ref: '#/components/schemas/IssuingTransactionList' /transactions/authorize: post: operationId: authorizeTransaction summary: Authorize Transaction description: Authorize a credit, debit, or prepaid card transaction without capturing. Returns an authorization code that can be used to capture the transaction later. tags: - Transactions requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AuthorizationRequest' responses: '200': description: Authorization response content: application/json: schema: $ref: '#/components/schemas/AuthorizationResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' /transactions/sale: post: operationId: processSale summary: Process Sale description: Process a combined authorization and capture (sale) transaction. Charges the card immediately for the full transaction amount. tags: - Transactions requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SaleRequest' responses: '200': description: Sale response content: application/json: schema: $ref: '#/components/schemas/TransactionResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' /transactions/{transactionId}/capture: post: operationId: captureTransaction summary: Capture Transaction description: Capture a previously authorized transaction for settlement. tags: - Transactions parameters: - name: transactionId in: path required: true schema: type: string description: The transaction ID from the authorization response requestBody: content: application/json: schema: type: object properties: amount: type: number format: float description: Amount to capture (must not exceed authorized amount) responses: '200': description: Capture response content: application/json: schema: $ref: '#/components/schemas/TransactionResponse' '404': $ref: '#/components/responses/NotFound' /transactions/{transactionId}/void: post: operationId: voidTransaction summary: Void Transaction description: Void an authorized or captured transaction before settlement. tags: - Transactions parameters: - name: transactionId in: path required: true schema: type: string description: The transaction ID to void responses: '200': description: Void response content: application/json: schema: $ref: '#/components/schemas/TransactionResponse' '404': $ref: '#/components/responses/NotFound' /transactions/{transactionId}/refund: post: operationId: refundTransaction summary: Refund Transaction description: Process a full or partial refund for a settled transaction. tags: - Transactions parameters: - name: transactionId in: path required: true schema: type: string description: The original transaction ID to refund requestBody: content: application/json: schema: type: object properties: amount: type: number format: float description: Refund amount (partial or full) reason: type: string description: Reason for the refund responses: '200': description: Refund response content: application/json: schema: $ref: '#/components/schemas/TransactionResponse' '404': $ref: '#/components/responses/NotFound' /transactions/{transactionId}: get: operationId: getTransaction summary: Get Transaction description: Retrieve the status and details of a specific transaction. tags: - Transactions parameters: - name: transactionId in: path required: true schema: type: string description: Transaction identifier responses: '200': description: Transaction details content: application/json: schema: $ref: '#/components/schemas/Transaction' '404': $ref: '#/components/responses/NotFound' /transactions: get: operationId: listTransactions summary: List Transactions description: Returns a paginated list of transactions for the merchant. tags: - Transactions parameters: - name: startDate in: query schema: type: string format: date description: Filter transactions from this date - name: endDate in: query schema: type: string format: date description: Filter transactions through this date - name: status in: query schema: type: string enum: - authorized - captured - settled - voided - refunded - declined description: Filter by transaction status - name: cardType in: query schema: type: string enum: - visa - mastercard - amex - discover - debit description: Filter by card type - name: page in: query schema: type: integer default: 1 - name: limit in: query schema: type: integer default: 50 maximum: 500 responses: '200': description: Transaction list content: application/json: schema: $ref: '#/components/schemas/TransactionList' /batches/current: get: operationId: getCurrentBatch summary: Get Current Batch description: Returns the current open batch with pending settlement totals. tags: - Transactions responses: '200': description: Current batch details content: application/json: schema: $ref: '#/components/schemas/Batch' /batches/current/close: post: operationId: closeCurrentBatch summary: Close Current Batch description: Close the current batch and submit it for settlement. tags: - Transactions responses: '200': description: Batch closed for settlement content: application/json: schema: $ref: '#/components/schemas/Batch' components: schemas: Batch: type: object properties: id: type: string merchantId: type: string status: type: string enum: - open - closed - settled transactionCount: type: integer saleTotal: type: number format: float refundTotal: type: number format: float netTotal: type: number format: float openedAt: type: string format: date-time closedAt: type: string format: date-time IssuingTransactionList: type: object properties: data: type: array items: $ref: '#/components/schemas/IssuingTransaction' total: type: integer page: type: integer limit: type: integer CardData: type: object description: Card payment credentials properties: cardNumber: type: string description: Tokenized card number (PAN token) expirationDate: type: string description: Card expiration date (MMYY format) cvv: type: string description: Card verification value cardholderName: type: string billingAddress: type: object properties: zip: type: string street: type: string TransactionList: type: object properties: data: type: array items: $ref: '#/components/schemas/Transaction' total: type: integer page: type: integer limit: type: integer AuthorizationRequest: type: object required: - amount - currency - card - merchantId properties: merchantId: type: string description: TSYS merchant ID amount: type: number format: float description: Transaction amount currency: type: string default: USD description: ISO 4217 currency code card: $ref: '#/components/schemas/CardData' orderId: type: string description: Merchant-assigned order identifier description: type: string ipAddress: type: string description: Customer IP address for fraud detection Transaction: type: object properties: id: type: string merchantId: type: string orderId: type: string status: type: string enum: - authorized - captured - settled - voided - refunded - declined amount: type: number format: float settledAmount: type: number format: float currency: type: string cardType: type: string lastFour: type: string description: Last four digits of the card number authorizationCode: type: string batchId: type: string createdAt: type: string format: date-time settledAt: type: string format: date-time IssuingTransaction: type: object properties: id: type: string cardId: type: string type: type: string enum: - purchase - refund - cash_advance - fee status: type: string enum: - pending - posted - declined amount: type: number format: float currency: type: string merchantName: type: string merchantCategory: type: string merchantCity: type: string merchantCountry: type: string authorizedAt: type: string format: date-time postedAt: type: string format: date-time TransactionResponse: type: object properties: transactionId: type: string status: type: string responseCode: type: string responseMessage: type: string amount: type: number format: float timestamp: type: string format: date-time SaleRequest: allOf: - $ref: '#/components/schemas/AuthorizationRequest' type: object properties: captureImmediately: type: boolean default: true AuthorizationResponse: type: object properties: transactionId: type: string authorizationCode: type: string status: type: string enum: - approved - declined - partial - error responseCode: type: string responseMessage: type: string amount: type: number format: float approvedAmount: type: number format: float avsResponse: type: string description: Address verification response code cvvResponse: type: string description: CVV match response code timestamp: type: string format: date-time Error: type: object properties: code: type: string message: type: string transactionId: type: string responses: Unauthorized: description: Authentication required or invalid credentials content: application/json: schema: $ref: '#/components/schemas/Error' BadRequest: description: Invalid request parameters content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: Resource not found content: application/json: schema: $ref: '#/components/schemas/Error' securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT