Complete claim
Completes a confirmed claim, finalizing the key transfer.
Authorizations
JWT bearer token issued by the identity provider.
Headers
Idempotency key, max 255 characters
Path Parameters
Claim UUID
Body
Completion request identifier. The completing claimer is derived from the authenticated participant, not this body.
Idempotency key for this completion, a version 4 UUID, sent verbatim to BACEN as completeClaim's RequestId. Required — never invented here. Must be version 4: every other version derives from a clock, a node id or a hashed name, so two different completions can collide by construction. Distinct from the X-Idempotency header, which is this rail's own de-duplication and never reaches BACEN.
"b2696bf1-0a51-48b0-ab4a-8af2dff440af"
Response
OK
Claim record with its current status and deadlines
Claim kind: OWNERSHIP or PORTABILITY
"OWNERSHIP"
ISPB (8 numeric digits) of the participant initiating the claim
"12345678"
Donor-response deadline (RFC 3339, UTC). For a claim BACEN's own record backs (discovered or adopted), this IS BACEN's ExtendedClaim.ResolutionPeriodEnd, same value as resolutionPeriodEnd below. For a locally-initiated claim, this is always a local seven-day-from-initiation estimate that drives the deadline sweep — see resolutionPeriodEnd for BACEN's own authoritative value, populated once the initiation outbox handler decodes BACEN's createClaim response.
"2025-03-14T14:30:00Z"
Server-assigned claim UUID
"550e8400-e29b-41d4-a716-446655440000"
PIX key type: CPF, CNPJ, EMAIL, PHONE, or EVP
"PHONE"
PIX key value under claim
"+5511999999999"
Claim lifecycle state: OPEN, WAITING_RESOLUTION, CONFIRMED, CANCELLED, or COMPLETED
"OPEN"
BACEN's own operational envelope for its most recent interaction on this claim; omitted when no BACEN interaction has ever landed on it.
The id BACEN itself assigned to this claim on createClaim (ExtendedClaim.Id) — the address every BACEN-facing verb and both claim-recovery feeds use internally. Read-only, surfaced so an operator can correlate a BACEN support case or a DICT-side rejection back to this claim. Omitted until BACEN's createClaim response has landed: a locally initiated claim whose initiation outbox handler has not yet processed BACEN's reply carries no value here yet.
"550e8400-e29b-41d4-a716-446655440111"
Matches BACEN's ExtendedClaim.CancelReason vocabulary plus COURT_ORDER: the reason the claim was cancelled, once cancelled. On a claim we cancel ourselves (our own cancel verb) this is the reason our own operator submitted; on a claim discovered or adopted from BACEN's directory it is BACEN's own published value, verbatim. COURT_ORDER is the one value BACEN does not define at the pinned DICT 2.12.1: it is recorded locally on a court-ordered cancellation, and that cancellation reaches BACEN carrying USER_REQUESTED until the DICT reaches 2.13, which adds the value to ClaimOperationReason
USER_REQUESTED, ACCOUNT_CLOSURE, FRAUD, DEFAULT_OPERATION, RECONCILIATION, RFB_VALIDATION, PARTICIPANT_EXCLUSION, COURT_ORDER Matches BACEN's ExtendedClaim.CancelledBy vocabulary: the side that cancelled the claim, once cancelled. On a claim we cancel ourselves this is the side derived from the authenticated caller; on a claim discovered or adopted from BACEN's directory it is BACEN's own published value, verbatim
DONOR, CLAIMER Number of the account the claimed key would move to (ExtendedClaim.ClaimerAccount.AccountNumber). Answered on every claim projection, the list included
"9988776"
Type of the account the claimed key would move to (ExtendedClaim.ClaimerAccount.AccountType). Answered on every claim projection, the list included
CACC, SVGS, TRAN, SLRY, OTHR "CACC"
Branch of the account the claimed key would move to (ExtendedClaim.ClaimerAccount.Branch); optional at BACEN, so empty when the claimer lodged none. Answered on every claim projection, the list included
"0001"
Name of the claiming key owner (ExtendedClaim.Claimer.Name). Answered on every claim projection, the list included; not carried on a claim streaming fact
"João Silva"
Opening date of the account the claimed key would move to (ExtendedClaim.ClaimerAccount.OpeningDate, RFC 3339 UTC). Answered on every claim projection, the list included
"2020-01-15T00:00:00Z"
CPF/CNPJ of the claiming key owner (ExtendedClaim.Claimer.TaxIdNumber). Answered on every claim projection, the list included; not carried on a claim streaming fact
"11122233300"
Trade name of the claiming key owner (ExtendedClaim.Claimer.TradeName); legal-entity claimers only, empty for a natural person. Answered on every claim projection, the list included
"Silva ME"
BACEN's Person discriminator for the claiming key owner (ExtendedClaim.Claimer.Type). DERIVED from the tax id's length, never stored: 11 characters is the CPF branch, 14 the CNPJ branch — the same rule BACEN's own oneOf keys on. Empty when the tax id is absent or has no branch. Answered on every claim projection, the list included
NATURAL_PERSON, LEGAL_PERSON "NATURAL_PERSON"
BACEN's own completion-window end for a possession claim (ExtendedClaim.CompletionPeriodEnd, RFC 3339 UTC); BACEN publishes it for OWNERSHIP claims only and omits it for PORTABILITY. Also omitted whenever BACEN has not published this claim yet.
"2025-03-21T14:30:00Z"
Matches BACEN's ExtendedClaim.ConfirmReason vocabulary: the reason the donor confirmed with, once confirmed — unlike resolution this is NOT terminal-gated and is never cleared by a later transition. On a claim we confirm ourselves (our own respond verb) this is the reason our own operator submitted; on a claim discovered or adopted from BACEN's directory it is BACEN's own published value, verbatim
USER_REQUESTED, ACCOUNT_CLOSURE, FRAUD, DEFAULT_OPERATION, RECONCILIATION, RFB_VALIDATION, PARTICIPANT_EXCLUSION ISPB (8 numeric digits) of the current key owner (donor). It is the DICT that resolves the donor, not this rail: a claim lodged on a key held at another institution — the canonical portability case — carries NO donor until BACEN's createClaim response names one (ExtendedClaim.DonorParticipant), so this field is omitted while the donor is pending. A donor-side claim discovered from BACEN's directory always carries it.
"87654321"
BACEN's own last-transition instant for this claim (ExtendedClaim.LastModified, RFC 3339 UTC) — the version discriminator BACEN publishes, distinct from requestedAt (when WE lodged it) and from resolvedAt (when it ended). Present once BACEN's own record for this claim exists; omitted before that.
"2025-03-07T14:30:00Z"
Claim initiation timestamp (RFC 3339, UTC); omitted for a donor-side claim projected from BACEN, whose ExtendedClaim carries no creation time
"2025-03-07T14:30:00Z"
Terminal resolution reason (e.g. CANCELLED_BY_CLAIMER, CANCELLED_BY_CLAIMER_FRAUD, CANCELLED_BY_DONOR, CANCELLED_BY_DONOR_FRAUD, DEADLINE_EXPIRED, AUTO_COMPLETED, TRANSFER_COMPLETED); empty until the claim resolves — CONFIRMED is not terminal and never sets this field
""
BACEN's own resolution-window end for this claim (ExtendedClaim.ResolutionPeriodEnd, RFC 3339 UTC); present once BACEN's own record for this claim exists — discovered, adopted, or a locally-initiated claim whose createClaim response the initiation outbox handler has processed — omitted before that
"2025-03-14T14:30:00Z"
Resolution timestamp (RFC 3339, UTC); omitted while the claim is unresolved
""

