Skip to content

Add SCA_NOT_COMPLETED outgoing transaction failure reason - #762

Merged
jklein24 merged 1 commit into
mainfrom
07-29-add-sca-not-completed-failure-reason
Jul 30, 2026
Merged

Add SCA_NOT_COMPLETED outgoing transaction failure reason#762
jklein24 merged 1 commit into
mainfrom
07-29-add-sca-not-completed-failure-reason

Conversation

@jklein24

Copy link
Copy Markdown
Contributor

Summary

Adds SCA_NOT_COMPLETED to OutgoingTransactionFailureReason.

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 failureReason at 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 breaking against main reports 0 errors, 17 warnings — all the same response-property-enum-value-added informational warning, one per operation that returns an outgoing transaction. The repo's breaking-changes gate runs with --fail-on ERR, so this passes, and info.version is unchanged per the repo convention of bumping only for breaking changes.

Test plan

  • make build — rebundled openapi.yaml + mintlify/openapi.yaml; the diff is limited to this enum and its description
  • make lint-openapi — "Woohoo! Your API description is valid. 🎉", 0 errors (remaining warnings are pre-existing repo-wide schema-properties-have-examples noise, untouched by this change)
  • oasdiff breaking main HEAD --fail-on ERR — exit 0

Requested by @jklein24

Original PR: #760

akanter commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

This stack of pull requests is managed by Graphite. Learn more about stacking.

@github-actions

github-actions Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds for grid

This PR will update the grid SDKs with the following commit messages.

cli

chore(internal): regenerate SDK with no functional changes

go

feat(api): add SCA_NOT_COMPLETED to OutgoingTransactionFailureReason enum

kotlin

feat(api): add SCA_NOT_COMPLETED failure reason to OutgoingTransaction

openapi

feat(api): add SCA_NOT_COMPLETED to transaction failure reason enum

php

feat(api): add SCA_NOT_COMPLETED to OutgoingTransaction FailureReason enum

python

feat(api): add SCA_NOT_COMPLETED to OutgoingTransaction failure_reason enum

ruby

feat(api): add SCA_NOT_COMPLETED failure reason to OutgoingTransaction

typescript

feat(api): add SCA_NOT_COMPLETED failure reason to OutgoingTransaction
⚠️ grid-openapi studio · code

Your SDK build had at least one "warning" diagnostic.
generate ⚠️

grid-ruby studio · code

Your SDK build had at least one "note" diagnostic.
generate ✅build ✅lint ✅test ✅

⚠️ grid-go studio · code

Your SDK build had a failure in the lint CI job, which is a regression from the base state.
generate ✅build ✅lint ❗test ❗

go get github.com/stainless-sdks/grid-go@3e59b984666648a88616990d2ab965d3dd7757b4
⚠️ grid-kotlin studio · code

Your SDK build had a failure in the test CI job, which is a regression from the base state.
generate ⚠️build ✅lint ✅test ❗

⚠️ grid-python studio · code

Your SDK build had a failure in the lint CI job, which is a regression from the base state.
generate ✅build ✅lint ❗test ❗

pip install https://pkg.stainless.com/s/grid-python/8a535cc5d82e4c63e83355e8f8bbb18023b6c7d4/grid-0.0.1-py3-none-any.whl
grid-typescript studio · conflict

Your SDK build had at least one note diagnostic.

grid-php studio · code

Your SDK build had at least one "note" diagnostic.
generate ✅lint ✅test ✅

⚠️ grid-cli studio · code

Your SDK build had a failure in the test CI job, which is a regression from the base state.
generate ⚠️build ⏭️lint ⏭️test ❗


This comment is auto-generated by GitHub Actions and is automatically kept up to date as you push.
If you push custom code to the preview branch, re-run this workflow to update the comment.
Last updated: 2026-07-30 01:25:00 UTC

@jklein24
jklein24 marked this pull request as ready for review July 29, 2026 06:31
@jklein24
jklein24 enabled auto-merge (squash) July 29, 2026 06:31
@jklein24
jklein24 requested a review from shreyav July 29, 2026 06:32
@greptile-apps

greptile-apps Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

      ⚡☠️  S C A   D O O M  ☠️⚡
     /|  _.-' METAL AUTHORIZATION '-._  |\
    /_|_/_______________________________\|_\
       \m/  LET THE EXPIRED CHALLENGE FALL  \m/

NO FUNDS MOVED — FORGE A NEW QUOTE AND AUTHORIZE AGAIN.

  • Adds SCA_NOT_COMPLETED to the outgoing transaction failure-reason enum.
  • Documents that this reason represents an expired, unsatisfied SCA challenge where no funds moved.
  • Regenerates the root and Mintlify OpenAPI bundles with the updated contract.

Confidence Score: 5/5

The 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.

Important Files Changed

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

@jklein24
jklein24 merged commit 4b3fffe into main Jul 30, 2026
18 checks passed
@jklein24
jklein24 deleted the 07-29-add-sca-not-completed-failure-reason branch July 30, 2026 01:19
ls-bolt Bot pushed a commit that referenced this pull request Jul 30, 2026
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants