Make a payment immediately and at any time
The RTP and Wire Payments API is a single product with two service capabilities: real-time payments (RTP) and wire transfers (WIRE). Specific permissions are required to access either the RTP Send Payment API or the Wires Transfer API. You can initiate a payment, check on its status, and get information about participating parties.
RTP Payments API Endpoints
What you can do | Endpoint |
---|---|
Health check | get /rtp/v1/payment/healthCheck |
Get a list of RTP participants | get /rtp/v1/payment/rtp/participant |
Get information about one RTP participant | get /rtp/v1/payment/rtp/participant/{routingNumber} |
Get the status with the transaction ID | get /rtp/v1/payment/status/transactionId/{transactionId} |
Get the status with the request reference number | get /rtp/v1/payment/status/debitAccount/{debitAccount}/reference/{reference} |
Send a real-time payment | post /rtp/v1/payment/initiate |
Perform validation checks | post /rtp/v1/payment/validate |
Before you begin
All KeyBank APIs require certificates, user credentials, and certain permissions. Check out our Getting Started Guide to learn more.
Two in one
At KeyBank, the RTP and wire payment APIs are a single API product with two service capabilities. You need specific permissions to access either the RTP Send Payment API or the Wire Transfer API.
Overview
You can initiate a real-time payment, check on its status, and get information about participating parties.
RTP stands for Real-Time Payment. It is a modern payment system that enables immediate and real-time fund transfers between financial institution or individuals. RTP transactions use the clearing house’s RTP network, which operates 24/7, allowing for instant payment settlement. RTP payments are often used for person-to person transfers, bill payments, and business-to-business transactions.
The main difference between RTP payments and wire transfers is in their speed and settlement process. RTP payments are designed for real-time transfers, providing immediate availability of funds, while wire transfers may take longer to process and settle.
Payment chain parties
The two calls - initiate a payment and validate a payment - have the party object. This is a reusable object that has details about the person or entity sending a payment and the one receiving the payment. The party object reflects the payment chain of events. Use the request fields to direct the payment transaction from one account to another.
ORDER | PAYMENT CHAIN | REQUEST FIELDS TO USE |
---|---|---|
1 | The individual or organization sends the payment. | Enter the debit account number of the individual or organization in debitParty. |
2 | The financial institution of the debit account holder transfers the funds. | We assume this is KeyBank. Enter the ABA or routing number for the financial institution in debitPartyBank. |
3 | The financial institution that services the recipient’s account receives the funds. | Enter the US ABA number for the financial institution in creditPartyBank. |
4 | The beneficiary party receives the funds. | Enter the account number of the beneficiary in creditParty. |
API requirements
KeyClientId: When you initiate or validate a payment, you are required to provide the KeyClientId
in the request header. The KeyClientId
is a 32-character string provided by KeyBank during the onboarding process. This field is not the same as your client credentials (part of your API keys needed to obtain an access token).
Health check
get /rtp/v1/payment/healthCheck
Verify you can connect to the API service. A bearer token is required.
Responses
Successful response
NAME | TYPE | DESCRIPTION |
---|---|---|
Statusoptional | string | The status of the health check response. |
Sourceoptional | string | The system that produces the health response. The origin of the response can be 'Gateway' or 'Roundtrip.' Roundtrip returns a response from the farthest system involved. |
Timestampoptional | string | The date (YYYY-MM-DD) and time (HH:MM:SS) of response from the API service. |
ClientIpoptional | string | The client IP address the gateway receives from the request. |
X-Forwarded-Foroptional | string | The sequence of the IP addresses for systems between the client and the gateway. Addresses are separated by a comma. |
Response example (200)
{ "Status": "Ok", "Source": "Roundtrip", "Timestamp": "2022-09-16T02:36:20", "ClientIp": "156.77.111.28", "X-Forwarded-For": "[156.77.111.28]" }
Get a list of RTP participants
get /rtp/v1/payment/rtp/participant
Retrieve a list of active, online RTP banks. Use the limit and offset fields to control how many records to return and what records to skip.
Request
query FIELD | TYPE | DESCRIPTION |
---|---|---|
limitrequired | integer | Pagination parameter that indicates the maximum number of records to return in the response. |
offsetrequired | integer | Pagination parameter that indicates the number of records skipped before generating the output. |
header FIELD | TYPE | DESCRIPTION |
---|---|---|
KeyClientIdrequired | string | This value is provided by KeyBank during onboarding and is different from your client credentials. This is required for each call for RTP or Wire transactions. |
Request example
curl --location: 'https://partner-api-qv.keybank.com/rtp/v1/payment/rtp/participant?limit=15&offset=0' --header 'KeyClientId: testwUhSQADUD4DwYyZz2hZkwLqsoFGK' --header 'Accept: application/json' --header 'Bearer testZcKJDWnwDWmmf9qah6PJvPy8'
Responses
Successful response
NAME | TYPE | DESCRIPTION |
---|---|---|
countrequired | string | The count of records that match the initial query. |
limitrequired | integer | The maximum number of records returned in the response. |
offsetrequired | integer | The number of records skipped before the response is returned. |
partiesoptional | Object | party |
Response example (200)
{ "count": "65", "limit": 10, "offset": 0, "parties": { "name": "CITIZENS BANK, NA", "accountNumber": "102258001", "aba": "100001995", "bic": "CITZUSL2XXX", "txid": "fa1354bkg3153kj13b4h34", "foreignBankSystemId": { "type": "USABA" }, "postalAddress": { "adrLine": [ "BENEFICIARY ADDRESS LINE 1", "BENEFICIARY ADDRESS LINE 2" ] } } }
Missing data in the request
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (400)
{ "ErrorMessage": "Error received from backend service.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "US21052400000000", "TransactionTime": "2021-06-11T16:31:34.041Z", "ServiceError": { "status": "FAILED", "transactionId": "rrt-770941720727587-2383364-1", "requestReference": "RR-220818-01", "sendersReference": "SR-220818-01", "valueDate": 1683676800, "error": { "code": "KEY-1006", "title": "Required field missing", "description": "The object creditPartyBank is required in the request." } } }
Received request is unauthorized
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (401)
{ "ErrorMessage": "Error received from backend service.", "TransactionId": "rrt-621075741872460927-c-gce-9129-15867185-4", "X-CorrelationId": "80457bcb-2c3b-8c55-8cd6-3520c3157e8f", "TransactionTime": "2022-04-04T11:41:13.754Z", "ServiceError": { "status": "ERROR", "transactionId": "rrt-621075741872460927", "requestReference": "REQUEST-REF-220314.1", "sendersReference": "SENDER-REF-220314.1", "valueDate": "06-10-2023", "error": { "code": "KEY-0006", "title": "Not authorized for requested service", "description": "Check your credentials." }, "doddFrank": "NO" } }
Request is forbidden to access the resource
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (403)
{ "ErrorMessage": "Access to requested resource is forbidden.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Resource not found
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (404)
{ "ErrorMessage": "Requested resource is not found, please verify the resource and resubmit the request.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Requested method is not allowed.
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (405)
{ "ErrorMessage": "Requested method is not allowed, please verify the method and resubmit the request.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Requested unsupported media type
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (415)
{ "ErrorMessage": "Requested media type is not allowed, please verify the media type and resubmit the request.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Too many requests received
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (429)
{ "ErrorMessage": "Number requests threshold reached, please resubmit the request after sometime.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Internal server error
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (500)
{ "ErrorMessage": "Error received from backend service.", "TransactionId": "359681587523_SR-RMC-210729-11081", "X-CorrelationId": "7ad7fdfb-2ade-a3ab-b97c-523dc5312688", "TransactionTime": "2022-04-05T07:59:15.422Z", "ServiceError": { "status": "ERROR", "transactionId": "rrt-621075741872460927", "requestReference": "RR-RMC-210720-0123458981", "sendersReference": "SR-RMC-210729-11081", "valueDate": "06-10-2023", "error": { "code": "KEY-9999", "title": "Unknown error", "description": "Payment Initiation ServiceException: AUTHENTICATION_FAILURE Unable to logon with the supplied credentials.", "detail": { "code": "KEY-9999", "title": "Unknown error", "description": "Additional information about error code." } }, "doddFrank": "NO" } }
Bad Gateway
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (502)
{ "ErrorMessage": "Error received from backend service.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z", "ServiceError": { "ConnectError": "Connectivity error occurred with the downstream service (unexpected EOF at target). Please check with application support team before resubmitting the request" } }
Service Unavailable
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (503)
{ "ErrorMessage": "Error received from backend service.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z", "ServiceError": { "ConnectError": "Service is currently unavailable (NoActiveTargets), please check with application support before resubmitting the request." } }
Gateway timeout
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (504)
{ "ErrorMessage": "Your request took too long to process. Please try again.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z", "ServiceError": { "ConnectError": "Request could not be processed on time (gateway timeout). Please wait a moment and resubmit the request." } }
Get information about one RTP participant
get /rtp/v1/payment/rtp/participant/{routingNumber}
This call returns information about a single RTP participant. Use the routing number of the financial institution to search for the RTP participant.
Request
path FIELD | TYPE | DESCRIPTION |
---|---|---|
routingNumberrequired | string | Routing number of the participating RTP bank. |
header FIELD | TYPE | DESCRIPTION |
---|---|---|
KeyClientIdrequired | string | This value is provided by KeyBank during onboarding and is different from your client credentials. This is required for each call for RTP or Wire transactions. |
Request example
curl --location: 'https://partner-api-qv.keybank.com/rtp/v1/payment/rtp/participant/12345678 --header 'KeyClientId: testwUhSQADUD4DwYyZz2hZkwLqsoFGK' --header 'Accept: application/json' --header 'Authorization: Bearer testZcKJDWnwDWmmf9qah6PJvPy8'
Responses
Successful response
NAME | TYPE | DESCRIPTION |
---|---|---|
namerequired | string | Name of the party. This can be an individual, a financial institution, or a beneficiary. The name cannot exceed 140 characters. |
accountNumberoptional | string | Account number of the party. |
abaoptional | string | If the party is a financial institution, this is the ABA number or routing number. This cannot exceed 9 numbers. |
bicoptional | string | The bank identifier code (BIC) for the party. This is a combination code that identifies the bank, country, location, and possibly the bank branch. |
txidoptional | string | The tax identification number for the party. |
foreignBankSystemIdoptional | Object | foreignBankSystemType |
adrLineoptional | array | An unstructured address line. You can have up to three lines of text that each cannot exceed 70 characters. |
Response example (200)
{ "name": "KeyBank National Association", "accountNumber": "8756654", "aba": "125200879", "bic": "KEYUSL2XXX", "txid": "fa125da513hj135j42b5", "foreignBankSystemId": { "type": "USABA" }, "postalAddress": { "adrLine": [ "123 Keybank Street", "Cleveland, OH" ] } }
Missing data in the request
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (400)
{ "ErrorMessage": "Error received from backend service.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "US21052400000000", "TransactionTime": "2021-06-11T16:31:34.041Z", "ServiceError": { "status": "FAILED", "transactionId": "rrt-770941720727587-2383364-1", "requestReference": "RR-220818-01", "sendersReference": "SR-220818-01", "valueDate": 1683676800, "error": { "code": "KEY-1006", "title": "Required field missing", "description": "The object creditPartyBank is required in the request." } } }
Received request is unauthorized
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (401)
{ "ErrorMessage": "Error received from backend service.", "TransactionId": "rrt-621075741872460927-c-gce-9129-15867185-4", "X-CorrelationId": "80457bcb-2c3b-8c55-8cd6-3520c3157e8f", "TransactionTime": "2022-04-04T11:41:13.754Z", "ServiceError": { "status": "ERROR", "transactionId": "rrt-621075741872460927", "requestReference": "REQUEST-REF-220314.1", "sendersReference": "SENDER-REF-220314.1", "valueDate": "06-10-2023", "error": { "code": "KEY-0006", "title": "Not authorized for requested service", "description": "Check your credentials." }, "doddFrank": "NO" } }
Request is forbidden to access the resource
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (403)
{ "ErrorMessage": "Access to requested resource is forbidden.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Requested resource is not found
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (404)
{ "ErrorMessage": "Requested resource is not found, please verify the resource and resubmit the request.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Requested method is not allowed.
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (405)
{ "ErrorMessage": "Requested method is not allowed, please verify the method and resubmit the request.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Requested unsupported media type
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (415)
{ "ErrorMessage": "Requested media type is not allowed, please verify the media type and resubmit the request.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Too many requests received
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (429)
{ "ErrorMessage": "Number requests threshold reached, please resubmit the request after sometime.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Internal server error
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (500)
{ "ErrorMessage": "Error received from backend service", "TransactionId": "359681587523_SR-RMC-210729-11081", "X-CorrelationId": "7ad7fdfb-2ade-a3ab-b97c-523dc5312688", "TransactionTime": "2022-04-05T07:59:15.422Z", "ServiceError": { "status": "ERROR", "transactionId": "rrt-621075741872460927", "requestReference": "REQUEST-REF-220314.1", "sendersReference": "SENDER-REF-220314.1", "valueDate": "06-10-2023", "error": { "code": "KEY-9999", "title": "Unknown error", "description": "Payment Initiation ServiceException: AUTHENTICATION_FAILURE Unable to logon with the supplied credentials." }, "doddFrank": "NO" } }
Bad Gateway
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (502)
{ "ErrorMessage": "Error received from backend service.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z", "ServiceError": { "ConnectError": "Connectivity error occurred with the downstream service (unexpected EOF at target). Please check with application support team before resubmitting the request" } }
Service Unavailable
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (503)
{ "ErrorMessage": "Error received from backend service.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z", "ServiceError": { "ConnectError": "Service is currently unavailable (NoActiveTargets), please check with application support before resubmitting the request." } }
Gateway timeout
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (504)
{ "ErrorMessage": "Error received from backend service.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z", "ServiceError": { "ConnectError": "Request could not be processed on time (gateway timeout). Please wait a moment and resubmit the request." } }
Get the status with the transaction ID
get /rtp/v1/payment/status/transactionId/{transactionId}
Get the status of a RTP transaction or a wire transfer.
Request
path FIELD | TYPE | DESCRIPTION |
---|---|---|
transactionIdrequired | string | The clearing system reference number (the US transaction number). |
header FIELD | TYPE | DESCRIPTION |
---|---|---|
KeyClientIdrequired | string | This value is provided by KeyBank during onboarding and is different from your client credentials. This is required for each call for RTP or Wire transactions. |
Request example
curl --location: 'https://partner-api-qv.keybank.com/rtp/v1/payment/status/transactionId/test123321' --header 'KeyClientId: testwUhSQADUD4DwYyZz2hZkwLqsoFGK' --header 'Accept: application/json' --header 'Authorization: Bearer testZcKJDWnwDWmmf9qah6PJvPy8'
Responses
Successful response
NAME | TYPE | DESCRIPTION |
---|---|---|
statusrequired | Object | paymentStatus |
transactionIdoptional | string | The unique ID number associated with the original payment request. |
requestReferenceoptional | string | A reference value for the original request that is useful for traceability and reporting. The ID cannot exceed 35 characters. |
sendersReferenceoptional | string | A reference value provided by the sender. For outbound payments, this value is the same as the transaction ID. The ID cannot exceed 32 characters. |
receiversReferenceoptional | string | A reference value for the beneficiary. This value cannot exceed 140 characters. |
debitAccountNumberoptional | string | Debit account number. This cannot exceed 34 digits. |
creditAccountNumberoptional | string | Credit account number. This cannot exceed 34 digits. |
valueDateoptional | string | The date (YYYY-MM-DD) the transfer occurred. |
transferAmountoptional | integer | Amount of money to transfer in the correct currency format. |
transferCurrencyoptional | string | Currency code for the transfer amount. |
erroroptional | Object | paymentError |
doddFrankoptional | Object | noYesType |
clearingSystemReferenceoptional | string | A reference value for the beneficiary. This value cannot exceed 140 characters. |
Response example (200)
{ "status": "COMPLETED", "transactionId": "US21052400000000", "requestReference": "RR-KEY-999999-01", "sendersReference": "SR-KEY-999999-01", "receiversReference": "INVC0054321", "debitAccountNumber": "12345", "creditAccountNumber": "987654321", "valueDate": "2023-05-08", "transferAmount": 10, "transferCurrency": "USD", "doddFrank": "NO" }
Missing data in the request
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (400)
{ "ErrorMessage": "Error received from backend service.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "US21052400000000", "TransactionTime": "2021-06-11T16:31:34.041Z", "ServiceError": { "status": "FAILED", "transactionId": "rrt-770941720727587-2383364-1", "requestReference": "RR-220818-01", "sendersReference": "SR-220818-01", "valueDate": 1683676800, "error": { "code": "KEY-1006", "title": "Required field missing", "description": "The object creditPartyBank is required in the request." } } }
Received request is unauthorized
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (401)
{ "ErrorMessage": "Error received from backend service.", "TransactionId": "rrt-621075741872460927-c-gce-9129-15867185-4", "X-CorrelationId": "80457bcb-2c3b-8c55-8cd6-3520c3157e8f", "TransactionTime": "2022-04-04T11:41:13.754Z", "ServiceError": { "status": "ERROR", "transactionId": "rrt-621075741872460927", "requestReference": "REQUEST-REF-220314.1", "sendersReference": "SENDER-REF-220314.1", "valueDate": "06-10-2023", "error": { "code": "KEY-0006", "title": "Not authorized for requested service", "description": "Check your credentials." }, "doddFrank": "NO" } }
Request is forbidden to access the resource
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (403)
{ "ErrorMessage": "Access to requested resource is forbidden.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Requested resource is not found
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (404)
{ "ErrorMessage": "Requested resource is not found, please verify the resource and resubmit the request.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Requested method is not allowed
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (405)
{ "ErrorMessage": "Requested method is not allowed, please verify the method and resubmit the request.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Requested unsupported media type
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (415)
{ "ErrorMessage": "Requested media type is not allowed, please verify the media type and resubmit the request.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Too many requests received
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (429)
{ "ErrorMessage": "Number requests threshold reached, please resubmit the request after sometime.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Internal server error
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (500)
{ "ErrorMessage": "Error received from backend service.", "TransactionId": "359681587523_SR-RMC-210729-11081", "X-CorrelationId": "7ad7fdfb-2ade-a3ab-b97c-523dc5312688", "TransactionTime": "2022-04-05T07:59:15.422Z", "ServiceError": { "status": "ERROR", "transactionId": "rrt-621075741872460927", "requestReference": "REQUEST-REF-220314.1", "sendersReference": "SENDER-REF-220314.1", "valueDate": "06-10-2023", "error": { "code": "KEY-9999", "title": "Unknown error", "description": "Payment Initiation ServiceException: AUTHENTICATION_FAILURE Unable to logon with the supplied credentials." }, "doddFrank": "NO" } }
Bad Gateway
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (502)
{ "ErrorMessage": "Error received from backend service", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z", "ServiceError": { "ConnectError": "Connectivity error occurred with the downstream service (unexpected EOF at target). Please check with application support team before resubmitting the request" } }
Service Unavailable
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (503)
{ "ErrorMessage": "Error received from backend service.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z", "ServiceError": { "ConnectError": "Service is currently unavailable (NoActiveTargets), please check with application support before resubmitting the request." } }
Gateway timeout
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (504)
{ "ErrorMessage": "Your request took too long to process. Please try again.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z", "ServiceError": { "ConnectError": "Request could not be processed on time (gateway timeout). Please wait a moment and resubmit the request." } }
Get the status with the request reference number
get /rtp/v1/payment/status/debitAccount/{debitAccount}/reference/{reference}
Get the status of a payment with the debit account number of the payment originator and the request reference number. This call is typically used for troubleshooting an issue with timing or a technical error with a payment transaction. You can assign a request reference number when you initiate or validate a payment. This number is metadata for backend traceability and is not sent with the payment. Use this number with the debit account number for the originating payment. The account number and request reference number must be unique; you cannot use the same request reference number for different transactions.
Request
path FIELD | TYPE | DESCRIPTION |
---|---|---|
debitAccountrequired | string | The debit account number of the originator. |
referencerequired | string | The clearing system reference number (the US transaction number). |
header FIELD | TYPE | DESCRIPTION |
---|---|---|
KeyClientIdrequired | string | This value is provided by KeyBank during onboarding and is different from your client credentials. This is required for each call for RTP or Wire transactions. |
Request example
curl --location: 'https://partner-api-qv.keybank.com/rtp/v1/payment/status/debitAccount/12345/reference/RR-KEY-999999-01' --header 'KeyClientId: testwUhSQADUD4DwYyZz2hZkwLqsoFGK' --header 'Accept: application/json' --header 'Authorization: Bearer testZcKJDWnwDWmmf9qah6PJvPy8'
Responses
Successful response
NAME | TYPE | DESCRIPTION |
---|---|---|
statusrequired | Object | paymentStatus |
transactionIdoptional | string | The unique ID number associated with the original payment request. |
requestReferenceoptional | string | A reference value for the original request that is useful for traceability and reporting. The ID cannot exceed 35 characters. |
sendersReferenceoptional | string | A reference value provided by the sender. For outbound payments, this value is the same as the transaction ID. The ID cannot exceed 32 characters. |
receiversReferenceoptional | string | A reference value for the beneficiary. This value cannot exceed 140 characters. |
debitAccountNumberoptional | string | Debit account number. This cannot exceed 34 digits. |
creditAccountNumberoptional | string | Credit account number. This cannot exceed 34 digits. |
valueDateoptional | string | The date (YYYY-MM-DD) the transfer occurred. |
transferAmountoptional | integer | Amount of money to transfer in the correct currency format. |
transferCurrencyoptional | string | Currency code for the transfer amount. |
erroroptional | Object | paymentError |
doddFrankoptional | Object | noYesType |
clearingSystemReferenceoptional | string | A reference value for the beneficiary. This value cannot exceed 140 characters. |
Response example (200)
{ "status": "COMPLETED", "transactionId": "US21052400000000", "requestReference": "RR-KEY-999999-01", "sendersReference": "SR-KEY-999999-01", "receiversReference": "INVC0054321", "debitAccountNumber": "12345", "creditAccountNumber": "987654321", "valueDate": "2023-05-08", "transferAmount": 10, "transferCurrency": "USD", "doddFrank": "NO" }
Missing data in the request
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (400)
{ "ErrorMessage": "Error received from backend service.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "US21052400000000", "TransactionTime": "2021-06-11T16:31:34.041Z", "ServiceError": { "status": "FAILED", "transactionId": "rrt-770941720727587-2383364-1", "requestReference": "RR-220818-01", "sendersReference": "SR-220818-01", "valueDate": 1683676800, "error": { "code": "KEY-1006", "title": "Required field missing", "description": "The object creditPartyBank is required in the request." } } }
Received request is unauthorized
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (401)
{ "ErrorMessage": "Error received from backend service.", "TransactionId": "rrt-621075741872460927-c-gce-9129-15867185-4", "X-CorrelationId": "80457bcb-2c3b-8c55-8cd6-3520c3157e8f", "TransactionTime": "2022-04-04T11:41:13.754Z", "ServiceError": { "status": "ERROR", "transactionId": "rrt-621075741872460927", "requestReference": "REQUEST-REF-220314.1", "sendersReference": "SENDER-REF-220314.1", "valueDate": "06-10-2023", "error": { "code": "KEY-0006", "title": "Not authorized for requested service", "description": "Check your credentials." }, "doddFrank": "NO" } }
Request is forbidden to access the resource
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (403)
{ "ErrorMessage": "Access to requested resource is forbidden.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Requested resource is not found
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (404)
{ "ErrorMessage": "Requested resource is not found, please verify the resource and resubmit the request.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Requested method is not allowed
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (405)
{ "ErrorMessage": "Requested method is not allowed, please verify the method and resubmit the request.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Requested unsupported media type
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (415)
{ "ErrorMessage": "Requested media type is not allowed, please verify the media type and resubmit the request.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Too many requests received
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (429)
{ "ErrorMessage": "Number requests threshold reached, please resubmit the request after sometime.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Internal server error
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (500)
{ "ErrorMessage": "Error received from backend service", "TransactionId": "359681587523_SR-RMC-210729-11081", "X-CorrelationId": "7ad7fdfb-2ade-a3ab-b97c-523dc5312688", "TransactionTime": "2022-04-05T07:59:15.422Z", "ServiceError": { "status": "ERROR", "transactionId": "rrt-621075741872460927", "requestReference": "REQUEST-REF-220314.1", "sendersReference": "SENDER-REF-220314.1", "valueDate": "06-10-2023", "error": { "code": "KEY-9999", "title": "Unknown error", "description": "Payment Initiation ServiceException: AUTHENTICATION_FAILURE Unable to logon with the supplied credentials." }, "doddFrank": "NO" } }
Bad Gateway
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (502)
{ "ErrorMessage": "Error received from backend service", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z", "ServiceError": { "ConnectError": "Connectivity error occurred with the downstream service (unexpected EOF at target). Please check with application support team before resubmitting the request" } }
Service Unavailable
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (503)
{ "ErrorMessage": "Error received from backend service.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z", "ServiceError": { "ConnectError": "Service is currently unavailable (NoActiveTargets), please check with application support before resubmitting the request." } }
Gateway timeout
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (504)
{ "ErrorMessage": "Error received from backend service", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z", "ServiceError": { "ConnectError": "Request could not be processed on time (gateway timeout). Please wait a moment and resubmit the request." } }
Send a real-time payment
post /rtp/v1/payment/initiate
Initiate a RTP payment. Use the requestedService
parameter to define the transaction as RTP or Wire. With the party object, you can define the receiver as an individual, corporation, or financial institution in the payment chain.
Request
header FIELD | TYPE | DESCRIPTION |
---|---|---|
KeyClientIdrequired | string | This value is provided by KeyBank during onboarding and is different from your client credentials. This is required for each call for RTP or Wire transactions. |
BODY FIELD | TYPE | DESCRIPTION |
---|---|---|
requestedServicerequired | string | The type of payment transaction. The transaction request is valid only for the API products with granted access. Valid values: RTP, WIRE |
requestReferencerequired | string | A reference value for the original request that is useful for traceability and reporting. The ID cannot exceed 32 characters. |
typerequired | string | For RTP, the type can show if the transaction is a PAYMENT or a DRAFT. For Wire transfers, the type is always DRAFT. |
requestedValueDaterequired | string | Date (YYYY-MM-DD) the transfer will occur. |
originatorReferenceoptional | string | An additional reference value that is meaningful to the party originating the payment. |
sendersReferencerequired | 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. |
receiversReferenceoptional | string | A reference value for the beneficiary. This value cannot exceed 140 characters. |
bankToBankInstructionsoptional | string | Area to share messages or instructions from one bank to another bank. This cannot exceed 140 characters. |
ultimateDebitPartyoptional | Object | ultParty |
debitPartyrequired | Object | party |
debitPartyBankoptional | Object | party |
intermediaryBank1optional | Object | party |
intermediaryBank2optional | Object | party |
intermediaryBank3optional | Object | party |
creditPartyBankrequired | Object | party |
creditPartyrequired | Object | party |
transferAmountrequired | number | Amount of money to transfer in the correct currency format. |
transferCurrencyrequired | string | Currency code for the transfer amount. |
externalTemplateNameoptional | string | Name of the external template. Text cannot exceed 2048 characters. |
customDataoptional | string | The values for custom data is defined by the client. This free-form text field can contain up to 500 alphanumeric characters. Custom information stays with the transaction through its lifecycle. |
Request example
{ "requestedService": "RTP", "requestReference": "AZX01234567891011", "type": "PAYMENT", "sendersReference": "INVC0012345", "receiversReference": "INVC0054321", "requestedValueDate": 1621814400, "debitParty": { "name": "YOUR COMPANY NAME HERE", "accountNumber": "001122334455" }, "creditPartyBank": { "name": "BENEFICIARY BANK NAME", "aba": "000000000" }, "creditParty": { "name": "BENEFICIARY NAME", "accountNumber": "987654321", "postalAddress": { "adrLine": [ "BENEFICIARY ADDRESS LINE 1", "BENEFICIARY ADDRESS LINE 2" ] } }, "transferAmount": 10, "transferCurrency": "USD" }
Responses
Successful response
NAME | TYPE | DESCRIPTION |
---|---|---|
statusrequired | Object | paymentStatus |
transactionIdoptional | string | The unique ID number associated with the original payment request. |
requestReferenceoptional | string | A reference value for the original request that is useful for traceability and reporting. The ID cannot exceed 35 characters. |
sendersReferenceoptional | string | A reference value provided by the sender. For outbound payments, this value is the same as the transaction ID. The ID cannot exceed 32 characters. |
receiversReferenceoptional | string | A reference value for the beneficiary. This value cannot exceed 140 characters. |
debitAccountNumberoptional | string | Debit account number. This cannot exceed 34 digits. |
creditAccountNumberoptional | string | Credit account number. This cannot exceed 34 digits. |
valueDateoptional | string | The date (YYYY-MM-DD) the transfer occurred. |
transferAmountoptional | integer | Amount of money to transfer in the correct currency format. |
transferCurrencyoptional | string | Currency code for the transfer amount. |
erroroptional | Object | paymentError |
doddFrankoptional | Object | noYesType |
clearingSystemReferenceoptional | string | A reference value for the beneficiary. This value cannot exceed 140 characters. |
Response example (200)
{ "status": "IN_PROCESS", "transactionId": "US23050800214592", "requestReference": "AZX01234567891011", "sendersReference": "INVC0012345", "receiversReference": "INVC0054321", "debitAccountNumber": "001122334455", "creditAccountNumber": "987654321", "valueDate": "2023-05-08", "transferAmount": 10, "transferCurrency": "USD" }
Missing data in the request
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (400)
{ "ErrorMessage": "Error received from backend service.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "US21052400000000", "TransactionTime": "2021-06-11T16:31:34.041Z", "ServiceError": { "status": "FAILED", "transactionId": "rrt-770941720727587-2383364-1", "requestReference": "RR-220818-01", "sendersReference": "SR-220818-01", "valueDate": 1683676800, "error": { "code": "KEY-1006", "title": "Required field missing", "description": "The object creditPartyBank is required in the request." } } }
Received request is unauthorized
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (401)
{ "ErrorMessage": "Error received from backend service.", "TransactionId": "rrt-621075741872460927-c-gce-9129-15867185-4", "X-CorrelationId": "80457bcb-2c3b-8c55-8cd6-3520c3157e8f", "TransactionTime": "2022-04-04T11:41:13.754Z", "ServiceError": { "status": "ERROR", "transactionId": "rrt-621075741872460927", "requestReference": "REQUEST-REF-220314.1", "sendersReference": "SENDER-REF-220314.1", "valueDate": "06-10-2023", "error": { "code": "KEY-0006", "title": "Not authorized for requested service", "description": "Check your credentials." }, "doddFrank": "NO" } }
Request is forbidden to access the resource
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (403)
{ "ErrorMessage": "Access to requested resource is forbidden.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Requested resource is not found
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (404)
{ "ErrorMessage": "Requested resource is not found, please verify the resource and resubmit the request.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Requested method is not allowed.
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (405)
{ "ErrorMessage": "Requested method is not allowed, please verify the method and resubmit the request.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Requested unsupported media type
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (415)
{ "ErrorMessage": "Requested media type is not allowed, please verify the media type and resubmit the request.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Too many requests received
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (429)
{ "ErrorMessage": "Number requests threshold reached, please resubmit the request after sometime.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Internal server error
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (500)
{ "ErrorMessage": "Error received from backend service.", "TransactionId": "359681587523_SR-RMC-210729-11081", "X-CorrelationId": "7ad7fdfb-2ade-a3ab-b97c-523dc5312688", "TransactionTime": "2022-04-05T07:59:15.422Z", "ServiceError": { "status": "ERROR", "transactionId": "rrt-621075741872460927", "requestReference": "RR-RMC-210720-0123458981", "sendersReference": "SR-RMC-210729-11081", "valueDate": "06-10-2023", "error": { "code": "KEY-9999", "title": "Unknown error", "description": "Payment Initiation ServiceException: AUTHENTICATION_FAILURE Unable to logon with the supplied credentials." }, "doddFrank": "NO" } }
Bad Gateway
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (502)
{ "ErrorMessage": "Error received from backend service.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z", "ServiceError": { "ConnectError": "Connectivity error occurred with the downstream service (unexpected EOF at target). Please check with application support team before resubmitting the request" } }
Service Unavailable
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (503)
{ "ErrorMessage": "Error received from backend service.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z", "ServiceError": { "ConnectError": "Service is currently unavailable (NoActiveTargets), please check with application support before resubmitting the request." } }
Gateway timeout
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (504)
{ "ErrorMessage": "Error received from backend service", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z", "ServiceError": { "ConnectError": "Request could not be processed on time (gateway timeout). Please wait a moment and resubmit the request." } }
Perform validation checks
post /rtp/v1/payment/validate
This call performs all the validation checks needed to initiate a payment without creating a payment.
Request
header FIELD | TYPE | DESCRIPTION |
---|---|---|
KeyClientIdrequired | string | This value is provided by KeyBank during onboarding and is different from your client credentials. This is required for each call for RTP or Wire transactions. |
BODY FIELD | TYPE | DESCRIPTION |
---|---|---|
requestedServicerequired | string | The type of payment transaction. The transaction request is valid only for the API products with granted access. Valid values: RTP, WIRE |
requestReferencerequired | string | A reference value for the original request that is useful for traceability and reporting. The ID cannot exceed 32 characters. |
typerequired | string | For RTP, the type can show if the transaction is a PAYMENT or a DRAFT. For Wire transfers, the type is always DRAFT. |
requestedValueDaterequired | string | Date (YYYY-MM-DD) the transfer will occur. |
originatorReferenceoptional | string | An additional reference value that is meaningful to the party originating the payment. |
sendersReferencerequired | 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. |
receiversReferenceoptional | string | A reference value for the beneficiary. This value cannot exceed 140 characters. |
bankToBankInstructionsoptional | string | Area to share messages or instructions from one bank to another bank. This cannot exceed 140 characters. |
ultimateDebitPartyoptional | Object | ultParty |
debitPartyrequired | Object | party |
debitPartyBankoptional | Object | party |
intermediaryBank1optional | Object | party |
intermediaryBank2optional | Object | party |
intermediaryBank3optional | Object | party |
creditPartyBankrequired | Object | party |
creditPartyrequired | Object | party |
transferAmountrequired | number | Amount of money to transfer in the correct currency format. |
transferCurrencyrequired | string | Currency code for the transfer amount. |
externalTemplateNameoptional | string | Name of the external template. Text cannot exceed 2048 characters. |
customDataoptional | string | The values for custom data is defined by the client. This free-form text field can contain up to 500 alphanumeric characters. Custom information stays with the transaction through its lifecycle. |
Request example
{ "requestedService": "RTP", "requestReference": "AZX01234567891011", "type": "PAYMENT", "requestedValueDate": 1621814400, "originatorReference": "", "sendersReference": "INVC0012345", "receiversReference": "INVC0054321", "ultimateDebitParty": { "name": "" }, "debitParty": { "name": "YOUR COMPANY NAME HERE", "accountNumber": "001122334455" }, "debitPartyBank": { "name": "" }, "creditPartyBank": { "name": "BENEFICIARY BANK NAME", "aba": "000000000" }, "creditParty": { "name": "BENEFICIARY NAME", "accountNumber": "987654321", "postalAddress": { "adrLine": [ "BENEFICIARY ADDRESS LINE 1", "BENEFICIARY ADDRESS LINE 2" ] } }, "transferAmount": 10, "transferCurrency": "USD", "customData": "" }
Responses
Successful response
NAME | TYPE | DESCRIPTION |
---|---|---|
statusrequired | Object | paymentStatus |
transactionIdoptional | string | The unique ID number associated with the original payment request. |
requestReferenceoptional | string | A reference value for the original request that is useful for traceability and reporting. The ID cannot exceed 35 characters. |
sendersReferenceoptional | string | A reference value provided by the sender. For outbound payments, this value is the same as the transaction ID. The ID cannot exceed 32 characters. |
receiversReferenceoptional | string | A reference value for the beneficiary. This value cannot exceed 140 characters. |
debitAccountNumberoptional | string | Debit account number. This cannot exceed 34 digits. |
creditAccountNumberoptional | string | Credit account number. This cannot exceed 34 digits. |
valueDateoptional | string | The date (YYYY-MM-DD) the transfer occurred. |
transferAmountoptional | integer | Amount of money to transfer in the correct currency format. |
transferCurrencyoptional | string | Currency code for the transfer amount. |
erroroptional | Object | paymentError |
doddFrankoptional | Object | noYesType |
clearingSystemReferenceoptional | string | A reference value for the beneficiary. This value cannot exceed 140 characters. |
Response example (200)
{ "status": "VALID", "transactionId": "XZ23050714000000", "requestReference": "testWBB25889710252", "sendersReference": "INVC0012345", "receiversReference": "INVC0054321", "debitAccountNumber": "12345", "creditAccountNumber": "987654321", "transferAmount": 10, "transferCurrency": "USD" }
Missing data in the request
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (400)
{ "ErrorMessage": "Error received from backend service.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "US21052400000000", "TransactionTime": "2021-06-11T16:31:34.041Z", "ServiceError": { "status": "FAILED", "transactionId": "rrt-770941720727587-2383364-1", "requestReference": "RR-220818-01", "sendersReference": "SR-220818-01", "valueDate": 1683676800, "error": { "code": "KEY-1006", "title": "Required field missing", "description": "The object creditPartyBank is required in the request." } } }
Received request is unauthorized
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (401)
{ "ErrorMessage": "Error received from backend service.", "TransactionId": "rrt-621075741872460927-c-gce-9129-15867185-4", "X-CorrelationId": "80457bcb-2c3b-8c55-8cd6-3520c3157e8f", "TransactionTime": "2022-04-04T11:41:13.754Z", "ServiceError": { "status": "ERROR", "transactionId": "rrt-621075741872460927", "requestReference": "REQUEST-REF-220314.1", "sendersReference": "SENDER-REF-220314.1", "valueDate": "06-10-2023", "error": { "code": "KEY-0006", "title": "Not authorized for requested service", "description": "Check your credentials." }, "doddFrank": "NO" } }
Request is forbidden to access the resource
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (403)
{ "ErrorMessage": "Access to requested resource is forbidden.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Requested resource is not found
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (404)
{ "ErrorMessage": "Requested resource is not found, please verify the resource and resubmit the request.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Requested method is not allowed
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (405)
{ "ErrorMessage": "Requested method is not allowed, please verify the method and resubmit the request.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Requested unsupported media type
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (415)
{ "ErrorMessage": "Requested media type is not allowed, please verify the media type and resubmit the request.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Too many requests received
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (429)
{ "ErrorMessage": "Number requests threshold reached, please resubmit the request after sometime.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z" }
Internal server error
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (500)
{ "ErrorMessage": "Error received from backend service.", "TransactionId": "359681587523_SR-RMC-210729-11081", "X-CorrelationId": "7ad7fdfb-2ade-a3ab-b97c-523dc5312688", "TransactionTime": "2022-04-05T07:59:15.422Z", "ServiceError": { "status": "ERROR", "transactionId": "rrt-621075741872460927", "requestReference": "REQUEST-REF-220314.1", "sendersReference": "SENDER-REF-220314.1", "valueDate": "06-10-2023", "error": { "code": "KEY-9999", "title": "Unknown error", "description": "Payment Initiation ServiceException: AUTHENTICATION_FAILURE Unable to logon with the supplied credentials.", "detail": { "code": "KEY-1005", "title": "Error", "description": "Additional information about error code." } }, "doddFrank": "NO" } }
Bad Gateway
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (502)
{ "ErrorMessage": "Error received from backend service.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z", "ServiceError": { "ConnectError": "Connectivity error occurred with the downstream service (unexpected EOF at target). Please check with application support team before resubmitting the request" } }
Service Unavailable
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (503)
{ "ErrorMessage": "Error received from backend service.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z", "ServiceError": { "ConnectError": "Service is currently unavailable (NoActiveTargets), please check with application support before resubmitting the request." } }
Gateway timeout
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
Response example (504)
{ "ErrorMessage": "Your request took too long to process. Please try again.", "X-CorrelationId": "2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab", "TransactionId": "rrt-7709400285867417207-b-gce-27587-2383364-1", "TransactionTime": "2021-06-11T16:31:34.041Z", "ServiceError": { "ConnectError": "Request could not be processed on time (gateway timeout). Please wait a moment and resubmit the request." } }
Schemas
exception
NAME | TYPE | DESCRIPTION |
---|---|---|
ErrorMessageoptional | string | A human-readable message that describes the type or source of the error. |
TransactionIdoptional | string | A unique transaction ID returned with the response, useful for traceability. |
TransactionTimeoptional | string | Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. |
ServiceErroroptional | oneOf | serviceErrorData connectError |
serviceErrorData
NAME | TYPE | DESCRIPTION |
---|---|---|
statusrequired | Object | paymentStatus |
transactionIdoptional | string | The unique ID number associated with the original payment request. |
requestReferenceoptional | string | A reference value for the original request that is useful for traceability and reporting. The ID cannot exceed 35 characters. |
sendersReferenceoptional | 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. |
receiversReferenceoptional | string | The sender reference value from the original request. This is useful for traceability and reporting. |
debitAccountNumberoptional | string | The sender reference value from the original request. This is useful for traceability and reporting. |
creditAccountNumberoptional | string | The sender reference value from the original request. This is useful for traceability and reporting. |
valueDateoptional | string | The date (YYYY-MM-DD) the transferred occurred. |
erroroptional | Object | paymentError |
doddFrankoptional | Object | noYesType |
connectError
NAME | TYPE | DESCRIPTION |
---|---|---|
ConnectErroroptional | string | API connectivity error information, if available. |
paymentTransactionRequestV1
NAME | TYPE | DESCRIPTION |
---|---|---|
requestedServicerequired | string | The type of payment transaction. The transaction request is valid only for the API products with granted access. Valid values: RTP, WIRE |
requestReferencerequired | string | A reference value for the original request that is useful for traceability and reporting. The ID cannot exceed 32 characters. |
typerequired | string | For RTP, the type can show if the transaction is a PAYMENT or a DRAFT. For Wire transfers, the type is always DRAFT. |
requestedValueDaterequired | string | Date (YYYY-MM-DD) the transfer will occur. |
originatorReferenceoptional | string | An additional reference value that is meaningful to the party originating the payment. |
sendersReferencerequired | 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. |
receiversReferenceoptional | string | A reference value for the beneficiary. This value cannot exceed 140 characters. |
bankToBankInstructionsoptional | string | Area to share messages or instructions from one bank to another bank. This cannot exceed 140 characters. |
ultimateDebitPartyoptional | Object | ultParty |
debitPartyrequired | Object | party |
debitPartyBankoptional | Object | party |
intermediaryBank1optional | Object | party |
intermediaryBank2optional | Object | party |
intermediaryBank3optional | Object | party |
creditPartyBankrequired | Object | party |
creditPartyrequired | Object | party |
transferAmountrequired | number | Amount of money to transfer in the correct currency format. |
transferCurrencyrequired | string | Currency code for the transfer amount. |
externalTemplateNameoptional | string | Name of the external template. Text cannot exceed 2048 characters. |
customDataoptional | string | The values for custom data is defined by the client. This free-form text field can contain up to 500 alphanumeric characters. Custom information stays with the transaction through its lifecycle. |
party
NAME | TYPE | DESCRIPTION |
---|---|---|
namerequired | string | Name of the party. This can be an individual, a financial institution, or a beneficiary. The name cannot exceed 140 characters. |
accountNumberoptional | string | Account number of the party. |
abaoptional | string | If the party is a financial institution, this is the ABA number or routing number. This cannot exceed 9 numbers. |
bicoptional | string | The bank identifier code (BIC) for the party. This is a combination code that identifies the bank, country, location, and possibly the bank branch. |
txidoptional | string | The tax identification number for the party. |
foreignBankSystemIdoptional | Object | foreignBankSystemType |
adrLineoptional | array | An unstructured address line. You can have up to three lines of text that each cannot exceed 70 characters. |
participantListResponse
NAME | TYPE | DESCRIPTION |
---|---|---|
countrequired | string | The count of records that match the initial query. |
limitrequired | integer | The maximum number of records returned in the response. |
offsetrequired | integer | The number of records skipped before the response is returned. |
partiesoptional | Object | party |
foreignBankSystemType
NAME | TYPE | DESCRIPTION |
---|---|---|
typeoptional | string | The five-digit global routing code for a foreign financial institution. |
idoptional | string | The identification number associated with the foreign financial institution. |
paymentTransactionResponse
NAME | TYPE | DESCRIPTION |
---|---|---|
statusrequired | Object | paymentStatus |
transactionIdoptional | string | The unique ID number associated with the original payment request. |
requestReferenceoptional | string | A reference value for the original request that is useful for traceability and reporting. The ID cannot exceed 35 characters. |
sendersReferenceoptional | string | A reference value provided by the sender. For outbound payments, this value is the same as the transaction ID. The ID cannot exceed 32 characters. |
receiversReferenceoptional | string | A reference value for the beneficiary. This value cannot exceed 140 characters. |
debitAccountNumberoptional | string | Debit account number. This cannot exceed 34 digits. |
creditAccountNumberoptional | string | Credit account number. This cannot exceed 34 digits. |
valueDateoptional | string | The date (YYYY-MM-DD) the transfer occurred. |
transferAmountoptional | integer | Amount of money to transfer in the correct currency format. |
transferCurrencyoptional | string | Currency code for the transfer amount. |
erroroptional | Object | paymentError |
doddFrankoptional | Object | noYesType |
clearingSystemReferenceoptional | string | A reference value for the beneficiary. This value cannot exceed 140 characters. |
paymentStatus
NAME | TYPE | DESCRIPTION |
---|---|---|
paymentStatusoptional | string | The status of the payment transaction. Valid values: IN_PROCESS, IN_REVIEW, COMPLETED, FAILED, RETURNED, ERROR, VALID |
paymentError
NAME | TYPE | DESCRIPTION |
---|---|---|
coderequired | string | Status code assigned to each error type. |
titlerequired | string | Brief title about the error associated with the status code. |
descriptionoptional | string | Description of the error. |
codeoptional | string | A static code assigned by the network or payment system. |
titleoptional | string | Brief title about the error associated with the status code. |
descriptionoptional | string | Description of the error |
noYesType
NAME | TYPE | DESCRIPTION |
---|---|---|
noYesTypeoptional | string | This field indicates whether the transaction qualifies for Dodd-Frank. |
ultParty
NAME | TYPE | DESCRIPTION |
---|---|---|
nameoptional | string | Typically this is the name of the party that instructed the debit party to initiate a payment. This value cannot exceed 140 characters. |
Errors
When an error occurs, the paymentTransactionResponse
object returns with the paymentStatus
of ERROR or FAILED. Certain violations report with an HTTP 200 response for issues where the API service successfully receives the request, but it encounters errors. KeyBank may include additional information about the error in API-specific error messages.
For more information about errors, see Error handling.
API-specific KeyBank error codes and details are in the error
object of the response payload. Issues signify a failed payment that could have been caused by account restrictions, network timeout, or invalid data in the request.
API specific KeyBank codes and messages
CODE | MESSAGE |
---|---|
KEY-0001 | Not authorized |
KEY-0002 | Not authorized for requested action |
KEY-0003 | Request exceeds authorized limit |
KEY-0004 | Unauthorized for account |
KEY-0005 | Internal use only fields |
KEY-0006 | Not authorized for requested service |
KEY-1000 | Transformation Error |
KEY-1001 | Invalid Data |
KEY-1002 | Invalid Bank Identifier |
KEY-1003 | Invalid or unknown template |
KEY-1004 | Invalid account |
KEY-1005 | Invalid Currency |
KEY-1006 | Required field missing |
KEY-1007 | Transaction Not Found |
KEY-1008 | Insufficient Funds |
KEY-1009 | Account has restrictions |
KEY-1010 | Duplicate Request |
KEY-1011 | Payor Account Restrictions |
KEY-1012 | Payee Account Restrictions |
KEY-3001 | Exceeds transaction limit for RTP transactions |
KEY-3002 | Field not usable for RTP transactions |
KEY-3003 | Payment network timeout. Please retry. |
KEY-3004 | Payment rejected by payment network |
KEY-9997 | Failed payment review |
KEY-9998 | Payment failed during processing |
KEY-9999 | Unknown error |
API-specific error example
paymentTransactionResponse: { "status": "FAILED", "requestReference": "RR-999999-01", "sendersReference": "SR-999999-01", "error": { "code": "KEY-1002", "title": "Invalid Bank Identifier", "description": "Credit Party Bank must be a valid USRTP Participant" } }
Changelog
Release | API version | Change description | Impact |
---|---|---|---|
August 2024 | 1.2.4 |
| MID |
May 2024 | 1.2.3 |
| MID |
March 2024 | 1.2.1 |
| HIGH |
September 2023 | 1.1.5 |
| LOW |
December 2022 | 1.1.3 |
|
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