GET /embedded-banking/v1/instant-payment-eligibility/{routingNumber}
The lookup takes a 9-digit ABA routing number. A number that fails the ABA checksum returns 400 with errorCode: VALIDATION_ERROR.
Example Response
rails always holds one entry per rail, RTP first. availableRails lists the rails whose answer is ELIGIBLE, and is empty when there are none. bankName is the name the RTP list gives the bank, or the FedNow list’s name when only FedNow lists it.
Required scope:
transfer:write:org, on a user or app token. The lookup needs no per-rail scope.What each answer means
A routing number on neither list returns
200, both rails UNKNOWN, no bankName, and an empty availableRails:
Example Response
UNKNOWN isn’t a refusal. Tesouro sends the payment and the receiving network decides. When a rail’s list isn’t available, that rail’s entry has no asOfDate.
What the answer does not promise
Each answer comes from the rail’s participant list, as of the business date inasOfDate. Tesouro loads the RTP and FedNow lists every business day. That makes the answer:
- About the bank, not the account. A bank that is
ELIGIBLEcan still reject a credit to a particular account. - As of a list date, not live. A change in a bank’s participation shows up only once a newer list loads.
- Not a promise that the payment posts. An
ELIGIBLEbank can still decline or fail to post a payment after Tesouro accepts it.
When a send is refused
An RTP or FedNow send to a bank whose answer for that rail isNOT_ELIGIBLE fails with 422 Unprocessable Entity and isn’t sent. The body names the rail, the list date, and the rails the bank can receive on:
Example Response
availableRails, with a new idempotencyKey. An empty availableRails means no rail is ELIGIBLE, not that every rail refuses: a rail the lookup answers UNKNOWN still sends. When the lookup answers NOT_ELIGIBLE on both rails, send by ACH instead.
Sandbox
Sandbox callers get answers from the same live participant lists, and their sends are refused the same way. There are no test routing numbers that force an answer. To exercise aNOT_ELIGIBLE path, look up a real routing number the lists place on one rail only.