openapi: 3.0.3 info: title: TSYS Issuing Platform Accounts Cards 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: Cards description: Card lifecycle management paths: /accounts/{accountId}/cards: get: operationId: listAccountCards summary: List Account Cards description: List all cards associated with a cardholder account. tags: - Cards parameters: - name: accountId in: path required: true schema: type: string responses: '200': description: Cards list content: application/json: schema: $ref: '#/components/schemas/CardList' post: operationId: issueCard summary: Issue Card description: Issue a new physical or virtual card for a cardholder account. tags: - Cards parameters: - name: accountId in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CardIssuanceRequest' responses: '201': description: Card issued content: application/json: schema: $ref: '#/components/schemas/Card' /cards/{cardId}: get: operationId: getCard summary: Get Card description: Retrieve details for a specific card. tags: - Cards parameters: - name: cardId in: path required: true schema: type: string responses: '200': description: Card details content: application/json: schema: $ref: '#/components/schemas/Card' '404': $ref: '#/components/responses/NotFound' /cards/{cardId}/activate: post: operationId: activateCard summary: Activate Card description: Activate a newly issued card to allow transactions. tags: - Cards parameters: - name: cardId in: path required: true schema: type: string responses: '200': description: Card activated /cards/{cardId}/suspend: post: operationId: suspendCard summary: Suspend Card description: Temporarily suspend a card to block new transactions. tags: - Cards parameters: - name: cardId in: path required: true schema: type: string responses: '200': description: Card suspended /cards/{cardId}/transactions: get: operationId: listCardTransactions summary: List Card Transactions description: Returns transaction history for a specific card. tags: - Cards 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' /cards/{cardId}/controls: get: operationId: getCardControls summary: Get Card Controls description: Retrieve spending controls for a specific card. tags: - Cards parameters: - name: cardId in: path required: true schema: type: string responses: '200': description: Card controls content: application/json: schema: $ref: '#/components/schemas/SpendingControls' put: operationId: updateCardControls summary: Update Card Controls description: Update spending limits, category restrictions, or geographic controls. tags: - Cards parameters: - name: cardId in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SpendingControls' responses: '200': description: Controls updated content: application/json: schema: $ref: '#/components/schemas/SpendingControls' components: schemas: SpendingControls: type: object properties: dailyLimit: type: number format: float description: Maximum spend per day monthlyLimit: type: number format: float description: Maximum spend per month transactionLimit: type: number format: float description: Maximum per transaction amount allowedMerchantCategories: type: array items: type: string description: Allowed MCC codes (empty = all allowed) blockedMerchantCategories: type: array items: type: string description: Blocked MCC codes allowedCountries: type: array items: type: string description: ISO 3166-1 alpha-2 country codes internationalEnabled: type: boolean default: false onlineEnabled: type: boolean default: true atmEnabled: type: boolean default: true IssuingTransactionList: type: object properties: data: type: array items: $ref: '#/components/schemas/IssuingTransaction' total: type: integer page: type: integer limit: type: integer 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 CardList: type: object properties: data: type: array items: $ref: '#/components/schemas/Card' CardIssuanceRequest: type: object required: - type - network properties: type: type: string enum: - physical - virtual network: type: string enum: - visa - mastercard shippingAddress: type: object description: Required for physical cards properties: street: type: string city: type: string state: type: string zip: type: string Card: type: object properties: id: type: string accountId: type: string type: type: string enum: - physical - virtual status: type: string enum: - pending - active - suspended - expired - cancelled lastFour: type: string network: type: string enum: - visa - mastercard expirationDate: type: string issuedAt: type: string format: date-time activatedAt: type: string format: date-time Error: type: object properties: code: type: string message: type: string responses: NotFound: description: Resource not found content: application/json: schema: $ref: '#/components/schemas/Error' securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT