Lifecycle
1
Create (draft)
Pick a template, a period, and a label. The batch scopes exactly one
template — one currency, one config snapshot, one clean file.
2
Load inputs
Feed gross amounts, one per merchant (business/brand). Sources:
Manual
Pick a business and brand (searchable) and type the gross amount.
CSV upload
Columns
business_id, [brand_id], [merchant_name], gross_amount, currency.
Duplicate merchants are aggregated; bad rows are rejected with line numbers.The Settlements source (pull gross from settlement data) is deferred — coming later.
3
Compute
The engine matches each input to an active instance (brand-exact, then
business-level), runs the split, and writes one line per party. The config is
frozen onto the batch at this moment.
4
Review
The review table shows each line’s merchant, party, gross, MDR, service
charge, tax, net, and any flags, plus
batch totals.
5
Approve
A second person (with
disburseit.finance.approve, distinct from the
creator) approves. Approval is blocked while unresolved flags exist unless
explicitly acknowledged.6
Export
Download the bank file for the approved batch. The first download stamps the
batch exported; re-downloads are allowed.
Replacing inputs
Replacing a computed batch’s inputs resets it to draft and wipes its computed lines — so you always review a fresh computation.Export formats
- Generic CSV —
bank_code, account_number, account_name, amount, currency, reference, merchant_name. Excludes klikit-role lines, lines missing bank details, and negative nets (all surfaced as flags in review). - BCA — a labelled placeholder (delegates to generic) until the real BCA batch spec is supplied. The UI badges it “not for bank submission”.
Rules
- An exported batch can never be voided (money may have moved; the record is permanent).
- Draft/computed batches can be voided by an operator; an approved batch can be voided only by an approver.
- The beneficiary bank details are snapshotted onto each line at compute, so a later bank edit can’t redirect an approved batch.