What you can build with Endl
- Onboard and verify customers
KYC for individuals and KYB for businesses, with document upload and hosted verification links. - Move money across borders
Price a transfer, lock the rate in, fund it, and track it through to settlement. - Open and manage accounts
Open accounts, read balances, and pull activity. Start with the Accounts guide. - Custody wallets across networks
Create wallets and provision them on additional networks. - React to events in real time
Signed webhook deliveries, or a replayable feed you poll on your own schedule.
Get started
Authentication
One header and one key. Start here.
API reference
All 95 endpoints, each with a request playground.
Webhooks guide
The delivery contract — signing, verification, and what never fires.
Accounts guide
What an account is,
FIAT vs ONRAMP, and the whole lifecycle.Quotes guide
The three shapes, the limits that reject a price, and the ten minutes.
Wallets guide
Custodial addresses — one EVM wallet for all five EVM networks — and what the balance really returns.
FAQ
The questions partners ask most often, answered.
POBO
Pay out on behalf of a named originator.
Errors
The shared envelope, and what each status code means.
Base URL
All endpoints are served from one host and versioned in the path.Authentication
Every request carries one header,API-KEY. There is no login step, no token
exchange and no secret. Keys are scoped to your partner account and carry
individual permissions — a key without the permission an endpoint requires fails
with 403, raised at the edge before the request reaches the service.
Response
Key platform components
Onboarding
Verify your end customers before they move money — KYC for individuals, KYB
for businesses. 8 endpoints under
/api/v0/customer.Partner API
Wallets, quotes, recipients, accounts, transactions and reference data.
35 endpoints under
/api/v0.Webhooks
Subscriptions, delivery inspection and the PULL event feed. 10 endpoints
under
/api/v0/webhooks.POBO
Pay out on behalf of a named originator, through Paywho rails. 13 endpoints
under
/api/v0/pobo.Cards
Issue virtual and single-use cards, fund the card balance, and follow every
transaction by webhook. 24 endpoints under
/api/v0.Gift Cards
Order gift cards and retrieve redemption codes. Signed with HMAC-SHA256.
5 endpoints.
/api/v0 are unwrapped — the body is the object itself,
with no { data, code, message, status } envelope. That holds for the Partner,
Onboarding and POBO surfaces alike.
The Webhooks API is the exception: its service responses do use the shared
envelope. And errors raised at the edge — a rejected key, a tripped rate
limit — use the envelope on every surface. See
Errors and the response envelope.
A typical payout
Four calls take a verified customer from a new recipient to settled money.- Prepare the recipient. Ask which fields the corridor requires, collect exactly those, then add the recipient. Requirements vary by currency and rail, and are not guessable.
- Price it. Generate a quote. The rate and fees hold for ten minutes, and the quote backs exactly one transaction.
- Check it. Create a pre-transaction to check the quote, recipient, wallet and KYC together. It moves no money; Endl debits the source when you submit. See the Transactions guide.
- Submit and track. Submit,
then either poll Get transaction
or subscribe to
payout.completedand let a webhook tell you.
Conventions
Webhook signatures
Endl signs every PUSH delivery with HMAC-SHA512 over the raw request body. Verify the signature against the exact bytes received, before parsing, and compare digests in constant time. Worked Python and Node examples are on Verifying signatures. PULL feed responses are unsigned — you are reading from Endl over an authenticated connection, so there is nothing to verify.Getting help
Start with the FAQ — it covers authentication failures, response shapes, pagination, retries and webhook verification. Webhook problems are usually answered by List deliveries, which records every attempt along with the response your endpoint returned. If that does not resolve it, contact your Endl representative with the failing request, the response body, the timestamp, and theX-Request-ID from the
response — that id joins straight to our logs.