Charge vs escrow
How it works
1
Create the charge
POST /api/v1/charges with the amount, a title, your own merchantReference, and a redirectUrl. You get back a checkout url.2
Send the payer to the URL
No DHMAD account is needed. The payer enters an email for the receipt and pays by card, PayPal, or bank transfer. It does not have to be the person who will be credited on your side.
3
Credit your user from the webhook
escrow.status.updated fires with merchantReference and receiptEmail. Look up your own record from merchantReference and credit it. Ignore receiptEmail for anything except receipts.Beneficiary vs payer
The person who benefits from a charge and the person who pays it are separate:- The beneficiary lives entirely on your side. DHMAD only sees your opaque
merchantReference, so a manager can pay for an employee’s credits without either of them sharing an account. - The payer is whoever opens the URL. DHMAD collects their email at checkout for the receipt and reports it back as
receiptEmail.
merchantReference, never from receiptEmail.
Idempotency
merchantReference is unique per developer and acts as the idempotency key. Creating a charge again with the same reference returns the original charge (with a fresh checkout URL if the previous one expired) instead of charging twice. That makes it safe to retry a failed request, and it is also how you resume an abandoned payment.
Requirements
- Your developer account must have a business account. Funds settle into that business’s DHMAD wallet.
- In live mode, the business must pass KYB before it can take charges.
redirectUrlmust match one of the allowed redirect URLs in your Developer Dashboard.