create, assess, confirm, and status.
vouch.escrow.create(params)
Create a new escrow agreement by specifying the parties, the total amount, and the milestone breakdown. Vouch returns an agreement record including an ID you will use in all subsequent calls.
Parameters
string
required
Your platform’s unique identifier for the buyer — the party that will fund the escrow.
string
required
Your platform’s unique identifier for the seller — the party that will receive disbursements.
number
required
The total agreement value in the base currency unit (e.g., kobo for NGN). Must equal the sum of all milestone amounts.
string
ISO 4217 currency code. Defaults to
"NGN".{ title: string; amount: number }[]
required
An ordered array of milestone objects. Each milestone has a
title (descriptive label) and an amount (in base currency units). Disbursement is unlocked per milestone as both parties confirm.string
Optional email address for the buyer. Vouch may use this for payment instructions and notifications.
string
Optional display name for the buyer, used in communication and agreement records.
Response fields
string
The Vouch-assigned unique identifier for this agreement. Store this — you need it for
assess, confirm, and status calls.string
The developer account ID associated with this agreement.
string
The buyer ID you supplied, echoed back for confirmation.
string
The seller ID you supplied, echoed back for confirmation.
string
Current lifecycle status of the agreement. See the status reference at the end of this page.
string | null
The Nomba-assigned virtual account holder ID for this agreement. May be
null until provisioning completes.string | null
The NUBAN (Nigerian Uniform Bank Account Number) the buyer should transfer funds into. Display this to the buyer after creating the agreement.
string | null
The receiving bank name — typically
"Nomba MFB". Display alongside nombaVirtualAccountNo so the buyer knows where to send payment.number
Total agreement value in base currency units.
string
Currency code for the agreement.
string
ISO 8601 timestamp of when the agreement was created.
object[]
The milestone records associated with the agreement.
vouch.escrow.assess(agreementId, params)
Before collecting funds, run a fraud assessment tied to the agreement. If the assessment passes, Vouch returns a virtual account number the buyer can pay into.
How funding works: Once the buyer transfers to the Nomba virtual account number, Nomba fires a
virtual_account.funded webhook to Vouch automatically. Vouch reconciles the payment, updates the agreement status, and handles partial payments and overpayments — no polling required from your side.Parameters
string
required
The ID of the agreement returned by
vouch.escrow.create().string
required
Your platform’s identifier for the user initiating payment (typically the buyer).
number
required
The amount being assessed in base currency units. This should match the agreement’s
totalAmount or the milestone amount being funded.boolean
Force a VPN detection signal. Sandbox and testing use only.
boolean
Force an impossible travel signal. Sandbox and testing use only.
Response fields
number
Fraud risk score from 0 to 100.
string
"GREEN", "AMBER", or "RED". See the fraud flag reference in the Fraud guide.object
Nomba virtual account payment details for the buyer. Only returned on
GREEN or AMBER responses.The
virtualAccount object is only included in the response when the fraud flag is GREEN or AMBER. A RED flag response will not contain payment details — block the session and do not prompt the user to pay.vouch.escrow.confirm(agreementId, milestoneId, externalUserId)
Confirm that a milestone has been completed. Both the buyer and the seller must call this method for the same milestone before Vouch will release the corresponding funds to the seller.
string
required
The ID of the escrow agreement.
string
required
The ID of the milestone to confirm, from the
milestones[] array on the agreement.string
required
Your platform’s identifier for the user confirming the milestone. Pass the buyer ID when confirming from the buyer’s side, and the seller ID from the seller’s side.
Both parties must confirm independently. Calling
confirm from only one side records that party’s confirmation but does not trigger disbursement. Disbursement happens automatically once Vouch records confirmation from both buyerExternalId and sellerExternalId.vouch.escrow.status(agreementId)
Fetch the current state of an agreement, including the latest milestone statuses and confirmation flags. The response shape is identical to the one returned by create.
AgreementResponse object returned by create. Refer to the create response fields section above for full field documentation.