Skip to main content
TED IN lets your institution receive transfers from any Brazilian bank automatically. Your team takes no action — 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.

How it works


  1. A customer at another bank starts a TED transfer to one of your institution’s accounts
  2. Every 60 seconds (default JD_POLL_INTERVAL_SECONDS), the plugin polls the JD SPB network for new incoming transfers
  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 automatically, minus the cashin fee if you configured one
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, it returns the transfer to the origin bank automatically. The sending customer gets their money back. Your team takes no action, and no funds go unaccounted for. The plugin records the inbound message as an undeliverable incoming transfer in the undeliverable_incoming_transfers store. It then dispatches a devolução (STR0010 return) to the origin bank. This path does not create a credited transfer record set to FAILED.

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


Three 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 (operations triggerTEDInPoller, replayTEDInPoller, and resumeTEDInPoller).

Three distinct dead-letter paths


The plugin uses three separate failure stores. They are not interchangeable, and you must monitor each one independently:
  • JD parse failures — the plugin stores these in jd_incoming_parse_failures. The message arrived from JD, but the plugin could not interpret it (malformed XML, unknown message type). This store needs manual triage.
  • Undeliverable inbound transfers — the plugin stores these in undeliverable_incoming_transfers. Parsing succeeded, but the plugin could not apply the credit (for example, it did not find the recipient account). This path can trigger an automatic devolução to the origin bank.
  • Webhook DLQ — the retry queue for failed outbound webhook deliveries, at /v1/webhooks/dlq. It does not relate to TED IN ingestion. This is the outbound event channel to integrating clients.

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


The plugin makes sure that it never loses a transfer and never credits one twice:
  • No duplicate credits — each transfer message carries a unique sequence number. The plugin rejects any attempt to process the same message twice.
  • Automatic retry on failure — the plugin retries transient errors (such as a momentary service interruption) with exponential backoff before it records any failure state.
  • Dead-letter queue for unresolvable issues — if the plugin cannot process a transfer after all retries, it moves the transfer to a dead-letter queue for manual review. The plugin never drops a transfer silently.