Search and query real-time payments transactions
RTP INQUIRY ENDPOINTS
| What can you do | Endpoint |
|---|---|
| Health check | get /rtp/v1/healthCheck |
| Search real time payment transactions | post /rtp/v1/transactions/list |
| Get a real time payment transaction by its transaction ID | get /rtp/v1/transactions/detail/{transactionId} |
Key notes
Before you begin
All KeyBank APIs require certificates, user credentials, and certain permissions. Details about what is required to become an API partner with KeyBank are in the Get Started Guide to learn more.
Requirements
Before using any endpoint, make sure you understand the required parameters and conditions for a valid request.
Account number
When retrieving a list of wire transactions, you need a valid (16-character) accountNumber. This account number pulls all related transactions within the specified date range of the request.
Date range
Use the fromDate and toDate in the request to specify the date range for settled transactions for the account number provided.
The start date (fromDate) must be within 100 days of the current day. This date has to occur before the end date (toDate). The end date cannot be a future date. Date formats are in YYYY-MM-DD.
Transaction ID
If you are looking for details about a specific transaction, you must specify the transactionId in the detail request. The transactionId is the unique ID number associated with the original payment request. The maximum amount of characters for a transactionId is 100, but typically they are around 16 characters in length.
How do I get the transaction ID?
The transactionId is returned in the response for the list API. Use this ID returned in your detail request to return additional information about an RTP transaction.
Search real time payment transactions
post /rtp/v1/transactions/list
Based on search criteria provided, get a list of RTP transactions. The account number and date range are required for every request.
Request
| NAME | TYPE | DESCRIPTION |
|---|---|---|
| accountNumberrequired | string | The bank account number. This field cannot exceed 16 characters. |
| fromDaterequired | string | Start date for the date range. This date can be the current day or within 100 days prior to the current date. To search for a single date, this value will be the same as the toDate. Format: YYYY-MM-DD |
| toDaterequired | string | End date for the date range. This date must be the same or later than the start date (fromDate). To search for a single date, this value will be the same as the fromDate. To search for a range of dates, make sure the date range does not exceed 31 days. Format: YYYY-MM-DD |
| minimumAmount | string | The minimum dollar amount of the transaction. This amount must be less than or equal to the maximum amount. Leave blank or enter zero for no minimum amount. |
| maximumAmount | string | The maximum dollar amount of the transaction. This amount must be greater than or equal to the minimum amount. Leave blank to retrieve all amounts. This amount cannot exceed one billion dollars. |
| requestReference | string | A reference value for the original request that is useful for traceability and reporting. The ID cannot exceed 35 characters. |
| pageNumber | string | The number of the page being viewed. This number must be greater than or equal to 1. |
| pageSize | string | The total number of pages returned. This number must be greater than or equal to 1 and cannot exceed 1000. |
Request example
{
"accountNumber": "3123456789",
"fromDate": "2024-02-01",
"toDate": "2024-02-01",
"minimumAmount": "100.00",
"maximumAmount": "75020.5",
"requestReference": "USt41001030ii016002",
"pageNumber": "1",
"pageSize": "500"
}Responses
| NAME | TYPE | DESCRIPTION |
|---|---|---|
| transactions | array | RtpListTransaction |
| metadata | Object | Metadata |
Response example (200)
{
"transactions": [
{
"transactionId": "US99999000999999",
"transactionStatus": "COMPLETED",
"transactionDate": "2024-02-01",
"transactionAmount": 32772.63,
"requestReference": "1122334455",
"sendersReference": "US99999000999999",
"creditor": {
"name": "Global Markets LLC"
},
"creditorAccount": {
"accountNumber": "987654321"
},
"debtor": {
"name": "Paul Wilson"
},
"debtorAccount": {
"accountNumber": "123456789"
}
}
],
"metadata": {
"page": {
"pageNumber": 1,
"pageSize": 25,
"totalPages": 3,
"totalRecords": 75,
"lastPage": true
}
}
}Bad input parameter
| NAME | TYPE | DESCRIPTION |
|---|---|---|
| metadata | object | Metadata |
Response example (400)
{
"metadata": {
"messages": [
{
"code": "RTP-List-400-bad-input",
"message": "Bad input parameter"
}
]
}
}View the details of a RTP transaction by its ID
get /rtp/v1/transactions/detail/{transactionId}
Provide the transaction ID to retrieve all available fields for that single real time payment transaction.
Request
| path FIELD | TYPE | DESCRIPTION |
|---|---|---|
| transactionIdrequired | string | The unique ID number associated with the original payment request. |
Responses
A RTP transaction matches the provided transactionId
| NAME | TYPE | DESCRIPTION |
|---|---|---|
| transactionId | string | The unique ID number associated with the original payment request. |
| transactionDate | string | Date the transfer occurred. Format: YYYY-MM-DD |
| transactionAmount | number | The dollar amount of the transaction. |
| requestReference | string | A reference value for the original request that is useful for traceability and reporting. The ID cannot exceed 35 characters. |
| sendersReference | string | A reference value provided by the sender. For outbound payments, this value is the same as the transaction ID. The ID cannot exceed 35 characters. |
| creditor | Object | PartyList |
| creditorAccount | Object | AccountList |
| debtor | Object | PartyList |
| debtorAccount | Object | AccountList |
| remittanceInformation | string | Specific details associated with a transaction like an invoice number or customer details that provide a reason for the payment. |
| originator | Object | PartyList |
| originatorAccount | Object | AccountList |
| beneficiary | Object | PartyList |
| beneficiaryAccount | Object | AccountList |
| ultimateCreditor | Object | PartyList |
| ultimateCreditorAccount | Object | AccountList |
| ultimateDebtor | Object | PartyList |
| ultimateDebtorAccount | Object | AccountList |
Response example (200)
{
"transactionId": "US99999000999999",
"transactionStatus": "COMPLETED",
"transactionDate": "2024-02-01",
"transactionAmount": 32772.63,
"requestReference": "1122334455",
"sendersReference": "US99999000999999",
"creditor": {
"name": "Global Markets LLC"
},
"creditorAccount": {
"accountNumber": "987654321"
},
"debtor": {
"name": "Paul Wilson"
},
"debtorAccount": {
"accountNumber": "123456789"
},
"remittanceInformation": "Payment 02\/01\/2024_Invoice - 123456789 Cust",
"originator": {
"name": "Global Markets"
},
"originatorAccount": {
"accountNumber": 987654321,
"virtualAccountNumber": 400100225000
},
"beneficiary": {
"name": "Wilson"
},
"beneficiaryAccount": {
"accountNumber": 123456789,
"virtualAccountNumber": 400100338001
}
}Requested resource is not found
| NAME | TYPE | DESCRIPTION |
|---|---|---|
| metadata | object | Metadata |
Response example (404)
{
"metadata": {
"messages": [
{
"code": "RTP-Detail-404-no-records",
"message": "Record Not Found"
}
]
}
}Schemas
RtpDetailTransaction
| NAME | TYPE | DESCRIPTION |
|---|---|---|
| transactionId | string | The unique ID number associated with the original payment request. |
| transactionDate | string | Date the transfer occurred. Format: YYYY-MM-DD |
| transactionAmount | number | The dollar amount of the transaction. |
| requestReference | string | A reference value for the original request that is useful for traceability and reporting. The ID cannot exceed 35 characters. |
| sendersReference | string | A reference value provided by the sender. For outbound payments, this value is the same as the transaction ID. The ID cannot exceed 35 characters. |
| creditor | Object | PartyList |
| creditorAccount | Object | AccountList |
| debtor | Object | PartyList |
| debtorAccount | Object | AccountList |
| remittanceInformation | string | Specific details associated with a transaction like an invoice number or customer details that provide a reason for the payment. |
| originator | Object | PartyList |
| originatorAccount | Object | AccountList |
| beneficiary | Object | PartyList |
| beneficiaryAccount | Object | AccountList |
| ultimateCreditor | Object | PartyList |
| ultimateCreditorAccount | Object | AccountList |
| ultimateDebtor | Object | PartyList |
| ultimateDebtorAccount | Object | AccountList |
RtpListTransaction
| NAME | TYPE | DESCRIPTION |
|---|---|---|
| transactionId | string | The unique ID number associated with the original payment request |
| transactionDate | string | Date the transfer occurred. Format: YYYY-MM-DD |
| transactionAmount | number | The dollar amount of the transaction. |
| requestReference | string | A reference value for the original request that is useful for traceability and reporting. The ID cannot exceed 35 characters. |
| sendersReference | string | A reference value provided by the sender. For outbound payments, this value is the same as the transaction ID. The ID cannot exceed 35 characters. |
| creditor | Object | PartyList |
| creditorAccount | Object | AccountList |
| debtor | Object | PartyList |
| debtorAccount | Object | AccountList |
| originator | Object | PartyList |
| beneficiary | Object | PartyList |
healthResponse
| NAME | TYPE | DESCRIPTION |
|---|---|---|
| Status | string | Status of the health check response. |
| Source | string | The origin of the system response can be 'Gateway' or 'Roundtrip'. Roundtrip returns a response from the farthest system involved. |
| Timestamp | string | The date (YYYY-MM-DD) and time (HH:MM:SS) of the response from the API service. |
| ClientIp | string | The client IP address the gateway gets from the request. |
| X-Forwarded-For | string | The sequence of all the IP addresses for systems involved between the client and the gateway. |
AccountList
| NAME | TYPE | DESCRIPTION |
|---|---|---|
| accountNumber | string | Account number of the party. |
| virtualAccountNumber | string | Account number of the virtual account (VAM). |
PartyList
| NAME | TYPE | DESCRIPTION |
|---|---|---|
| name | string | Contains the customer identification number and the company name. |
Message
| NAME | TYPE | DESCRIPTION |
|---|---|---|
| code | string | Static code assigned by the network or payment system. |
| message | string | A human-readable message associated with the code. |
Page
| NAME | TYPE | DESCRIPTION |
|---|---|---|
| pageNumber | integer | The number of the page being viewed. |
| pageSize | integer | The number of records per page. |
| totalPages | integer | The total number of pages available. |
| totalRecords | integer | The total number of the transactions (records) available in the result set. |
| lastPage | boolean | Indicates the last page of the total pages. |
Errors
For more information about general errors, see Error handling.
Changelog
| Release | API version | Change description | Impact |
|---|---|---|---|
| April 2025 | 1.2.0 |
| MID |
| February 2025 | 1.1.0 |
| LOW |
| November 2024 | 1.0.0 |
|
Impact levels
- LOW: This is a minor change or enhancement that does not alter the operations of the API. Upgrading to the latest specifications is preferable but not required.
- MID: The previous API version is valid and operates, but does not contain latest enhancements. You need to update your specifications to get these enhancements.
- HIGH: The previous API version is no longer operable. You must upgrade to the latest specifications to access and use this API product.
YAML file