Product decisions
These are choices your product team makes in the customer-facing experience. They directly affect customer satisfaction and support volume.
Show the fee before the customer confirms
Theinitiate step returns the fee amount before any funds move. Use this window to show a clear confirmation screen:
Handle operating hours gracefully
TED OUT is available Monday to Friday, 06:30–17:00 (Brasília time). When a customer starts a transfer outside these hours, do not show only an error. Tell them when they can try again:bacen_holidays table, which the plugin seeds for 2026–2028. The daily refresher runs by default and re-applies the built-in seed. It does not fetch live from ANBIMA, because ANBIMA publishes only a legacy spreadsheet that machines cannot read. The seed stays the authoritative source until that changes.
When a holiday rejects a transfer, show that reason to the customer. Do not replicate the calendar on the client. Trust the plugin as the source of truth to avoid inconsistencies over time.
Communicate transfer limits before customers hit them
Show the customer’s remaining daily limit in your transfer UI. Show it before they attempt a transfer that the plugin rejects. For example:Show confirmation receipts after completion
After a TED OUT or P2P transfer completes, display — or offer to download — a receipt with:- Transfer date and time
- Sender and recipient details
- Amount, fee, and total
confirmationNumber(customer-facing reference)controlNumber(JD SPB reference, for TED OUT only)
Keep customers informed in real time
Use webhooks to push transfer status updates to your UI as they happen. Do not make customers refresh or wonder if their transfer went through. See TED webhooks for setup.Compliance decisions
These are requirements that apply to your integration regardless of your product choices.
LGPD and personal data
Transfer records contain personal data — customer names, CPF/CNPJ, and bank details. Make sure your privacy policy explicitly covers financial transaction data. Do not log CPF/CNPJ in plain text. Mask it in interfaces as***.***.***-00.
A dedicated anonymization endpoint for LGPD right-to-erasure requests will arrive in a future release. Until then, coordinate anonymization requests with your database administration team.
Data retention
Audit trail and reconciliation
Every transfer generates two reference numbers you must store:
Keep both the
transferId and confirmationNumber in your own records for reconciliation. For TED OUT, also store the controlNumber.
Operating hours
BACEN mandates that TED operates Monday to Friday, 06:30–17:00 (Brasília time, UTC-3). The plugin enforces this window by default. An operator can adjust the open and close times at runtime through systemplane, within BACEN limits. Treat 06:30–17:00 as the norm and build your UX around it. See Handle operating hours gracefully above.P2P transfers are not subject to operating hour restrictions and work 24/7.
Integration checklist
Before you go live, verify the following:
- Idempotency keys on all write operations — Send a UUID v4
X-Idempotencyheader on every call toinitiate,process, andcancel. This prevents duplicate transfers from retries or double-clicks. - Webhook endpoint live before launch — Deploy your webhook endpoint and make it reachable before you go live. Transfer events start firing immediately on the first real transaction.
- 24-hour expiry handled — An initiated transfer expires if the customer does not confirm it within 24 hours. If your flow allows a customer to start a transfer and return later, handle the expiry case explicitly.
- Exponential backoff on 5xx errors — Implement retry with backoff (e.g., 2s, 4s, 8s) when the response is
503or500. JD SPB unavailability surfaces as503with a raw JD vendor code (TRANSPORT,ACE95, …). Midaz ledger unavailability surfaces asBTF-2000. Do not retry immediately in a loop. - Operating hours validated client-side — Check hours in the UI before you call the API. This reduces failed API calls and gives a better customer experience.
- Both
transferIdandconfirmationNumberstored — Required for reconciliation and audit. For TED OUT, also storecontrolNumber.
Error handling
Use these error scenarios to map API errors to customer-friendly messages and define the correct recovery path.
For the complete list of error codes and their meanings, see the TED error list.

