Charges the payer and moves the escrow from draft → invite_pending.
Wallet — synchronous. Funds are deducted from the wallet balance, escrow is
activated immediately. Returns { status: "funded" }.
Saved card — synchronous. Paystack’s charge_authorization responds immediately.
On success the escrow is activated in the same request. Returns { status: "funded" }.
Bank transfer — asynchronous. The user’s permanent Paystack DVA (Dedicated Virtual
Account) is returned. The user transfers the exact amount shown. Paystack fires a
charge.success webhook (channel: dedicated_nuban) which activates the escrow.
Returns { status: "pending", virtual_account }.
Underfunding (bank transfer only): If the transferred amount is less than the total
charge, the received funds are credited to the user’s wallet and they are notified via
WhatsApp. The escrow stays in draft. The user can then fund the shortfall from their
wallet balance using payment_method: wallet.
Fee structure: total_charge = escrow_amount + (escrow_amount × 1.5%) + VAT on fee (7.5%).
The counterparty’s 1.5% fee is deducted at release time.
JWT access token obtained from /auth-verify (login context) or /auth-signup. Set the bearer_token environment variable in your API client to apply it globally.
Payment initiated or completed
true
200
wallet and saved_card are synchronous — escrow is funded immediately. bank_transfer is asynchronous — returns DVA details; escrow activates on Paystack webhook.