What you can build
- Payroll disbursements — send salaries or contractor payments directly to employees’ accounts at any Brazilian bank
- Supplier and vendor payments — pay invoices and settle B2B obligations without manual bank portal access
- Customer withdrawals — let customers move funds out of your platform to their external bank accounts on demand
- Internal fund movement — move money between accounts in your own institution, with no external routing (P2P)
Transfer types
How it works
- Initiate — you enter the recipient’s bank details and the amount. The plugin shows the fee first
- Confirm — you authorize the transfer, and the plugin reserves the funds in Midaz
- Send — the plugin signs the payment and dispatches it over the BACEN STR network to the destination bank
- Settle — the recipient’s bank credits the funds, and you receive the JD SPB control number as confirmation
Operating hours and limits
What your customers can expect:
Outside the operating window, the plugin rejects the transfer and moves no funds. The error names the next available time.
What the plugin handles for you
Your team does not need to build or maintain:
- Fee calculation — the plugin computes fees through Fees Engine at initiation, before you confirm
- Idempotency — a retried request carries an idempotency key, so it returns the original result and never creates a second transfer
- BACEN compliance — the plugin enforces the operating window and records a full audit trail
- Holiday calendar — BACEN business-day validation, backed by the
bacen_holidaystable (seeded for 2026–2099) - Webhook notifications — webhooks notify your system when a transfer completes, arrives, or fails
- Reconciliation — every transfer records the JD SPB control number, timestamps, and status history for audit
- Automatic returns (devolução) — if the plugin cannot credit an incoming transfer, it returns the funds to the origin bank automatically. This differs from a chargeback, which reverses a completed credit

