Track every breaking and notable change to the Pix2Depix API here. We recommend partners subscribe to this page and review it before any rollout — backward-incompatible changes are announced here first.Entries are in reverse-chronological order. Each change is tagged Added, Changed, Removed, or Deprecated. Some historical entries are marked (date to confirm) while we finalize their exact release date — the change itself is already live in production.
2026-09-17#
Added — Seven values to Message codes: MISSING_PARAMETER, INVALID_PARAMETER, CONFLICTING_PARAMETERS, IDENTIFICATION_REQUIRED, NO_BANKING_NODE_AVAILABLE, DEPOSIT_NOT_FOUND and WITHDRAW_NOT_FOUND. They are not new: the API already sends them, and this entry only adds them to the documentation. IDENTIFICATION_REQUIRED is missing from some of the refusals it names, as its row explains: do not rely on that code alone. The table now also lists GET /user-info among the endpoints that send END_USER_NOT_FOUND.
2026-09-15#
Changed — A withdrawal returned because the Pix key is malformed or does not exist now reports invalid_pix_key in refund.reason, where it previously reported payout_failure. Returns recorded before this change keep the old value, and payout_failure is no longer sent for new ones. The fee is unchanged: both withhold 1 DePix.
2026-09-14#
Added — refund on GET /api/withdraw-status and on the withdraw webhook. Once the return of a withdrawal's DePix is recorded as sent, it carries the Liquid transaction id of the return (txId), the reason, who started it, the fee withheld and the amount returned. Changed — Refusal messages reworded. A tax number and an euid that refer to different people now read The tax-number and EUID you provided refer to different people. instead of please provide tax number or EUID, not both, and a blocked end user reads The end user with tax-number … is blocked and cannot deposit (or withdraw) instead of this user is blocked (or This user is blocked and cannot withdraw.). A refusal coded INTERNAL_ERROR no longer quotes a numbered internal error. The messageCode of all three is unchanged: branch on it, never on the message text.
2026-09-09#
Added — Spark addresses on POST /deposit. depixAddress and depixSplitAddress now accept a Spark address (spark1…) as well as a Liquid or an Arkade one. The network is still read from the address itself: there is no parameter naming a network. Your configured default address is classified the same way. Withdrawals are unchanged and still receive DePix on Liquid only. Spark is in beta: please do not use it in production yet, and do not test it with substantial amounts. We will post here when it is ready for production use. Changed — The refusal message for an unrecognised payout or split address went from is not a Liquid or Arkade address to is not a Liquid, Arkade or Spark address. The messageCode is unchanged: it is still DEPOSIT_ADDRESS_NETWORK_UNKNOWN. Branch on the code, never on the message text.
Added — Networks and payout addresses, one page covering how the payout address selects the network, what each network costs, why withdrawals stay on Liquid, and the official DePix token identifier on Spark.
2026-09-07#
Added — Arkade addresses on POST /deposit. depixAddress and depixSplitAddress now accept an Arkade address (ark1…) as well as a Liquid one, and the network the DePix is paid out on is read from the address itself: there is no parameter naming a network. Your configured default address is classified the same way. Withdrawals are unchanged and still receive DePix on Liquid only. Arkade is in beta: please do not use it in production yet, and do not test it with substantial amounts. We will post here when it is ready for production use. Added — Three refusals on POST /deposit, each with its own messageCode, all raised when the QR is created and before any Pix can be paid into it: an address that is neither Liquid nor Arkade (DEPOSIT_ADDRESS_NETWORK_UNKNOWN), a split address on a different network from the payout (SPLIT_ADDRESS_NETWORK_MISMATCH), and a network whose wallet is not payable at that moment (NETWORK_WALLET_UNAVAILABLE, transient: retry later). See Message codes.
2026-09-05#
Added — messageCode on business refusals from the operation endpoints. A stable, append-only string naming the condition, sent next to errorMessage whenever the condition has a stable name; branch on it instead of on the text. Where a denialCode also exists the two carry the same value. See Errors & the response envelope.
2026-08-21#
Changed — A refund sent to refundAddress now withholds a fee of 1 DePix when the payout could not be completed because of the request itself: the Pix key does not belong to the informed taxNumber, or the Pix key is invalid or was rejected at payout. The fee comes out of the amount returned. No fee is withheld when the failure was not on the request: our side or the banking processor broke, or the DePix that arrived did not match what the withdrawal expected. See Withdraw.
2026-08-07#
Added — refundAddress on POST /withdraw. An optional Liquid address where your DePix is returned if the withdrawal cannot be completed. It has to be sent on the request and cannot be supplied afterwards: without it, a failed withdrawal waits until our team can reach you to ask where to send the funds. The recorded value comes back on GET /api/withdraw-status. See Withdraw. A long-lived token that leaks stays useful to whoever holds it until it expires — up to a year. An access token minted from client credentials is useful for minutes, and the credential behind it can be revoked from Telegram at any time.
2026-06-12#
Removed — The legacy asynchronous request model is gone. The API is now synchronous-only: X-Async: true is rejected with 400 ("X-Async: true is no longer supported"), and there is no more 202 Accepted / urlResponse polling. A slow request now surfaces as a 503 timeout. See Synchronous requests & safe retries.
2026-06-11#
Removed: Some legacy documentation pages have been retired from the public API reference. The reference now lists only currently-supported endpoints.
The reference is the supported surface. If something you integrated against is not listed here, treat it as unsupported and move off it — anything not documented can change or stop working without a changelog entry.
2026-05-26#
2026-05-01#
Changed — POST /withdraw now requires beneficiary identification. Send at least one of taxNumber (CPF/CNPJ of the Pix key owner) or euid. If you send both, they must match — the request is rejected outright when they disagree. If you integrated POST /withdraw before this date, update your calls to include taxNumber and/or euid. Requests without beneficiary identification are rejected.
2026-01-13#