This guide uses the following endpoints
To create a FedNow Send payment
- Check destination FI’s FedNow Receiving capability
- Get the Account ID
- Create the FedNow payment
- Get status updates
1. Check destination FI’s FedNow Receiving capability
Since FedNow is a relatively new payment rail, not all financial institutions (FIs) are set up to receive payments. To verify if a destination FI will accept FedNow payments, make aGET /fednow/routing_number/
request with the destination FI’s routing number. If both the online
and receive
fields return true
, proceed to the next step. If either field returns false
, you can either inform the end user that the FedNow payment cannot be completed because the destination FI doesn’t accept FedNow payments, or reroute the payment through a fallback payment rail, such as ACH.
2. Get the Account ID
Obtain the account ID for sending a FedNow payment by making aGET /account
request, which returns a list of all accounts.
id
of the account you wish to send funds from. Verify that the account is neither locked nor closed before proceeding.
3. Create the FedNow payment
Create the FedNow payment by initiating aPOST /fednow
request. The security_context
object requires two fields: ip_address
(the originating requestor’s IP address) and user_agent
(the originator’s browser or device). An optional originator_name
field allows you to modify the sender name for third-party sender scenarios.
pending
status.
status
vs external_status
clarification
The status
field indicates the FedNow object’s current state within Treasury Prime’s system. In contrast, the external_status
field shows how the payment is being processed at the external financial institution. For instance, a FedNow payment might have a status
of sent
(meaning Treasury Prime successfully transmitted it) while having an external_status
of rejected
(indicating the receiving financial institution declined to accept it). See below for a list of the various FedNow scenarios and their associated external_status
.
Insufficient funds on account behavior
FedNow payments may occasionally fail due to insufficient funds in the sending account. When this happens, the FedNow object’s status will change toerror
, and the error
field will display an insufficient funds message.
4. Get status updates
There are two ways to find out when the status of the FedNow payment has changed:Manually checking for status updates
To retrieve the latest status of a FedNow payment, make aGET /fednow/{id}
request with the FedNow object’s ID.
status
field has changed to sent
and the external_status
field has updated to done
.
Listening to status updates with webhooks
Set up afednow.create
webhook to receive notifications about newly created FedNow Send objects and a fednow.update
webhook for status changes. For implementation examples, see the webhooks section in the FedNow Overview. Since FedNow is an instant payment system, transactions will progress through various statuses rapidly.
Modifying originator name on FedNow payment
When Programs originate a FedNow payment, the system automatically assigns a sender name—the primary person for personal accounts or the business name for business accounts. This name appears as the originator on the FedNow transaction at the receiving financial institution. Programs acting as Third Party Senders may need to modify this sender name. To customize the sender name, simply set theoriginator_name
field to your desired value.
Modifying originator names may require bank approval. Please discuss with your bank partner(s) to implement.
FedNow Send scenarios and corresponding statuses
Most FedNow payments are accepted by the receiving financial institution (FI), though some may be rejected or placed in an “Accepted Without Post” status. The table below details the various FedNow Send scenarios with their correspondingexternal_status
values.
Scenario | Description | External Status |
---|---|---|
Accepted | FedNow payment successfully sent and accepted by the receiving financial institution (FI). | done |
Rejected | The receiving FI rejected the FedNow payment and will send an inbound payment to return the funds. | rejected |
ACWP | Accepted Without Post (ACWP) means the receiving FI received the payment but did not post the transaction. The receiving FI’s staff will manually review the transaction. During this review, the external status remains pending until a final decision is reached. There are three possible final outcomes listed below. | pending |
ACWP - Accepted | Receiving FI reviewed and accepted the payment, posting it to the recipient account. | done |
ACWP - Blocked | Receiving FI reviewed and decided not to post the payment, and will not return the payment. | blocked |
ACWP - Rejected | Receiving FI reviewed and rejected the payment. The receiving FI will initiate an inbound FedNow payment to return funds. | rejected |
Handling FedNow returns
While FedNow payments are described as irrevocable, in rare instances, the receiving financial institution may return a payment, typically when payments are rejected. When this happens, you’ll see a separate inbound FedNow transaction matching the amount of the original payment, with therelated_fednow_ids
field containing the original payment’s ID. You can use this ID to identify the payment as a return and notify the end user. Note that the status of the original payment will remain unchanged.
Example of inbound FedNow return transaction with related_fednow_ids
populated
Below is a return example for the FedNow payment originated in the steps above. Note that the related_fednow_ids
field contains the original FedNow object ID, allowing you to connect this return with the initial payment.