Skip to main content

Overview

The JH PayCenter Instant Payment Request API enables Financial Institutions (FIs) and their partners to create and manage the complete Payment Request lifecycle. This includes initiating payment requests to debtors, processing debtor responses (acceptance/rejection), and tracking status across supported real-time payment networks.

Payment Request APIs

  1. Payment Request API
  2. Respond to Payment Request API
  3. Get Payment Request API

1. Payment Request API

The Payment Request API allows financial institutions to initiate Payment Request messages. This enables creditors to request funds from debtors through supported instant payment networks, providing a secure and standardized method for payment collection.

Workflow

  • A POST API request is sent with the required headers, body, and authorization.
  • The request is validated by the API's business layer.
  • A creditor account inquiry is performed to validate and verify account details.
  • If the request passes all validations, a Payment Request (pain.013) message is constructed and sent to the Instant Payments Network.
  • The API responds with a 'PmtHubTrakId' and a status of 'Pending', indicating that the Payment Request has been successfully submitted to the network.
  • The debtor's financial institution receives the Payment Request, and the debtor can respond by either Accepting or Rejecting it.
  • Based on the debtor’s action, PayCenter sends EES 800 events through the JHA EES system with status updates:
    • Accepted (Acpt) – Payment Request accepted by debtor
    • Rejected (Rej) – Payment Request rejected by debtor or network
    • Expired (Cancel) – Payment Request expired without response
  • When an associated payment is received (following Payment Request acceptance), PayCenter sends additional EES 800 events with payment settlement information.

If a failure occurs at any stage (authorization, validation), the API will return an appropriate error response with specific error codes.

High-Level Diagram

Request Fields

FieldsTypeDescriptionMax LenPathReq/Opt
NameStringCreditor Name140RequestForPayment.Creditor.NameRequired
AccountNumberStringCreditor Account Number34RequestForPayment.Creditor.AccountNumberRequired
AccountTypeStringCreditor Account Type (Enum: Checking, Savings, MICR)NARequestForPayment.Creditor.AccountTypeRequired
NameStringUltimate Creditor Name. See Rules section140RequestForPayment.Creditor.UltimateCreditor.NameOptional
NameStringDebtor Name140RequestForPayment.Debtor.NameRequired
RoutingNumberStringDebtor Routing Number9RequestForPayment.Debtor.RoutingNumberRequired
AccountNumberStringDebtor Account Number34RequestForPayment.Debtor.AccountNumberRequired
NameStringUltimate Debtor Name140RequestForPayment.Debtor.UltimateDebtor.NameOptional
AmountNumberAmount to be transferred (Min: $0.01). See Rules section-RequestForPayment.PaymentDescription.AmountRequired
OriginatorTypeStringDefines the Originator Type (Enum: CONSUMER, BUSINESS, GOVERNMENT). See Rules section-RequestForPayment.PaymentDescription.OriginatorTypeRequired
UserNameStringDefines the name of the user who initiated the Payment Request35RequestForPayment.PaymentDescription.UserNameRequired
IsAmountModifyAllowedBooleanIndicates whether amount modification is allowed. See Rules section-RequestForPayment.PaymentDescription.IsAmountModifyAllowedRequired
PaymentDueDateStringPayment due date. See Rules section70RequestForPayment.PaymentDescription.PaymentDueDateRequired
NotesStringFree text140RequestForPayment.PaymentDescription.NotesOptional
Rules
  • UltimateCreditor Name:
    • If provided, OriginatorType must be BUSINESS or GOVERNMENT.
    • FedNow: Supported for BUSINESS and GOVERNMENT.
    • RTP: Supported for BUSINESS.
  • Amount: Supports up to two decimal places. Maximum amount validation is based on network-specific limits.
  • OriginatorType (CONSUMER): UltimateCreditor fields must not be provided.
    • FedNow & RTP: Supported for CONSUMER.
  • OriginatorType (BUSINESS / GOVERNMENT): UltimateCreditor fields are optional.
  • IsAmountModifyAllowed: If set to true, the debtor may modify the requested amount.
  • PaymentDueDate: Format must be YYYY-MM-DD, allowing only the current date or a future date.
NOTE
  • The X-Request-ID header is required for all payment requests.
  • It must be a unique UUID.
  • If a request is repeated using the same X-Request-ID, it will not be processed again and will return a duplicate error.

Success Response Fields

FieldsTypeDescriptionPath
PmtHubTrakIdString (35)Unique ID per transactionPmtHubTrakId
StatusStringStatus of the transactionStatus
Other FieldsObjectRemaining fields mirror the RequestForPayment object from the request. Refer to the field descriptions in the “Request Fields” section above
NOTE
  • The initial Status will be 'Pending'.
  • The status (Accepted or Rejected or Cancel) will be delivered through EES events.
  • The X-Request-ID used in the request header is returned in every response header.

Failure Response Fields

FieldsTypeDescriptionPathReq/Opt
ResponseCodeStringProduct-specific error codeResponseCodeRequired
DescriptionStringOverall error descriptionDescriptionRequired
MessageSourceStringSource of the errorMessageSourceRequired
DetailsArrayList of specific validation or system errorsDetailsRequired
CodeStringError or fault codeDetails[].codeRequired
CategoryStringError classification (Enum: Error, Fault, Warning, Overridden)Details[].CategoryRequired
LocationStringField location in the payload. This value may be emptyDetails[].LocationRequired
ElementStringJSON field causing the issue. This value may be emptyDetails[].ElementRequired
ElementValueStringProblematic field value. This value may be emptyDetails[].ElementValueRequired
OriginalTransactionDetailsObjectDetails of the original transaction when a duplicate request is detected. See Rules sectionOriginalTransactionDetailsOptional
PmtHubTrakIdStringExisting transaction ID. See Rules sectionOriginalTransactionDetails.PmtHubTrakIdOptional
StatusStringStatus of the existing transaction (Enum: Pending, Failed, Accepted, Rejected, Completed, Expired). See Rules sectionOriginalTransactionDetails.StatusOptional
LogIdStringUnique identifier for troubleshootingLogIdRequired
Rules
  • OriginalTransactionDetails: Returned only when a duplicate request is identified through the X-Request-ID.
  • PmtHubTrakId: Returns the unique identifier of the original transaction request.
  • Status: Returns the status of the original transaction request.

2. Respond to Payment Request API

The Respond to Payment Request API enables Debtor Financial Institutions to process and respond to Payment Requests received through the Instant Payments Network. This API allows the debtor’s institution to accept or reject incoming Payment Requests, completing the response stage of the Payment Request lifecycle.

Key Features

  • Accept: Allows debtors to approve Payment Requests and proceed with fund transfer initiation
  • Reject: Allows debtors to decline Payment Requests with appropriate reason code
  • Amount Modification: Support partial payments when allowed by the original Payment Request

Workflow

  • A PATCH API request is sent with the required body and authorization containing the debtor's response.
  • The request is validated by the API's business layer.
  • If the request passes all validations, a Respond to Payment Request (pain.014) message is constructed and sent to the Instant Payments Network.
  • The API responds with a status of 'Initiated', indicating that the response has been successfully submitted to the network.
  • If the Payment Request is accepted by the debtor, the financial institution can proceed to initiate the associated payment transfer.
  • PayCenter sends EES 800 events to notify the response status and any subsequent payment processing.

Request Fields

FieldsTypeDescriptionMax LenPathReq/Opt
StatusStringDebtor's response status (Enum: Accepted, Rejected)140StatusRequired
AmountStringAmount accepted by the Debtor. See Rules section34AmountConditional
ReasonCodeStringReason for rejection. See Rules sectionNAReasonCodeConditional
NotesStringFree text140NotesOptional
UserNameStringDefines the name of the user who initiated the request35UserNameRequired
Rules
  • PmtHubTrakId: Provide the PmtHubTrakId from the inbound Payment Request (pain.013) received via the EES 800 event.

  • Amount: Required only if the Status is 'Accepted'.

  • ReasonCode: Required only if the Status is 'Rejected'. The code must be one of the following valid values:

    FedNow Supported Reason Codes
    CodeDescription
    AC06Blocked Account
    AG01Transaction forbidden
    AG03Transaction not Supported
    AM14Amount Exceeds
    BE04Invalid Creditor Information
    BE07Invalid Debtor Information
    CH11Creditor Identifier Incorrect
    DS04Order Rejected
    MD07Invalid Customer Information
    AM09Invalid amount
    CUSTRequested by customer
    NARRCustom narrative (details provided separately)
    RTP Supported Reason Codes
    CodeDescription
    AC06Blocked Account Number
    AG01Forbidden Account Number
    AG03Unauthorized Account Number
    AM09Wrong Amount
    AM14Transaction Limit Exceeded
    BE04Invalid Creditor Information
    BE07Invalid Debitor Information
    CH11Creditor Identifier Incorrect
    CUSTRequested By Customer
    DS04Order Rejected
    MD07Invalid Customer Information
    NARRReason is provided as narrative information.
    SL12Debtor has indicated it does not wish to receive RFPs from the Creditor.

Success Response Fields

FieldsTypeDescriptionPath
StatusStringStatus of the responseStatus
DescriptionStringDetailed status descriptionDescription
NOTE
  • The initial status will be 'Initiated'.
  • The status of the transaction (Accepted or Rejected) will be provided through EES events.

Failure Response Fields

FieldsTypeDescriptionPathReq/Opt
ResponseCodeStringProduct-specific error codeResponseCodeRequired
DescriptionStringOverall error descriptionDescriptionRequired
MessageSourceStringSource of the errorMessageSourceRequired
DetailsArrayList of specific validation or system errorsDetailsRequired
CodeStringError or fault codeDetails[].codeRequired
CategoryStringError classification (Enum: Error, Fault, Warning, Overridden)Details[].CategoryRequired
LocationStringField location in the payload. This value may be emptyDetails[].LocationRequired
ElementStringJSON field causing the issue. This value may be emptyDetails[].ElementRequired
ElementValueStringProblematic field value. This value may be emptyDetails[].ElementValueRequired
LogIdStringUnique identifier for troubleshootingLogIdRequired

3. Get Payment Request API

The Get Payment Request API retrieves the current status and detailed information for a previously submitted payment request.

Workflow

  • A GET API request is sent with the required path parameter or query parameter and authorization.
  • The request is validated by the API's layer.
  • The system looks up the payment request using either the PmtHubTrakId or X-Request-ID.
  • If the payment request exists and is within the last 30 days, the corresponding details are returned.
  • If the payment request does not exist, is older than 30 days, or if validation fails, an appropriate error response is returned.

Lookup Methods

A transaction can be retrieved using one of the following unique identifiers:

I. Get Payment Request by PmtHubTrakId

  • Passed as a Path Parameter.
  • Use the PmtHubTrakId returned from the original Payment Request API.

II. Get Payment Request by X-Request-ID

  • Passed as a Query Parameter.
  • Use the X-Request-ID unique identifier (UUID) sent in the original Payment Request API header.

Success Response Fields

FieldsTypeDescriptionPathReq/Opt
PmtHubTrakIdStringUnique transaction identifierPmtHubTrakIdRequired
NetworkPrimaryReferenceIdStringNetwork-assigned reference identifierNetworkPrimaryReferenceIdRequired
PmtRailTypeStringPayment network type (Enum: FedNow, RTP)PmtRailTypeRequired
EndtoEndIdStringEnd-to-end transaction identifierEndtoEndIdRequired
SenderRTNStringCreditor routing numberSenderRTNRequired
SenderAccountNumberStringCreditor account number (partially masked)SenderAccountNumberRequired
SenderAccountTypeStringCreditor account type (Enum: Checking, Savings, MICR)SenderAccountTypeRequired
SenderNameStringCreditor nameSenderNameRequired
ReceiverRTNStringDebtor routing numberReceiverRTNRequired
ReceiverAccountNumberStringDebtor account number (partially masked)ReceiverAccountNumberRequired
ReceiverAccountTypeStringDebtor account type (Enum: Checking, Savings, MICR)ReceiverAccountTypeRequired
ReceiverNameStringDebtor nameReceiverNameRequired
UltimateCreditorNameStringUltimate creditor nameUltimateCreditorNameRequired
UltimateDebtorNameStringUltimate debtor nameUltimateDebtorNameRequired
RequestAmountNumberRequested payment amountRequestAmountRequired
IsPaymentModificationAllowedBooleanAmount modification permission flagIsPaymentModificationAllowedRequired
PaymentDueDateStringPayment due date (YYYY-MM-DD)PaymentDueDateRequired
StatusStringPayment request status (Enum: Pending, Accepted, Rejected, Expired, Failed, Completed)StatusRequired
ReasonStringRejection reason code (when Status is Rejected)ReasonRequired
DirectionStringTransaction direction (Enum: Inbound, Outbound)DirectionRequired
TransactionNotesStringAdditional transaction notesTransactionNotesRequired
TransactionDateStringTransaction creation timestampTransactionDateRequired
PaymentObjectAssociated payment details (when Status is Completed)PaymentOptional
TransactionReceiptIdStringPayment receipt identifierPayment.TransactionReceiptIdOptional
NetworkPrimaryReferenceIdStringPayment network reference identifierPayment.NetworkPrimaryReferenceIdOptional
PmtHubTrakIdStringPayment transaction identifierPayment.PmtHubTrakIdOptional
TransactionAmountNumberActual payment amountPayment.TransactionAmountOptional
StatusStringPayment transaction status (Enum: Pending, Accepted, Rejected)Payment.StatusOptional
NOTE
  • Status Values:
    • Pending - Payment request is awaiting debtor response
    • Accepted - Payment request was accepted by the debtor
    • Rejected - Payment request was rejected by the debtor or network
    • Expired - Payment request exceeded the due date without response
    • Failed - Payment request failed due to system error or validation failure
    • Completed - An associated payment was received
  • Transaction details can be retrieved for a maximum of 30 days from the date the payment request was created.

Failure Response Fields

FieldsTypeDescriptionPathReq/Opt
ResponseCodeStringProduct-specific error codeResponseCodeRequired
DescriptionStringOverall error descriptionDescriptionRequired
MessageSourceStringSource of the errorMessageSourceRequired
DetailsArrayList of specific validation or system errorsDetailsRequired
CodeStringError or fault codeDetails[].codeRequired
CategoryStringError classification (Enum: Error, Fault, Warning, Overridden)Details[].CategoryRequired
LocationStringField location in the payload. This value may be emptyDetails[].LocationRequired
ElementStringJSON field causing the issue. This value may be emptyDetails[].ElementRequired
ElementValueStringProblematic field value. This value may be emptyDetails[].ElementValueRequired
LogIdStringUnique identifier for troubleshootingLogIdRequired