Skip to main content
POST
Compose and send a curated STR message

Authorizations

Authorization
string
header
required

JWT bearer token issued by the identity provider.

Headers

X-Idempotency
string
required

Idempotency key. Required on every mutation.

X-TTL
string

Idempotency key TTL in seconds.

Body

application/json
amount
string
required

Transfer amount as a decimal string in BRL, minor-unit precision (two decimal places). Forwarded VERBATIM into the submit DTO and the alçada gate — Lerian SPB performs NO arithmetic on it. Canonical form only: exactly two decimal places and no leading integer zeros — the single spelling the durable column stores; anything else is refused at the door with 422.

Pattern: ^(0|[1-9][0-9]*)\.[0-9]{2}$
Example:

"150000.00"

capabilityId
string
required

STR capability code to compose. Required and non-blank. Must resolve in the catalog, be PUBLICLY_SUBMITTABLE, and be in the compose allowlist (STR0004/STR0005/STR0006/STR0007/STR0008/STR0053).

Minimum string length: 1
Example:

"STR0008"

recipient
object
required

Crediting (creditor) participant account receiving the transfer.

sender
object
required

Debiting (debtor) participant account originating the transfer.

description
string

Optional free-text description; mandatory when purposeCode or finlddCli is 99999 (RSTR0034). Serialized into the STR Hist element.

Example:

"Wire transfer for invoice 2026-Q2-A47"

finlddCli
string

Optional client-level purpose code (5 digits) carried on STR0004/STR0008. When 99999 the description is required (RSTR0034).

Pattern: ^[0-9]{5}$
Example:

"00001"

metadata
object

Opaque client-side metadata forwarded verbatim to the submit DTO (NOT sent to BACEN). Do not include sensitive fields.

purposeCode
string

BACEN STR purpose code (finalidade), exactly 5 digits, and one the BACEN purpose dictionary names: 176 codes for the institution-level FinlddIF and 113 for the client-level FinlddCli. An unassigned five-digit number is refused. Required for every code that declares a Finalidade element (refused with 422 when absent); omitted for STR0053, which declares none. When 99999 (Outros) a description is mandatory (RSTR0034).

Pattern: ^[0-9]{5}$
Example:

"00001"

repasse
object

STR0053 repasse identification: the [1..1] identifier and date, the optional originator CNPJ and transaction count, and the [0..n] segregation-informe group. Required when composing STR0053; refused on any other capabilityId, which has no repasse element on the wire.

split
object

Optional IBS/CBS tax-split group (all three children required when the group is present). Carried on STR0005/STR0007/STR0008.

Response

Accepted

controlNumber
string
required

Participant control number identifying the message on the SPB network (official ControleIF, 1-20 characters).

Required string length: 1 - 20
Example:

"20260621000000000001"

correlationId
string
required

Request-scoped correlation identifier echoing X-Request-ID, for pivoting from response to trace.

Example:

"req-7a3f9c2e"

messageId
string
required

Internal outbound-message id assigned at persistence time; the key for the approval queue when parked.

Example:

"6f2c8a1e-..."

nuOp
string
required

23-character STR operation number stamped on the composed message (protocol correlation).

Pattern: ^[0-9A-Z]{8}[0-9]{15}$
Example:

"12345678202606210000001"

status
enum<string>
required

Emission status: SUBMITTED (dispatched / liquidatable) or PENDING_APPROVAL (parked awaiting maker-checker quorum).

Available options:
SUBMITTED,
PENDING_APPROVAL
Example:

"PENDING_APPROVAL"

emissionApprovalId
string

Set ONLY when the emission parked: the maker-checker queue id (equal to messageId). Poll GET /v1/str/emission-approvals to track it. Empty when SUBMITTED immediately.

Example:

"6f2c8a1e-..."

requiredSignatures
integer<int64>

N-of-M distinct-actor quorum the parked emission must collect (the alçada band requirement). Omitted/0 when SUBMITTED immediately.

Example:

2