FIS Payments API
FIS provides payment processing APIs through the CodeConnect marketplace, enabling integration with card processing, ACH, wire transfers, and real-time payment networks for financial institutions and fintech developers.
FIS provides payment processing APIs through the CodeConnect marketplace, enabling integration with card processing, ACH, wire transfers, and real-time payment networks for financial institutions and fintech developers.
openapi: 3.1.0
info:
title: FIS Payments API
description: >-
FIS (Fidelity National Information Services) Payments API provides programmatic
access to payment processing capabilities including ACH transfers, wire payments,
card processing, and real-time payment networks. Available through the FIS
CodeConnect marketplace for financial institutions and fintech developers.
version: 1.0.0
contact:
name: FIS CodeConnect Support
url: https://codeconnect.fisglobal.com/
license:
name: FIS Terms of Use
url: https://www.fisglobal.com/terms-of-use
externalDocs:
description: FIS CodeConnect Developer Portal
url: https://codeconnect.fisglobal.com/
servers:
- url: https://api.fisglobal.com/v1
description: FIS Production API
- url: https://sandbox.api.fisglobal.com/v1
description: FIS Sandbox environment
security:
- OAuth2ClientCredentials: []
tags:
- name: Accounts
description: Account information and balance inquiries
- name: ACH
description: ACH (Automated Clearing House) payment operations
- name: Payments
description: Initiate and manage payment transactions
- name: Transactions
description: Transaction history and status
- name: Wire Transfers
description: Domestic and international wire transfer operations
paths:
/payments:
post:
operationId: initiatePayment
summary: Initiate a payment
description: Creates a new payment transaction. Supports ACH, wire transfer, RTP (Real-Time Payments), and FedNow payment rails based on the paymentMethod field.
tags: [Payments]
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentRequest'
responses:
'201':
description: Payment initiated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Payment'
'400':
description: Invalid request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Unauthorized
'422':
description: Unprocessable entity – business rule violation
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/payments/{paymentId}:
get:
operationId: getPayment
summary: Get payment status
description: Returns the current status and details of a specific payment transaction.
tags: [Payments]
parameters:
- name: paymentId
in: path
required: true
schema:
type: string
description: Unique payment transaction identifier
responses:
'200':
description: Payment details returned
content:
application/json:
schema:
$ref: '#/components/schemas/Payment'
'404':
description: Payment not found
/payments/{paymentId}/cancel:
post:
operationId: cancelPayment
summary: Cancel a payment
description: Cancels a pending payment that has not yet been submitted for processing. Only available for payments in PENDING or SCHEDULED status.
tags: [Payments]
parameters:
- name: paymentId
in: path
required: true
schema:
type: string
responses:
'200':
description: Payment cancelled
content:
application/json:
schema:
$ref: '#/components/schemas/Payment'
'409':
description: Payment cannot be cancelled in its current status
/ach/transfers:
post:
operationId: createAchTransfer
summary: Create ACH transfer
description: Initiates an ACH debit or credit transfer through the NACHA network. Standard ACH settles in 1-2 business days; Same-Day ACH settles same business day.
tags: [ACH]
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AchTransferRequest'
responses:
'201':
description: ACH transfer created
content:
application/json:
schema:
$ref: '#/components/schemas/AchTransfer'
'400':
description: Invalid request
/ach/batches:
post:
operationId: createAchBatch
summary: Submit ACH batch file
description: Submits a batch of ACH transactions (NACHA-formatted file or JSON batch). Used for payroll, vendor payments, and consumer debits.
tags: [ACH]
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AchBatchRequest'
responses:
'201':
description: ACH batch submitted
content:
application/json:
schema:
$ref: '#/components/schemas/AchBatch'
/wire-transfers:
post:
operationId: initiateWireTransfer
summary: Initiate wire transfer
description: Initiates a domestic Fedwire or international SWIFT wire transfer. Domestic wires settle same day; international wires may take 1-5 business days.
tags: [Wire Transfers]
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WireTransferRequest'
responses:
'201':
description: Wire transfer initiated
content:
application/json:
schema:
$ref: '#/components/schemas/WireTransfer'
'400':
description: Invalid request
/accounts/{accountId}/balance:
get:
operationId: getAccountBalance
summary: Get account balance
description: Returns current and available balance for a specified account.
tags: [Accounts]
parameters:
- name: accountId
in: path
required: true
schema:
type: string
description: Account identifier
responses:
'200':
description: Balance returned
content:
application/json:
schema:
$ref: '#/components/schemas/AccountBalance'
'404':
description: Account not found
/accounts/{accountId}/transactions:
get:
operationId: getAccountTransactions
summary: Get account transactions
description: Returns the transaction history for a specified account with optional date range filtering and pagination.
tags: [Transactions]
parameters:
- name: accountId
in: path
required: true
schema:
type: string
- name: fromDate
in: query
schema:
type: string
format: date
description: Start date for transaction history (ISO 8601)
- name: toDate
in: query
schema:
type: string
format: date
description: End date for transaction history
- name: pageSize
in: query
schema:
type: integer
default: 25
maximum: 100
- name: pageToken
in: query
schema:
type: string
description: Pagination token from previous response
responses:
'200':
description: Transaction list returned
content:
application/json:
schema:
$ref: '#/components/schemas/TransactionList'
components:
securitySchemes:
OAuth2ClientCredentials:
type: oauth2
flows:
clientCredentials:
tokenUrl: https://api.fisglobal.com/oauth/token
scopes:
payments:read: Read payment data
payments:write: Create and modify payments
accounts:read: Read account information
schemas:
PaymentRequest:
type: object
required: [amount, currency, paymentMethod, debtorAccount, creditorAccount]
properties:
amount:
type: number
format: double
minimum: 0.01
description: Payment amount
currency:
type: string
minLength: 3
maxLength: 3
description: ISO 4217 currency code (e.g., "USD")
paymentMethod:
type: string
enum: [ACH, WIRE, RTP, FEDNOW, CARD]
description: Payment rail to use
debtorAccount:
$ref: '#/components/schemas/AccountReference'
creditorAccount:
$ref: '#/components/schemas/AccountReference'
remittanceInfo:
type: string
maxLength: 140
description: Payment reference or memo
executionDate:
type: string
format: date
description: Requested execution date (defaults to next business day)
priority:
type: string
enum: [NORMAL, HIGH, SAME_DAY]
Payment:
type: object
properties:
paymentId:
type: string
description: Unique payment identifier
status:
type: string
enum: [PENDING, SCHEDULED, PROCESSING, COMPLETED, FAILED, CANCELLED, RETURNED]
amount:
type: number
format: double
currency:
type: string
paymentMethod:
type: string
debtorAccount:
$ref: '#/components/schemas/AccountReference'
creditorAccount:
$ref: '#/components/schemas/AccountReference'
remittanceInfo:
type: string
executionDate:
type: string
format: date
completedAt:
type: string
format: date-time
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
failureReason:
type: string
networkTransactionId:
type: string
description: Reference ID from the payment network (IMAD, OMAD, trace number, etc.)
AccountReference:
type: object
required: [accountNumber, routingNumber]
properties:
accountNumber:
type: string
description: Bank account number
routingNumber:
type: string
pattern: '^\d{9}$'
description: ABA routing transit number (9 digits)
accountType:
type: string
enum: [CHECKING, SAVINGS, LOAN]
accountHolderName:
type: string
bankName:
type: string
swiftCode:
type: string
description: SWIFT/BIC code for international wires
AchTransferRequest:
type: object
required: [amount, entryClassCode, transactionType, debtorAccount, creditorAccount]
properties:
amount:
type: number
format: double
minimum: 0.01
entryClassCode:
type: string
enum: [PPD, CCD, CTX, WEB, TEL, ARC, BOC, POP, RCK]
description: NACHA Standard Entry Class code
transactionType:
type: string
enum: [CREDIT, DEBIT]
debtorAccount:
$ref: '#/components/schemas/AccountReference'
creditorAccount:
$ref: '#/components/schemas/AccountReference'
description:
type: string
maxLength: 10
description: Company entry description (appears on bank statement)
effectiveDate:
type: string
format: date
sameDayAch:
type: boolean
default: false
AchTransfer:
allOf:
- $ref: '#/components/schemas/AchTransferRequest'
- type: object
properties:
transferId:
type: string
status:
type: string
enum: [CREATED, SUBMITTED, SETTLED, RETURNED, REJECTED]
traceNumber:
type: string
description: NACHA trace number
createdAt:
type: string
format: date-time
AchBatchRequest:
type: object
required: [companyName, companyId, transactions]
properties:
companyName:
type: string
maxLength: 16
companyId:
type: string
maxLength: 10
entryClassCode:
type: string
enum: [PPD, CCD, CTX, WEB, TEL]
description:
type: string
maxLength: 10
effectiveDate:
type: string
format: date
transactions:
type: array
items:
$ref: '#/components/schemas/AchTransferRequest'
maxItems: 10000
AchBatch:
type: object
properties:
batchId:
type: string
status:
type: string
enum: [RECEIVED, VALIDATED, SUBMITTED, SETTLED, REJECTED]
transactionCount:
type: integer
totalDebits:
type: number
totalCredits:
type: number
createdAt:
type: string
format: date-time
WireTransferRequest:
type: object
required: [amount, currency, debtorAccount, creditorAccount]
properties:
amount:
type: number
format: double
minimum: 0.01
currency:
type: string
minLength: 3
maxLength: 3
wireType:
type: string
enum: [DOMESTIC_FEDWIRE, INTERNATIONAL_SWIFT]
default: DOMESTIC_FEDWIRE
debtorAccount:
$ref: '#/components/schemas/AccountReference'
creditorAccount:
$ref: '#/components/schemas/AccountReference'
remittanceInfo:
type: string
maxLength: 140
instructionForCreditorAgent:
type: string
WireTransfer:
allOf:
- $ref: '#/components/schemas/WireTransferRequest'
- type: object
properties:
wireId:
type: string
status:
type: string
enum: [PENDING, SENT, CONFIRMED, RETURNED, FAILED]
imad:
type: string
description: Input Message Accountability Data (Fedwire reference)
omad:
type: string
description: Output Message Accountability Data
createdAt:
type: string
format: date-time
AccountBalance:
type: object
properties:
accountId:
type: string
availableBalance:
type: number
format: double
currentBalance:
type: number
format: double
currency:
type: string
asOf:
type: string
format: date-time
Transaction:
type: object
properties:
transactionId:
type: string
accountId:
type: string
amount:
type: number
format: double
currency:
type: string
type:
type: string
enum: [DEBIT, CREDIT]
status:
type: string
description:
type: string
postedDate:
type: string
format: date
effectiveDate:
type: string
format: date
balanceAfter:
type: number
format: double
TransactionList:
type: object
properties:
transactions:
type: array
items:
$ref: '#/components/schemas/Transaction'
nextPageToken:
type: string
totalCount:
type: integer
Error:
type: object
required: [code, message]
properties:
code:
type: string
message:
type: string
details:
type: array
items:
type: object
properties:
field:
type: string
issue:
type: string
requestId:
type: string