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. Because FedNow is an instant payment service, you cannot cancel the transaction after creating.
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 FedNow Send Scenarios and Corresponding Statuses for a list of the various FedNow scenarios and their associated external_status values, and FedNow Status and External Status Mappings for a visual representation of how these statuses relate to each other.
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 noting that the account balance is lower than the requested amount (ex: Not enough funds: 186.88 < 200.00).
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 status and external_status mappings
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. Additionally, the external_status on the original payment will update to rejected.
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.