Run a batch of cross-border payments: assess, assess, prepare
run_paymentsPrepares a batch of cross-border payments for approval: validates each payee, prices each route and drafts each instruction for the business's own bank, provider or wallet. Send the payables (payables: a JSON list; file: a payout CSV or pain.001; or xero: a Xero bills reply) with source_currency. Each payment is verified (changed bank details against previous, duplicates, missing fields), assessed (route assessment_id with Rate Receipts: who published each figure, when it was read, its evidence type) and given an instruction for the business's own bank, provider or wallet (a CSV row, or an unsigned stablecoin transaction). Each is prepared, needs_attention (with the reason) or no_evidence. Returns run_id. An agent prepares; a named person approves. Never sends or moves money. A router key runs real payables; without one, sample: true returns the synthetic sample run. Same as POST /api/v1/payment-runs.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | Instead of payables: a payout CSV or pain.001 text. | |
| sort | No | Your chosen order for the routes: landed cost against the official rate, stated days to land, or the measured 7-day answer rate. It is your order, stated as yours; SwapEazi does not rank routes. | |
| policy | No | { approver_role, material_threshold: { amount, currency }, agent_may_record_approval } | |
| sample | No | true: the built-in sample run (synthetic, labelled), no key needed. | |
| payables | No | [{ reference, payee: { name, iban?, bic?, account_number?, routing_number?, branch_code?, country? }, amount, currency, due_date?, rail?: bank | provider | stablecoin, via?, wallet? }] | |
| previous | No | The previous run's payables, for changed bank details and amount jumps. Not kept. | |
| access_key | No | A router key (rk_...), if not sent as a Bearer header. | |
| exclude_types | No | Leave out routes of these rail types. Each route left out is listed with the reason. | |
| include_types | No | Keep only routes of these rail types. Each route left out is listed with the reason. | |
| min_answer_rate | No | Percent, 0 to 100: leave out routes whose measured 7-day answer rate is lower, or not measured (not enough reads). Each is listed with the reason. | |
| source_currency | No | The currency the business pays from, e.g. ZAR. |