---
title: "payment_transition_conflict"
description: "Another operation updated or claimed a payment before the current request could safely finish."
canonical: "https://studio.inttegro.dev/e/payment_transition_conflict"
format: inttegro-machine-docs/v1
language: "Go"
sdk_version: "v13.1.1"
reader_profile: optional
reader_manifest: "https://studio.inttegro.dev/machine/go/readers/index.json"
reader_identification: "Optional: declare your client only if known and your current-session capabilities; use reader_manifest for supplemental recommendations."
preamble_estimated_tokens: 361
model_token_report: "https://studio.inttegro.dev/machine/token-report.json"
preamble_questions: 5
preamble_source: "general"
recommended_mcp_tools: []
estimated_tokens: 1292
token_estimate_method: "utf8_bytes_divided_by_4"
---

## Machine preamble

**Summary:** Another operation updated or claimed a payment before the current request could safely finish. This Go representation uses the selected SDK's native names wherever Studio has a verified mapping.

### Five questions

#### Q1. When should the reader use payment_transition_conflict?

Use this page as orientation before selecting the narrower guide or reference that owns the implementation contract.

#### Q2. What is authoritative on this page?

Use this page for orientation; follow its canonical SDK, guide, API, or MCP links for exact contracts.

#### Q3. What page-specific constraint matters most?

Use the page to choose a canonical next source instead of treating summary material as a complete implementation contract.

#### Q4. Can Inttegro MCP materially help with this task?

No catalog ability is sufficiently specific to recommend for this page. Use the documentation directly; consult the MCP catalog only if the task later requires governed live account context or a supported operation.

#### Q5. How should the reader verify the answer and continue?

Select the narrowest linked guide or reference, apply its stated completion condition, and verify against authoritative resource state when the task changes data. Continue with [Errors](https://studio.inttegro.dev/machine/go/api/errors.md) and [Orders](https://studio.inttegro.dev/machine/go/api/orders.md) when those concerns enter scope.

## Document content

# payment\_transition\_conflict

Commerce rejected the request because another operation updated or claimed the payment first. Continuing with an older view of the payment could start a duplicate attempt or overwrite a newer result.

## Why this happens

Payment operations can overlap with another Pay, Confirm payment, Complete, or status-update operation. Commerce allows only a valid transition from the latest stored payment state. You receive this HTTP `409` response when another operation wins that transition before your request can safely apply its change.

Common causes include:

- two payment requests being submitted for the same customer action;
- a payment attempt already being processed;
- customer confirmation completing while another request is using an older payment state;
- a payment status update arriving while Pay, Confirm payment, or Complete is still running.

This error is not a payment decline and does not, by itself, mean the payment failed. It means Commerce refused to guess whether another payment operation is still running or has already produced a newer result.

## What to do

Fetch the order or payment and use its latest state:

- If the payment is `paid`, treat the payment as complete and do not submit it again.
- If it is `requires_action`, follow the returned `next_action` instead of starting another payment attempt.
- If it is still processing, wait briefly, then fetch the latest state again.
- If it is `failed`, offer a deliberate new attempt only after the customer chooses to try again.
- If it is `canceled` or `expired`, do not resubmit the same payment operation.

Do not immediately repeat the request without reading the resource. When replaying the same logical request after an uncertain response, keep its original `Idempotency-Key`. Use a new key only for a deliberate new payment attempt after the latest payment state permits one. See [Idempotency](https://studio.inttegro.dev/machine/go/api/idempotency.md).

## Example error response

```json
{
  "error": {
    "cause": "resource_state_conflict",
    "code": "payment_transition_conflict",
    "detail": "we rejected this request because another operation updated or claimed the payment first. continuing could create a duplicate payment attempt or overwrite a newer result. fetch the latest order or payment and follow its current status or next_action before deciding whether to try again.",
    "fix_code": "refresh_resource_state",
    "message": "request rejected because another operation reached this payment first",
    "type": "state_conflict",
    "url": "https://studio.inttegro.com/e/payment_transition_conflict"
  }
}
```

## Related documentation

- [Orders](https://studio.inttegro.dev/machine/go/api/orders.md)
- [Errors](https://studio.inttegro.dev/machine/go/api/errors.md)
- [Idempotency](https://studio.inttegro.dev/machine/go/api/idempotency.md)
