sk_ key can create a withdrawal request but cannot move a payer’s
funds by itself. The payer should review the recipient before signing; never
sign a withdrawal link you did not expect.
Fees
Withdrawal resolves the same two rates as Checkout and Deposit: Hypermid’s fee plus an optional developer fee on the same payer-input amount. The developer fee defaults to 0, is limited to 0–100 basis points, and requires a recipient when positive. A partner-specific Hypermid override replaces the global rate outright. A same-token EVM transfer is the zero fee exception because its plain transfer has no fee-taking route. Cross-asset EVM developer earnings are held by Hypermid and settled periodically by manual transfer. If a Near deposit-address route is used, its provider keeps half of each declared app fee and pays the developer leg directly.Payout addresses
Withdrawal recipients are supplied per session and are not checked against the checkout payout allowlist. The payout-address screen is for proving merchant-controlled checkout destinations; it is not a prerequisite for this withdrawal request. Validate the recipient for its chain before creating the session and use the appropriate operational controls for your product. For checkout destinations, add an address through Payout addresses in the partner portal. The portal sends an emailed verification code bound to the exact address, chain, action, and environment; enter that code to approve the change. The backend applies the change and its audit record together.1
Request a verification code
Enter the address in the portal and request a code. It is bound to this
exact payout-address change.
2
Enter the emailed code
Enter the code from the merchant security email in the portal.
3
Confirm the change
The address is added to the environment-specific checkout allowlist after
the code is verified.
GET /v1/payments/payout-addresses; remove with
DELETE /v1/payments/payout-addresses/{chain}/{address}.
Withdrawals never offer the send-to-an-address flow. The wallet is the source,
so there is nothing to mint a deposit address for, and the backend rejects the
attempt rather than failing later.