execution you can read back.
Two wallets are involved: the account’s wallet, where the money starts, and a Venly-held escrow wallet that holds the reserved amount until it settles. Settling moves the money to the company’s settlement wallet — your platform’s wallet for collected payments; reversing returns it to the account wallet.
Payment request vs. transfer
A transfer sends money to another account in one move. A payment request reserves the money first and resolves it later — the pattern card and merchant payments need, where the final amount is known only after authorization.The flow
- Create — money is reserved from the account wallet into escrow. The request is
RESERVED. - Adjust (optional) — raise or lower the reserved amount while it’s
RESERVED. - Settle or reverse — settle sends the money to the company’s settlement wallet; reverse sends it back to the account. Either way the request reaches a final state.
Create a payment request
Response
reserved balance. There are two ways to create a request:
| Endpoint | Use when |
|---|---|
For an account — POST /accounts/{accountId}/payment-requests | you have the Venly accountId. |
By card provider — POST /payment-requests | you have a card-provider reference; the account is resolved from cardProviderReference. |
Settle
Settle moves the money from escrow to the company’s settlement wallet. The response isstatus: SETTLING, and the request becomes SETTLED once the on-chain transfers confirm. The settlement amount doesn’t have to equal the authorized amount:
Settlement amount | What happens |
|---|---|
| Equal to authorized | the reserved amount settles |
| Below authorized | the difference goes back to the account wallet; the rest settles |
| Above authorized | the reserved amount settles and the extra is collected from the account wallet |
Reverse
Reverse sends the full reserved amount back to the account wallet. The response isstatus: REVERSING, becoming REVERSED once the transfer confirms. Use it to release a hold you no longer need to charge.
Adjust the amount
Update sets a new authorizedamount while the request is RESERVED. A lower amount sends the difference back to the account; a higher amount reserves more from it. After the update, amount shows the new value and originalAmount keeps the amount you started with.
Amounts carry fiat and crypto
Every amount on a payment request is an object that shows both sides of the conversion:fiat is the value in the request currency; crypto is the stablecoin amount that actually moves on-chain. This applies to amount, originalAmount, settlementAmount, settledAmount, and shortfallAmount.
Status at a glance
status | Meaning |
|---|---|
RESERVED | money is held — ready to settle, reverse, or adjust |
SETTLING → SETTLED | settlement is processing, then complete |
SETTLED_WITH_SHORTFALL | settled, but less than the full settlement amount was collected — see shortfallAmount |
REVERSING → REVERSED | reversal is processing, then complete |
execution carries its own type (AUTHORIZATION, INCREMENTAL_AUTHORIZATION, AUTHORIZATION_ADJUSTMENT, SETTLEMENT, SETTLEMENT_OVERAGE, REFUND, REVERSAL), status, and transactionHash.
There’s no GET endpoint for a payment request. The full object — including
executions — comes back on create, settle, reverse, and update, so store the response and match on your own externalId.Safe retries
Send a freshidempotencyKey for each new request. To retry, reuse the same key with the same body and you’ll get the original result back instead of a second charge. See Idempotency.
Next steps
Settle a payment request
Finalize a reserved payment, with exact, lower, and higher amounts.
Wallets & balances
How reserved money shows up in a wallet balance.

