openapi: 3.2.0 info: title: RTP and Wire Payments Participant API description: '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.' contact: name: KeyBank Developer Support email: developers@keybank.com version: 1.3.3 servers: - url: https://partner-api-qv.key.com - url: https://partner-api.key.com tags: - name: Participant description: Look up a RTP participating banks. paths: /rtp/v1/payment/rtp/participant: get: tags: - Participant summary: Get a list of RTP participants description: 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. operationId: participantList security: - bearerAuth: [] parameters: - name: limit in: query description: Pagination parameter that indicates the maximum number of records to return in the response. required: true schema: type: integer - name: offset in: query description: Pagination parameter that indicates the number of records skipped before generating the output. required: true schema: type: integer - name: KeyClientId in: header description: Unique ID provided by KeyBank during onboarding. This is different from your client credentials. It is required for each call. required: true schema: type: string responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/participantListResponse' example: 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 '400': description: Missing data in the request headers: X-CorrelationId: schema: type: string description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. content: application/json: schema: $ref: '#/components/schemas/exception' example: ErrorMessage: Error received from backend service. X-CorrelationId: 2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab TransactionId: US21052400000000 TransactionTime: '2021-06-11T16:31:34.041Z' Api-Url: /rtp/v1/payment/rtp/participant ServiceError: status: FAILED transactionId: rrt-770941720727587-2383364-1 requestReference: RR-220818-01 sendersReference: SR-220818-01 valueDate: 2023-05-10 error: code: KEY-1006 title: Required field missing description: The object creditPartyBank is required in the request. '401': description: Received request is unauthorized headers: X-CorrelationId: schema: type: string description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. The ID is unique to each request. content: application/json: schema: $ref: '#/components/schemas/exception' example: 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' Api-Url: /rtp/v1/payment/rtp/participant 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' '403': description: Request is forbidden to access the resource headers: X-CorrelationId: schema: type: string description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. content: application/json: schema: $ref: '#/components/schemas/exception' example: 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' Api-Url: /rtp/v1/payment/rtp/participant '404': description: Resource not found headers: X-CorrelationId: schema: type: string description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. content: application/json: schema: $ref: '#/components/schemas/exception' example: 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' Api-Url: /rtp/v1/payment/rtp/participant '405': description: Requested method is not allowed. headers: X-CorrelationId: schema: type: string description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. content: application/json: schema: $ref: '#/components/schemas/exception' example: 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' Api-Url: /rtp/v1/payment/rtp/participant '415': description: Requested unsupported media type headers: X-CorrelationId: schema: type: string description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. content: application/json: schema: $ref: '#/components/schemas/exception' example: 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' Api-Url: /rtp/v1/payment/rtp/participant '429': description: Too many requests received headers: X-CorrelationId: schema: type: string description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. content: application/json: schema: $ref: '#/components/schemas/exception' example: 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' Api-Url: /rtp/v1/payment/rtp/participant '500': description: Internal server error headers: X-CorrelationId: schema: type: string description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. content: application/json: schema: $ref: '#/components/schemas/exception' example: 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' Api-Url: /rtp/v1/payment/rtp/participant 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' '502': description: Bad Gateway headers: X-CorrelationId: schema: type: string description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. content: application/json: schema: $ref: '#/components/schemas/exception' example: 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' Api-Url: /rtp/v1/payment/rtp/participant ServiceError: ConnectError: Connectivity error occurred with the downstream service (unexpected EOF at target). Please check with application support team before resubmitting the request '503': description: Service Unavailable headers: X-CorrelationId: schema: type: string description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. content: application/json: schema: $ref: '#/components/schemas/exception' example: 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' Api-Url: /rtp/v1/payment/rtp/participant ServiceError: ConnectError: Service is currently unavailable (NoActiveTargets), please check with application support before resubmitting the request. '504': description: Gateway timeout headers: X-CorrelationId: schema: type: string description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. content: application/json: schema: $ref: '#/components/schemas/exception' example: 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' Api-Url: /rtp/v1/payment/rtp/participant ServiceError: ConnectError: Request could not be processed on time (gateway timeout). Please wait a moment and resubmit the request. /rtp/v1/payment/rtp/participant/{routingNumber}: get: tags: - Participant summary: Get information about one RTP participant description: This call returns information about a single RTP participant. Use the routing number of the financial institution to search for the RTP participant. operationId: participant security: - bearerAuth: [] parameters: - name: routingNumber in: path description: Routing number of the participating RTP bank. required: true schema: type: string - name: KeyClientId in: header description: Unique ID provided by KeyBank during onboarding. This is different from your client credentials. It is required for each call. schema: type: string required: true responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/party' example: name: KeyBank National Association accountNumber: '8756654' aba: '125200879' bic: KEYUSL2XXX txid: fa125da513hj135j42b5 foreignBankSystemId: type: USABA postalAddress: adrLine: - 123 Keybank Street - Cleveland, OH '400': description: Missing data in the request headers: X-CorrelationId: schema: type: string description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. content: application/json: schema: $ref: '#/components/schemas/exception' example: ErrorMessage: Error received from backend service. X-CorrelationId: 2ebd5c24-0e8d-5a70-0e91-ffd2727c1aab TransactionId: US21052400000000 TransactionTime: '2021-06-11T16:31:34.041Z' Api-Url: /rtp/v1/payment/rtp/participant/{routingNumber} ServiceError: status: FAILED transactionId: rrt-770941720727587-2383364-1 requestReference: RR-220818-01 sendersReference: SR-220818-01 valueDate: 2023-05-10 error: code: KEY-1006 title: Required field missing description: The object creditPartyBank is required in the request. '401': description: Received request is unauthorized headers: X-CorrelationId: schema: type: string description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. The ID is unique to each request. content: application/json: schema: $ref: '#/components/schemas/exception' example: 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' Api-Url: /rtp/v1/payment/rtp/participant/{routingNumber} 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' '403': description: Request is forbidden to access the resource headers: X-CorrelationId: schema: type: string description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. content: application/json: schema: $ref: '#/components/schemas/exception' example: 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' Api-Url: /rtp/v1/payment/rtp/participant/{routingNumber} '404': description: Requested resource is not found headers: X-CorrelationId: schema: type: string description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. content: application/json: schema: $ref: '#/components/schemas/exception' example: 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' Api-Url: /rtp/v1/payment/rtp/participant/{routingNumber} '405': description: Requested method is not allowed. headers: X-CorrelationId: schema: type: string description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. content: application/json: schema: $ref: '#/components/schemas/exception' example: 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' Api-Url: /rtp/v1/payment/rtp/participant/{routingNumber} '415': description: Requested unsupported media type headers: X-CorrelationId: schema: type: string description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. content: application/json: schema: $ref: '#/components/schemas/exception' example: 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' Api-Url: /rtp/v1/payment/rtp/participant/{routingNumber} '429': description: Too many requests received headers: X-CorrelationId: schema: type: string description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. content: application/json: schema: $ref: '#/components/schemas/exception' example: 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' Api-Url: /rtp/v1/payment/rtp/participant/{routingNumber} '500': description: Internal server error headers: X-CorrelationId: schema: type: string description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. content: application/json: schema: $ref: '#/components/schemas/exception' example: 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' Api-Url: /rtp/v1/payment/rtp/participant/{routingNumber} 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' '502': description: Bad Gateway headers: X-CorrelationId: schema: type: string description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. content: application/json: schema: $ref: '#/components/schemas/exception' example: 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' Api-Url: /rtp/v1/payment/rtp/participant/{routingNumber} ServiceError: ConnectError: Connectivity error occurred with the downstream service (unexpected EOF at target). Please check with application support team before resubmitting the request '503': description: Service Unavailable headers: X-CorrelationId: schema: type: string description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. content: application/json: schema: $ref: '#/components/schemas/exception' example: 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' Api-Url: /rtp/v1/payment/rtp/participant/{routingNumber} ServiceError: ConnectError: Service is currently unavailable (NoActiveTargets), please check with application support before resubmitting the request. '504': description: Gateway timeout headers: X-CorrelationId: schema: type: string description: A unique identifier generated for each transaction that remains with the transaction through the chain of API operations. content: application/json: schema: $ref: '#/components/schemas/exception' example: 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' Api-Url: /rtp/v1/payment/rtp/participant/{routingNumber} ServiceError: ConnectError: Request could not be processed on time (gateway timeout). Please wait a moment and resubmit the request. components: schemas: foreignBankSystemType: type: object properties: type: type: string description: The five character global routing code for a foreign financial institution. enum: - ATBLZ - AUBSB - CACPA - CHBCC - CHSIC - CNAPS - DEBLZ - ESNCC - GBDSC - GRBIC - HKNCC - IENCC - INFSC - ITNCC - JPZGN - NZNCC - PLKNR - PTNCC - RUCBC - SESBA - SGIBG - THCBC - TWNCC - USABA - USPID - ZANCC id: type: string description: The identification number associated with the foreign financial institution. exception: title: exceptionSchema type: object description: Contains information about the errors related to the request. properties: ErrorMessage: type: string description: A human-readable message that describes the type or source of the error. TransactionId: type: string description: A unique transaction ID returned with the response, useful for traceability. TransactionTime: type: string description: Date (YYYY-MM-DD) and time (HH:MM:SS) the error occurred. Api-Url: type: string description: The API URL path of the call that generated the response. ServiceError: type: object title: ServiceError description: Detailed service-level error details, if available. oneOf: - $ref: '#/components/schemas/serviceErrorData' - $ref: '#/components/schemas/connectError' participantListResponse: required: - count - limit - offset title: participantListResponse description: Contains the response body for RTP participant inquiries. type: object properties: count: type: string description: The count of records that match the initial query. limit: type: integer description: The maximum number of records returned in the response. offset: type: integer description: The number of records skipped before the response is returned. parties: $ref: '#/components/schemas/party' paymentError: required: - code - title type: object description: Error messages related to the API and backend services. properties: code: type: string description: Status code assigned to each error type. title: type: string description: Brief title about the error associated with the status code. description: type: string description: Description of the error. detail: type: object description: Additional details about the error from the payment network. properties: code: type: string description: A static code assigned by the network or payment system. title: type: string description: Brief title about the error associated with the status code. description: type: string description: Description of the error party: title: party required: - name type: object description: Details about the parties involved in the transaction. properties: name: type: string description: Name of the party. This can be an individual, a financial institution, or a beneficiary. The name is required for the creditParty. This cannot exceed 140 characters. maxLength: 140 accountNumber: description: Account number of the party. If this is a wire transfer, you must provide the name and address with the account number for all parties, except debitParty and debitPartyBank. This cannot exceed 34 digits. type: string minLength: 1 maxLength: 34 aba: type: string description: The ABA or routing number of the financial institution. If this is a wire transfer, you do not need to provide other account information like address or name, unless it is for debitParty or debitPartyBank. This cannot exceed 9 digits. pattern: '[0-9]{9,9}' maxLength: 9 bic: type: string description: The bank identifier code (BIC) for the party. This is a combination code that identifies the bank, country, location, and possibly the bank branch. pattern: '[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}' txid: type: string description: The tax identification number for the party. foreignBankSystemId: description: For wire transfer to a financial institution located internationally or outside of the United States, this is the global routing number and identification number. $ref: '#/components/schemas/foreignBankSystemType' postalAddress: type: object description: The address of the party. If the address is present in the request, all fields are required. properties: adrTp: type: string description: 'Address type for the party that specifies if it is a home, business, or mailing address. Valid values: ADDR, PBOX, HOME, BIZZ, MLTO, DLVY' enum: - ADDR - PBOX - HOME - BIZZ - MLTO - DLVY dept: type: string description: Department of the party for the mailing address, if applicable. This field cannot exceed 70 characters. minLength: 1 maxLength: 70 subDept: type: string description: Sub-department of the party, if applicable. This field cannot exceed 70 characters. minLength: 1 maxLength: 70 strtNm: type: string description: Street address for the party. This field cannot exceed 70 characters. minLength: 1 maxLength: 70 bldgNb: type: string description: Building number. This field cannot exceed 16 characters. minLength: 1 maxLength: 16 pstCd: type: string description: The postal code or zip code for the address. This field cannot exceed 16 characters. minLength: 1 maxLength: 16 twnNm: type: string description: Name of the town. This field cannot exceed 35 characters. minLength: 1 maxLength: 35 ctrySubDvsn: type: string description: Name of subdivision of a country like a state, region, or county. This field cannot exceed 35 characters. minLength: 1 maxLength: 35 ctry: type: string description: Two-character country abbreviation. pattern: '[A-Z]{2,2}' adrLine: type: array maxItems: 3 description: An unstructured address line. You can have up to three lines of text. Each line can be 70 characters or less. items: type: string maxLength: 70 paymentStatus: type: string description: 'The status of the payment transaction. Valid values: IN_PROCESS, IN_REVIEW, COMPLETED, FAILED, RETURNED, ERROR, VALID' enum: - IN_PROCESS - IN_REVIEW - COMPLETED - FAILED - RETURNED - ERROR - VALID connectError: type: object properties: ConnectError: type: string description: API connectivity error information, if available. serviceErrorData: title: serviceErrorData required: - status type: object description: The service error returns the same response payload as a successful response with additional details specific to the error. properties: status: description: 'The status of the payment transaction. Valid values: IN_PROCESS, IN_REVIEW, COMPLETED, FAILED, RETURNED, ERROR, VALID' $ref: '#/components/schemas/paymentStatus' transactionId: type: string description: The unique ID number associated with the original payment request in KeyBank's payment system. requestReference: type: string description: A unique reference value for the original request that is useful for traceability and reporting. The ID cannot exceed 32 characters. minLength: 1 maxLength: 32 sendersReference: type: string description: Unique reference value provided by the sender. The ID cannot exceed 32 characters. minLength: 1 maxLength: 32 receiversReference: type: string description: The sender reference value from the original request. This is useful for traceability and reporting. minLength: 1 maxLength: 140 debitAccountNumber: type: string description: The sender reference value from the original request. This is useful for traceability and reporting. minLength: 1 maxLength: 34 creditAccountNumber: type: string description: The sender reference value from the original request. This is useful for traceability and reporting. minLength: 1 maxLength: 34 valueDate: type: string description: The date (YYYY-MM-DD) the transferred occurred. error: description: Additional error information for payment transactions with the status ERROR. $ref: '#/components/schemas/paymentError' doddFrank: description: The initial assessment of whether the transaction qualifies as a Dodd-Frank wire transaction. This value can change during the payment cycle. $ref: '#/components/schemas/noYesType' noYesType: type: string description: This field indicates whether the transaction qualifies for Dodd-Frank. enum: - true - false securitySchemes: bearerAuth: type: http scheme: bearer