How it works for your customer
Step 1 — Enter details and review fee The customer provides the recipient’s bank details and the amount. The system calculates the fee and returns the total cost before it debits anything. The customer sees exactly what they will pay. Step 2 — Confirm and send After the customer confirms, the system debits the funds (amount + fee) from their account. It submits the transfer through JD’s SPB gateway to the BACEN network and issues a confirmation number at once.
Prerequisites
Before you initiate a transfer:
- The sender must have a registered account in CRM.
- The sender’s balance must cover the transfer amount plus the applicable fee.
- You must request the transfer on a business day, between 06:30 and 17:00 (Brasília time).
Step 1: Initiate the transfer
The customer submits the recipient’s details and the amount. The system validates the request, calculates the fee, and creates a transfer intent valid for 24 hours. The system moves no funds at this stage. See the full request specification in the Initiate Transfer reference. Endpoint: POST /v1/transfers/initiate Response (key fields):
Fee direction (cash-out): For TED OUT and P2P transfers, the plugin adds the fee on top of the transfer amount, so
totalAmount = amount + feeAmount. The plugin debits the sender’s account for the full total. TED IN works the other way and deducts the fee from the received amount.Step 2: Confirm the transfer
After the customer reviews the fee and confirms, submit the
initiationId to process the transfer. The system provisions the funds and sends the payment to the BACEN network.
Most integrations process the transfer with only the initiationId. Some tenants sign TED OUT payloads outside the plugin. These tenants first call POST /v1/transfers/signing/prepare. They then send signingArtifactId, payloadHash, and signature with the same initiationId.
See the full request specification in the Process Transfer reference.
Endpoint: POST /v1/transfers/process
Response (key fields):
Settlement timeline
1
Submitted
The system provisions the funds and sends the transfer to the BACEN network. Status:
PROCESSING.2
Settled
The destination bank confirms settlement. Status:
COMPLETED.3
Customer notified
The plugin dispatches a
transfer.completed webhook to your system.Operating hours
Error handling
The plugin always accounts for your customer’s money when something goes wrong:
Transfer rejected by the destination bank
Transfer rejected by the destination bank
The receiving institution declines the transfer. The plugin releases the provisioned funds at once and returns the full amount, including the fee, to the sender’s balance. Status:
REJECTED. The plugin sends a transfer.rejected webhook.Temporary network issue
Temporary network issue
The plugin retries automatically, up to three attempts by default. If the outcome stays unknown after retries — a 5xx or a timeout from JD SPB — the plugin does not auto-revert the transfer. It preserves the hold and hands the transfer to the reconciliation worker, which resolves it against the ledger. If reconciliation runs out of attempts, the plugin flags the transfer for manual operator review (
MANUAL_REVIEW). The plugin never loses the funds, but resolution may take time. A clear 4xx rejection differs: it reverts the hold at once (see the rejected case above).Return from the destination bank
Return from the destination bank
The destination bank can return the funds after settlement, for example on account closure or a regulatory hold. The plugin reverses the amount in your ledger as a separate transaction. This return sits outside the transfer lifecycle. The original transfer record stays
COMPLETED, and the plugin creates a new reversal record.Every mutating transfer request must include an
X-Idempotency header (max 255 characters). Reuse the same key when you retry a request to avoid duplicate submissions. See Retries and idempotency for details.Check transfer status
Track the progress of a transfer at any time. Endpoint: GET /v1/transfers/ Response (key fields):
Cancel a transfer
You can cancel a transfer while it is in
CREATED or PENDING status, before the plugin submits it to the network.
Endpoint: POST /v1/transfers//cancel
Common ISPB codes
Last verified: 2026-02-06. Values are subject to change.
For a complete list, consult the ISPB directory on the Central Bank website.

