provider_operation_unsupported
A typed
422 Unprocessable Entityreturned by a payment lifecycle endpoint when the payment provider that handled a charge does not support the requested operation. The payment is left untouched.
Lifecycle capabilities depend on the payment route. Some routes capture at authorization and cannot perform a separate capture or void. This typed error identifies that restriction on routes that expose it; it is not the universal response for every unsupported operation.
When you hit it
An authorized payment on a route with this restriction returns this error when you call:
POST /v1/payment_intents/{id}/capturePOST /v1/payment_intents/{id}/void
State checks run first. Capturing an already-captured payment returns 200
with the current state. Voiding a captured payment returns 409 payment not voidable in current state.
Refund support is separate. If your payment route supports refunds, use
POST /v1/payment_intents/{id}/refund to return funds, within its enabled
full/partial refund limits. Some routes do not support refunds and return
502 with { "error": "refund not supported by configured provider" }.
Other routes without void support can return 502 with
{ "error": "void not supported by configured provider" }.
Response shape
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
{
"error": {
"code": "provider_operation_unsupported",
"message": "This payment captures at authorization; a separate capture call is not supported.",
"operation": "capture",
"docs_url": "https://docs.mooov.money/errors/provider_operation_unsupported"
}
}
Field reference:
| Field | Always present | Notes |
|---|---|---|
code |
Yes | Stable string. Wire on this rather than the human message. |
message |
Yes | Human-readable. Subject to copy iteration; do not parse. |
operation |
Yes | The lifecycle operation that is unsupported (capture, void). |
docs_url |
Yes | Stable link to this page. |
Wire on code and operation; both are stable. The human message
is explanatory copy and may change, so do not parse it.
What to do
- Capture: inspect the payment state. Fulfil only after capture is confirmed through the payment response or webhook.
- Void: confirm whether this payment supports a refund. If it does, follow that route's refund window, amount and currency limits. If it does not, contact support for the available resolution path.
This typed 422 does not change the payment state. Do not treat it as a
successful capture, void, or refund, or retry an unsupported operation unchanged.