Create a Pix Schedule
Create a single-shot scheduled Pix instruction. The schedule is created with status SCHEDULED and is dispatched automatically as a cashout at its scheduled fire time.
Notes:
- The destination is taken from an existing payment initiation referenced by
initiationId. CallPOST /v1/transfers/cashout/initiatefirst to obtain that id. - Provide a fresh
X-Idempotencyheader to guarantee at-most-once creation per account. scheduledFormust be at least 60 seconds in the future and within the 180-day window.- At fire time the schedule always executes as a manual cashout using the captured destination.
- Schedules in a terminal state (EXECUTED, FAILED, CANCELLED) are immutable.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Unique identifier of the Midaz Ledger Account (UUID format).
Idempotency key (UUID v4 recommended); replays return the cached 201 response.
Body
Amount is the transfer amount in BRL with 2 decimal places (e.g. "100.50"). Format and bounds are validated when the schedule fires.
"100.50"
InitiationID anchors the schedule to an existing payment initiation that already carries the DICT-validated destination snapshot. The schedule copies that initiation's destination fields and stores the reference as an audit anchor (never reused at fire time). An initiation must exist before creating the schedule.
"550e8400-e29b-41d4-a716-446655440010"
ScheduledFor is the wall-clock fire date in ISO 8601 with timezone. The actual execution moment is resolved from this value plus the service default execution hour (BRT). Recurring callers must set this to >= D-1 of the due date.
"2026-08-15T00:00:00Z"
Description is the optional human-readable transfer message: optional, max 140 characters; HTML or script content is rejected. Optional at the Pix / BACEN level (informacoesEntreUsuarios).
140"Recurring charge installment 03/12"
EndToEndID is the optional caller-minted BACEN end-to-end identifier for the scheduled Pix. It is not header-bound and not required, so generic HTTP callers omit it. Recurring (Pix Automático) callers that mint the cashout end-to-end id up front supply it so the scheduled fire reuses the same identifier. Its format is validated when the payment is processed.
"E1234567820260815060012345678901"
MaxAttempts caps the number of fire attempts allowed for this schedule. Pix Automático payer uses 2 (first attempt at 06:00 BRT, INSUFFICIENT_FUNDS retry at 18:00 BRT). Zero or omitted falls back to the service default.
1 <= x <= 22
RecurrenceID is a generic correlation anchor that groups multiple schedules created by the same upstream flow (recurring payment, subscription, installment plan, billing cycle, etc.). Optional. The schedule layer does NOT interpret this value — it is opaque metadata echoed back on GET / LIST and on the schedule.* outbound webhooks so the upstream consumer can re-aggregate. Nil for ad-hoc one-off schedules that have no parent group.
"01988a7c-1234-7abc-8def-111122223333"
Response
Created
AccountID echoes the input AccountID for audit / log correlation.
"019cf6ef-e418-7ced-80c0-7b9816faa798"
Amount is the BRL amount with 2 decimal places.
"100.50"
AttemptCount is the number of fire attempts made so far.
0
Attempts is the chronological list of failed prior fire attempts. The successful attempt is not included here; it is recorded on the schedule itself via its TransferID and EndToEndID. Empty array when no failures have been recorded.
CancelledAt is the moment the schedule reached CANCELLED. Absent for non-CANCELLED rows.
"2026-05-19T09:15:33Z"
CreatedAt is the persistence timestamp (ISO 8601 UTC).
"2026-05-26T12:30:00Z"
Description is the optional human-readable transfer message.
"Recurring charge installment 03/12"
Destination is the destination snapshot captured on the schedule.
EndToEndID is the BACEN end-to-end identifier of the settled transfer (resolved via TransferID). Absent for non-EXECUTED states.
"E1234567820260815060012345678901"
ExecutedAt is the moment the schedule reached EXECUTED. Absent for non-EXECUTED rows.
"2026-08-15T06:00:04Z"
FailedAt is the moment the schedule reached the terminal FAILED state. Absent for non-FAILED rows. Symmetric with ExecutedAt / CancelledAt.
"2026-08-15T06:00:04Z"
FailureMessage is the free-text (PII-sanitized) human-readable failure description. Absent for non-FAILED rows.
FailureReason categorizes a terminal failure. Snapshot of the latest Attempts[] entry's FailureReason. Absent for non-FAILED rows.
INSUFFICIENT_FUNDS, BTG_REJECTED, MIDAZ_REJECTED, VALIDATION_FAILED, SCHEDULE_STALE_TIMEOUT, SCHEDULE_RETRIES_EXHAUSTED "INSUFFICIENT_FUNDS"
FiredAt is the most recent dispatch instant. Absent until the schedule starts processing (PROCESSING / EXECUTED / FAILED).
"2026-08-15T06:00:04Z"
ID is the unique schedule identifier (UUID v7, app-generated).
"01989f9e-6508-79f8-9540-835be49fbd0d"
InitiationID is the payment initiation referenced at create time (audit anchor). It is never reused at fire time; each fire attempt uses its own initiation, surfaced per attempt as Attempts[].InitiationID.
"550e8400-e29b-41d4-a716-446655440010"
InitiationType records how the destination was captured (MANUAL, KEY, QR_CODE).
MANUAL, KEY, QR_CODE "MANUAL"
MaxAttempts is the per-row retry cap accepted at create time.
2
RecurrenceID echoes the parent recurrence anchor when the schedule was created from a recurring flow. Empty for direct POST /v1/schedules calls.
"01988a7c-1234-7abc-8def-111122223333"
ScheduledFor is the wall-clock fire moment (ISO 8601 UTC).
"2026-08-15T09:00:00Z"
Status is the schedule lifecycle status. Always SCHEDULED on create. Lifecycle: SCHEDULED -> PROCESSING -> EXECUTED | FAILED | CANCELLED.
SCHEDULED, PROCESSING, EXECUTED, FAILED, CANCELLED "SCHEDULED"
TransferID is the identifier of the settled transfer. Populated only on EXECUTED.
"c8d27e3f-4a5b-6c7d-8e9f-0a1b2c3d4e5f"
UpdatedAt is the last status-transition timestamp (ISO 8601 UTC).
"2026-05-26T12:30:00Z"

