# Change history

This page summarizes notable changes made to the Ripple Mint API.

## v1.4

- **New UAT (sandbox) environment.** A mock environment is now available at `https://api.test.ripple.com`. It exposes the same transaction and webhook contract as production, so you can build and test your integration end-to-end without minting, redeeming, or bridging real RLUSD. It adds one UAT-only API operation — `POST /v1/stablecoin/transactions` — that lets you generate sample transactions for each scenario on demand. See [UAT (sandbox) environment](/products/stablecoin/api/uat).
- **Approve-redemption request body field renamed `destination` → `type`.** The request body for `PUT /v1/stablecoin/transactions/{id}/destination` now uses the field `type` (`{ "type": "FIAT" }`), replacing the former `destination` field. This is a breaking change for flexible-redemption integrations: update your approval calls to send `type` instead of `destination`. The new field name applies in both production and UAT.


## v1.3

- **New `CANCELED` transaction status.** A transaction may now terminate in a `CANCELED` state in addition to `COMPLETED` or `FAILED`. This currently applies to `ISSUANCE` transactions that are canceled before settlement. `CANCELED` is a terminal status — no further status transitions will occur. Consumers that branch on terminal status must add explicit handling for `CANCELED`; treating any non-`COMPLETED` terminal state as `FAILED` will misclassify cancellations.
- **`statuses` filter accepts `CANCELED`.** The list-transactions endpoint now accepts `CANCELED` as a value for the `statuses` query parameter.
- **Webhook fired on cancellation.** A `STABLECOIN_TRANSACTION` webhook is delivered with `eventData.status = "CANCELED"` when a transaction reaches the canceled terminal state.


## v1.2

- **New `counterpartyAddress` on each endpoint.** `source` and `destination` now include `counterpartyAddress` — the Ripple-side internal account address that participated in this on-chain leg — to help reconcile on-chain activity against your ledger.
- **Webhook `eventData` now embeds `source` and `destination` objects.** Each carries `hash` and `counterpartyAddress`. The top-level `eventData.sourceHash` / `eventData.destinationHash` fields are **deprecated** (still delivered for backward compatibility; will be removed in a future version).