Add SCA_NOT_COMPLETED outgoing transaction failure reason - #762
Conversation
✱ Stainless preview builds for gridThis PR will update the cli go kotlin openapi php python ruby typescript ✅ grid-ruby studio · code
|
Greptile SummaryNO FUNDS MOVED — FORGE A NEW QUOTE AND AUTHORIZE AGAIN.
Confidence Score: 5/5The PR appears safe to merge, with the source schema and both generated OpenAPI bundles updated consistently. The additive enum value is narrowly documented, requires no breaking-version bump under repository conventions, and introduces no concrete in-repository contract, build, or synchronization failure.
|
| Filename | Overview |
|---|---|
| openapi/components/schemas/transactions/OutgoingTransactionFailureReason.yaml | Adds and documents the new outgoing transaction failure reason in the canonical modular schema. |
| openapi.yaml | Correctly reflects the enum and description changes in the generated root bundle. |
| mintlify/openapi.yaml | Remains synchronized with the root generated bundle for local Mintlify API-reference rendering. |
Reviews (1): Last reviewed commit: "Add SCA_NOT_COMPLETED outgoing transacti..." | Re-trigger Greptile
Both sides extended OutgoingTransactionFailureReason additively: main added SCA_NOT_COMPLETED (#762), this branch adds EXECUTION_FAILED_POST_DEBIT, SETTLEMENT_FAILED, TIMEOUT and MANUAL_REFUND. Resolved as the union and regenerated both bundles with `make build`. Co-Authored-By: peterrojs <peterrojs@users.noreply.github.com>

Summary
Adds
SCA_NOT_COMPLETEDtoOutgoingTransactionFailureReason.When a customer in an SCA-regulated region (e.g. the EU) is issued a Strong Customer Authentication challenge for a money movement and never satisfies it, the challenge expires and the transaction fails. Today that surfaces with no
failureReasonat all, so integrators can't tell an abandoned authorization apart from a genuine payment failure — the two need completely different follow-up.The new value is scoped narrowly to the case where nothing moved, so the guidance in the description ("no funds were moved; create a new quote and have the customer authorize it while the challenge is live") is always true when a client sees it. Failures where an intermediate leg already executed and needs operator reconciliation continue to surface as
QUOTE_EXECUTION_FAILED, matching how other operational failures are reported.Compatibility
Non-breaking.
oasdiff breakingagainstmainreports 0 errors, 17 warnings — all the sameresponse-property-enum-value-addedinformational warning, one per operation that returns an outgoing transaction. The repo's breaking-changes gate runs with--fail-on ERR, so this passes, andinfo.versionis unchanged per the repo convention of bumping only for breaking changes.Test plan
make build— rebundledopenapi.yaml+mintlify/openapi.yaml; the diff is limited to this enum and its descriptionmake lint-openapi— "Woohoo! Your API description is valid. 🎉", 0 errors (remaining warnings are pre-existing repo-wideschema-properties-have-examplesnoise, untouched by this change)oasdiff breaking main HEAD --fail-on ERR— exit 0Requested by @jklein24
Original PR: #760