Skip to main content
POST
Start a PIX refund
This only records the refund (status INITIATED) — no money moves yet. Confirm it with POST .../reversals/{reversalId}/confirm to send it, or cancel it with .../cancel. A Pix can be refunded in several parts: amount is at most what is left of it after its refunds that weren’t cancelled or refused, including those still INITIATED. Only a Pix received can be refunded — not one sent, nor a refund. Use default as walletId for the organization’s main wallet, and send x-environment: LIVE for production wallets. Organization admins can refund from every wallet; other users from the wallets shared with them as OWNER or USER.

Headers

x-environment
enum<string>

Environment of the wallet: LIVE (production) or TEST (sandbox). When you omit it, the request runs in TEST; any other value is rejected.

Available options:
LIVE,
TEST

Path Parameters

realmId
string<uuid>
required

ID of your realm.

Format: UUID

organizationId
string<uuid>
required

ID of the organization the wallet belongs to.

Format: UUID

accountId
string
required

ID of the organization's account (24 hexadecimal characters).

Pattern: ^[0-9a-fA-F]{24}$
walletId
string
required

ID of the wallet that received the Pix (24 hexadecimal characters), or default for the organization's main wallet.

Pattern: ^([0-9a-fA-F]{24}|default)$
transactionId
string
required

ID of the transaction of the Pix received (24 hexadecimal characters).

Pattern: ^[0-9a-fA-F]{24}$

Body

application/json
amount
integer
required

Amount to return, in cents (BRL): at most what is left of the Pix after its other refunds that weren't cancelled or refused.

Required range: x > 0
Example:

5000

description
string

Message sent to the payer with the refund.

Example:

"Devolução do pedido 1234"

Response

Successful response

A refund of a PIX payment the wallet received: the money, in full or in part, goes back to whoever sent it.

_id
string
required

ID of the reversal.

Example:

"6710d2e4b4d3e80012c9a1f7"

environment
enum<string>
required

Environment of the reversal: LIVE or TEST.

Available options:
LIVE,
TEST
Example:

"LIVE"

realmId
string<uuid>
required

ID of the realm.

Example:

"f495ff0c-ab54-4f99-8e92-ca8682e4de9b"

organizationId
string<uuid>
required

ID of the organization.

Example:

"c4bd3f21-dfbd-44e8-8055-68ba15bed410"

accountId
string
required

ID of the account.

Example:

"66f2a1c7b4d3e80012c9a0b4"

walletId
string
required

ID of the wallet that received the payment and refunds it.

Example:

"66f2a3d1b4d3e80012c9a0d2"

transactionId
string
required

ID of the wallet transaction of the payment being refunded.

Example:

"6710c9a1b4d3e80012c9a1e2"

status
enum<string>
required

Status of the refund: INITIATED (created, not confirmed yet), REQUESTED (sent, waiting to settle), CONFIRMED (the money went back), FAILED (refused, see errorCode) or CANCELED (cancelled before it was confirmed).

Available options:
INITIATED,
REQUESTED,
CONFIRMED,
FAILED,
CANCELED
Example:

"INITIATED"

originalEffectiveAt
string<date-time>
required

When the payment being refunded was received.

Example:

"2026-10-16T18:40:11.000Z"

originalAmount
number
required

Amount of the payment being refunded, in cents.

Example:

50000

originalCurrency
string
required

Currency of that payment, as an ISO 4217 numeric code: 986 (Brazilian real).

Example:

"986"

reversalReason
string
required

Why the payment is refunded: USER_REQUESTED.

Example:

"USER_REQUESTED"

reversalDescription
string | null
required

Description of the refund. null when none was given.

Example:

"Pedido cancelado pelo cliente"

reversalEffectiveAt
string<date-time> | null
required

When the refund settled. null until it does.

Example:

null

reversalAmount
number
required

Amount refunded, in cents. At most the amount of the payment.

Example:

50000

reversalCurrency
string
required

Currency of the refund, as an ISO 4217 numeric code: 986 (Brazilian real).

Example:

"986"

processingType
enum<string>
required

How the refund is processed: INSTANT or DELAYED.

Available options:
INSTANT,
DELAYED
Example:

"INSTANT"

createdAt
string<date-time>
required

When the refund was created.

Example:

"2026-10-17T14:21:40.000Z"

updatedAt
string<date-time>
required

When it last changed.

Example:

"2026-10-17T14:22:05.000Z"

requestedAt
string<date-time>

When the refund was sent to the bank. Absent while it is INITIATED; it doesn't mean the refund settled.

Example:

"2026-10-17T14:22:03.000Z"

originalPixId
string

ID of the PIX payment being refunded, when it is known.

Example:

"6710c9a0b4d3e80012c9a1e0"

originalPixBillingId
string

ID of the PIX charge the payment paid, when it paid one.

Example:

"6710c5f2b4d3e80012c9a1d4"

originalReceipt
object

End-to-end identifier of the payment being refunded.

originalCreditParty
object

Who received the payment being refunded: this wallet.

originalDebitParty
object

Who sent the payment being refunded — and receives the refund.

reversalAdditionalInformation
string

Extra information sent with the refund.

Example:

"Estorno referente ao pedido 4471"

reversalReceipt
object

End-to-end identifier of the refund. Present once it was sent.

errorCode
string

Code of the error that made the refund fail. Only on FAILED refunds.

Example:

"AM04"

errorDescription
string

Description of that error.

Example:

"Saldo insuficiente na conta do recebedor"

external
object

References of the refund. Present once it was sent.

__v
number

Internal revision counter of the refund.

Example:

0