Skip to main content

Overview

The JH PayCenter Instant Payments API enables Financial Institutions (FIs) and their partners to integrate real-time payment capabilities seamlessly, ensuring fast, efficient, and secure movement of funds across supported networks.

Payment APIs

  1. Payment API
  2. Get Payment API

1. Payment API

  • The Payment API enables users to securely transfer funds from one bank account to another.
  • Transactions can be initiated 24/7, providing flexibility and convenience. Financial institutions can use this API to allow customers to initiate payments efficiently through supported networks.

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 debtor account inquiry is performed to validate and verify account details.
  • A fraud check is triggered (if configured).
  • If the request passes all validations, a debit transaction is initiated on the debtor’s account.
  • Once the debit succeeds, a Credit Transfer message (pacs.008) is sent to the Instant Payments Network.
  • The API responds with a 'PmtHubTrakId' and a status of 'Pending', indicating that the transaction has been submitted to the network.
  • After the network processes the transaction, PayCenter sends EES 800 events through the JHA EES system with the final status:
    • Accepted (Acpt) – Payment settled
    • Rejected (Rej) – Payment failed
  • If the transaction is rejected by the network or the creditor, the funds will be returned to the debtor’s account shortly.

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

High-Level Diagram

Request Fields

FieldsTypeDescriptionMax LenPathReq/Opt
NameStringDebtor Name140CreditTransfer.Debtor.NameRequired
AccountNumberStringDebtor Account Number34CreditTransfer.Debtor.AccountNumberRequired
AccountTypeStringDebtor Account Type (Enum: Checking, Savings, MICR)NACreditTransfer.Debtor.AccountTypeRequired
NameStringUltimate Debtor Name. See Rules section140CreditTransfer.Debtor.UltimateDebtor.NameOptional
InitiatingPartyStringLegal name of the party initiating payment instructions on behalf of the Debtor (RTP supported). See Rules section140CreditTransfer.Debtor.InitiatingPartyOptional
NameStringCreditor Name140CreditTransfer.Creditor.NameRequired
RoutingNumberStringCreditor Routing Number9CreditTransfer.Creditor.RoutingNumberRequired
AccountNumberStringCreditor Account Number34CreditTransfer.Creditor.AccountNumberRequired
NameStringUltimate Creditor Name140CreditTransfer.Creditor.UltimateCreditor.NameOptional
AmountNumberAmount to be transferred (Min: $0.01). See Rules section-CreditTransfer.CreditTransferDescription.AmountRequired
TransferFeeNumberTransfer fee for the transaction. See Rules section-CreditTransfer.CreditTransferDescription.TransferFeeOptional
OriginatorTypeStringDefines the Originator Type (Enum: CONSUMER, BUSINESS, GOVERNMENT). See Rules section-CreditTransfer.CreditTransferDescription.OriginatorTypeRequired
UserNameStringDefines the name of the user who initiated the transfer35CreditTransfer.CreditTransferDescription.UserNameRequired
NotesStringFree text140CreditTransfer.CreditTransferDescription.NotesOptional
RfPPmtHubTrakIdStringPmtHubTrakId of the Inbound RfP. See Rules section35CreditTransfer.PaymentRequestDetails.RfPPmtHubTrakIdConditional
Rules
  • UltimateDebtor Name:
    • If provided, OriginatorType must be BUSINESS or GOVERNMENT.
    • FedNow: Supported for BUSINESS and GOVERNMENT.
    • RTP: Supported for BUSINESS.
  • InitiatingParty: Supported for RTP use cases. FedNow OBO requirements do not require InitiatingParty and are governed by FedNow Operating Procedures.
  • Amount: Supports up to two decimal places. Maximum amount validation is based on network-specific limits.
  • TransferFee: Supports up to two decimal places. Applicable only for Payment transactions.
  • OriginatorType (CONSUMER): UltimateDebtor fields must not be provided.
    • FedNow & RTP: CONSUMER is supported.
  • OriginatorType (BUSINESS / GOVERNMENT): UltimateDebtor fields are optional.
  • PaymentRequestDetails: Required only when making a payment against an inbound Payment Request (pain.013).
  • RfPPmtHubTrakId: Provide the PmtHubTrakId from the inbound Payment Request (pain.013) received via the EES 800 event.
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 CreditTransfer object from the request. Refer to the field descriptions in the "Request Fields" section above.
NOTE
  • The initial status will be 'Pending'.
  • The final status (Accepted or Rejected) will be delivered through EES events.
  • The X-Request-ID used in the request header is returned in every response header.
  • For Payment transactions, the TransferFee is returned in the response as provided in the request.
  • For payments against inbound RfP transactions, the TransferFee field will not be returned in the response.

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 transaction ID of the original transaction request.
  • Status: Returns the status of the original transaction request.
NOTE

If the HTTP status code is 504 (Gateway Timeout), the transaction may have been processed by the network. Before retrying the payment request, it is recommended to call the Get Payment API by X-Request-ID to confirm the actual transaction status. Retrying the payment without verification may result in duplicate transactions.

2. Get Payment API

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

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 business layer.
  • The system looks up the payment using either the PmtHubTrakId or X-Request-ID.
  • If the payment is found, the API returns the details for requests created within the last 30 days.
  • If the payment is not found 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 by PmtHubTrakId

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

II. Get Payment by X-Request-ID

  • Passed as a Query Parameter.
  • Use the X-Request-ID unique identifier (UUID) sent in the original Payment 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
SenderRTNStringDebtor routing numberSenderRTNRequired
SenderAccountNumberStringDebtor account number (partially masked)SenderAccountNumberRequired
SenderAccountTypeStringDebtor account type (Enum: Checking, Savings, MICR)SenderAccountTypeRequired
SenderNameStringDebtor nameSenderNameRequired
ReceiverRTNStringCreditor routing numberReceiverRTNRequired
ReceiverAccountNumberStringCreditor account number (partially masked)ReceiverAccountNumberRequired
ReceiverAccountTypeStringCreditor account type (Enum: Checking, Savings, MICR)ReceiverAccountTypeRequired
ReceiverNameStringCreditor nameReceiverNameRequired
InitiatingPartyStringInitiating Party nameInitiatingPartyRequired
UltimateCreditorNameStringUltimate creditor nameUltimateCreditorNameRequired
UltimateDebtorNameStringUltimate debtor nameUltimateDebtorNameRequired
TransactionReceiptIdStringPayment receipt identifierTransactionReceiptIdRequired
ReversalTransactionReceiptIdStringReversal transaction receipt identifier (when applicable)ReversalTransactionReceiptIdRequired
AmountNumberActual payment amountAmountRequired
TransferFeeNumberTransfer fee for the transactionTransferFeeRequired
StatusStringPayment status (Enum: Pending, Accepted, Rejected, Failed)StatusRequired
ReasonStringRejection reason code (when Status is Rejected)ReasonRequired
DirectionStringTransaction direction (Enum: Inbound, Outbound)DirectionRequired
TransactionNotesStringAdditional transaction notesTransactionNotesRequired
TransactionDateStringTransaction creation timestampTransactionDateRequired
NOTE
  • Status Values:
    • Pending - Payment is being processed by the network
    • Accepted - Payment was successfully settled
    • Rejected - Payment was rejected by the network or creditor
    • Failed - Payment failed at the API level
  • Transaction details can be retrieved for a maximum of 30 days from the date the payment 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