Lifecycle
- Call
POST /v3/refunds/pixwith the original inbound PIX settlement ID, a unique merchant order ID, and the decimal-string amount. - A successful creation starts at numeric status
1(PENDING). The service queues background processing. - Poll
POST /v3/refunds/status/checkwith a new signature nonce each time. This operation may refresh and persist the rail status. - Stop on
2(COMPLETED) or3(FAILED). UsePOST /v3/refunds/detailswhen the full accessible projection is needed.
Eligibility implemented today
- The original transaction must be an inbound PIX payment owned by the selected account and still refundable.
- It must be no more than 90 days old.
- The amount must be positive, have at most two decimal places, and not exceed the remaining refundable amount.
- The first six characters of
merchant_order_idmust be a valid UTCYYMMDDdate around the current UTC day, with a ±1-hour boundary allowance.
Idempotency and retries
The create route stores the merchant order ID for 48 hours. A duplicate returns business code4001013. This is separate from signature replay protection: every retry or poll still needs a fresh timestamp and nonce.
All normal API results—including validation and business failures—use HTTP 200 with the JSON envelope. Branch on outer code, not HTTP status or localized message. Malformed JSON is the exception and can return raw HTTP 400 text.