What is different
Internal UUIDs are never exchanged on this surface. Every identifier you send or
receive is a reference id, and the prefix tells you what it points at.
Base URL
Every POBO endpoint lives under
/api/v0/pobo.
Authentication
The same single header as the rest of the Endl API, and the key must carry thepobo permission.
pobo is rejected with 403, raised at the edge before the
request reaches the service. See Authentication.
Paywho only
This is the constraint most likely to surprise you. A POBO quote must resolve to a Paywho route. That means either:- a Paywho-supported currency on a bank-transfer rail, or
INRonBANK_TRANSFER,IMPS,UPIorCRYPTO
USD → EUR over ACH, for example —
is refused:
400
ERRTXN_1001 in
errors[0].code.
The sender is mandatory
senderId is required on every POBO transaction, at both
pre-transaction and
submit. That is the entire purpose of
the surface: the payment is made on behalf of a named originator, and the record
carries who that was.
Before a sender can be used for a payout it needs three things:
A sender created without them is accepted, but a payout referencing it will not
proceed.
These three are the minimum, not the full set. A corridor can need more from a
sender. Ask Get sender fields for the
currency and rail you are paying out on — it returns every field that corridor
needs, with its validation rules.
A POBO payout, end to end
- Ask what the corridor needs from the sender.
Get sender fields for the payout
currency and rail. It also tells you whether the corridor supports POBO at all —
poboSupported: falsemeans it does not. - Register the originator. Create sender
with the fields that answer asked for. Keep the
snd_id. - Register the recipient. Ask
Get recipient fields which
fields the corridor needs, then
create the recipient. Keep the
rec_id. - Price it. Generate a quote on a
Paywho route. Keep the
qut_id. - Fund it. Create a pre-transaction
with the quote, the recipient and — mandatorily — the sender. You get deposit
instructions back: send exactly
source_deposit_instructions.amounttosource_deposit_instructions.to_address. - Submit and track. Submit, then
get the transaction by its
txn_id. Both return the same transaction object as the standard surface, withnameOrAliasalways"POBO". Submitted rows are markedalias=POBO.
Conventions
POBO error codes
Branch on
errors[0].code. See Error codes for every code.