Skip to main content
TED IN lets your institution receive transfers from any Brazilian bank. The plugin detects, validates, and credits each transfer. When a customer at another bank sends a TED to your institution, the funds reach the recipient’s account within minutes. A transfer that the plugin cannot credit or return on its own waits for an operator.

How it works


  1. A customer at another bank starts a TED transfer to one of your institution’s accounts
  2. When TED IN polling is on (JD_POLLING_ENABLED), the plugin polls the JD SPB network for new incoming transfers every 60 seconds (default JD_POLL_INTERVAL_SECONDS)
  3. The plugin looks up the recipient account in your CRM by the document number in the transfer message
  4. The plugin credits the recipient account, minus the cashin fee if you configured one. The plugin posts the credit on the recipient’s Midaz ledger, under the ledger routing for that organization, ledger, and TED IN
TED IN flow diagram

Detection and processing timeline


The stages below show what happens after the origin bank sends the transfer: Typical time: The credit completes within one poll cycle. With the default 60-second poll interval, the funds land in about a minute.

Transfer states


Receiving fee (cashin)


Your organization can charge a fee on incoming transfers. When you enable it, the plugin deducts the fee from the amount before it credits the recipient. The recipient receives the net amount. You set the fee amount and configuration per organization through the Fees Engine. Formula: credited amount = transfer amount − fee Example: a R1,000.00transferwithaR1,000.00 transfer with a R2.50 fee credits R$997.50 to the recipient’s account. This is the opposite of TED OUT, where the plugin adds the fee on top and the sender pays more.

What happens when a recipient isn’t found


If the plugin cannot match the document number in the incoming transfer to an account in your CRM, the tenant policy jd_polling.auto_return_authorized decides what happens. The plugin credits nothing and creates no transfer record in either case.
  • false (default): the plugin returns nothing. It retains the message with reason RECIPIENT_NOT_FOUND_RETURN_UNAUTHORIZED. An operator settles the funds outside the plugin, then records the outcome with Close Unsettled TED IN Credit. The close moves no money.
  • true: the plugin returns the transfer to the origin bank (STR0010 devolução), and the sending customer gets the money back.
The plugin returns the transfer to the origin bank, whatever this policy says, in these cases:
  • The recipient’s account is not in the ledger or matches more than one account in your CRM.
  • The ledger refuses the credit.
  • The fee leaves nothing to credit.
  • The fee cannot be resolved and fees.fail_closed_default is true.

Querying received transfers


Use the List Transfers endpoint to retrieve all incoming transfers. Filter by type=TED_IN to view only received transfers. Endpoint: GET /v1/transfers Response (key fields):
For full query parameter options, see the List Transfers reference.

Operational endpoints


These operator endpoints control the TED IN polling loop. They target scripts and runbooks, not end-user traffic. For request body, response, status codes, and error codes, see the TED OpenAPI specification.

Messages that wait for an operator


Monitor each of these queues on its own. They are not interchangeable: The webhook DLQ is a different path: it holds failed outbound webhook deliveries, not inbound transfers. See Webhooks.

Webhooks


Configure a webhook to get real-time notifications when transfers arrive. The transfer_incoming.completed event fires as soon as the plugin credits a transfer. See Webhooks for setup and event payload details.

Reconciliation


For accounting and finance reconciliation, each transfer record includes these fields: The plugin persists transfer records for reconciliation and audit.

Processing guarantees


  • No duplicate credits: the plugin stores each JD message once, by its sequence number (NumCabSeq). It also deduplicates credits by control number, sender ISPB, and amount.
  • Message first: the plugin stores each message before it processes it. A message that it cannot finish stays unprocessed, and the next poll cycle processes it again.
  • Operator queues: a message that the plugin can neither credit nor return waits in the queues above.