Total System Services Transactions API
Card transaction history
Card transaction history
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