CanopyAPI docs

idempotency_key_reuse

The create named a payout wallet that already has an active intent carrying different terms.

HTTP 409

When this happens

POST /api/v1/intents allows at most one active intent per (merchant account, payout namespace, chain, wallet, token). A create naming a wallet that already has an active intent with the same terms is not an error: it returns that intent with created: false and a fresh widgetToken. This error fires when the resolved destination matches but the terms do not -- a different priceUnits, a different oneTime. A different chain or token has its own destination key.

Nothing is written when this returns: the existing intent keeps its original terms and its deposit address, and no second intent is minted. Creates with no destination fields never see this error -- they always mint a fresh intent.

The error envelope

json
{
  "error": {
    "code": "idempotency_key_reuse",
    "message": "This payout wallet already has an active intent with different terms.",
    "request_id": "req_1a2b3c4d5e6f7a8b9c0d1e2f",
    "docs": "https://canopypay.io/errors/idempotency_key_reuse"
  }
}

What to do about it

To retry the same operation, resend the same body -- a wallet-keyed retry resolves to the existing intent but rotates its widget token. Save the intent ID and reuse it for an existing checkout. To sell to the same wallet at different terms, first complete a one-time intent or archive the active intent so the wallet frees, or name a different payout wallet. A one-time intent frees its wallet on its own once the price is reached.