Skip to content

Add SCA_NOT_COMPLETED outgoing transaction failure reason - #760

Closed
ls-bolt[bot] wants to merge 1 commit into
mainfrom
07-29-add-sca-not-completed-failure-reason
Closed

Add SCA_NOT_COMPLETED outgoing transaction failure reason#760
ls-bolt[bot] wants to merge 1 commit into
mainfrom
07-29-add-sca-not-completed-failure-reason

Conversation

@ls-bolt

@ls-boltls-boltBot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

This PR has been claimed. The active PR is now #762.

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

@ls-boltls-boltBot added the bolt label Jul 29, 2026
@vercel

vercelBot commented Jul 29, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

2 Skipped Deployments
ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderIgnoredIgnoredPreviewJul 29, 2026 6:04am
grid-wallet-demoIgnoredIgnoredPreviewJul 29, 2026 6:04am

Request Review

@akanterGraphite App

Copy link
Copy Markdown
Contributor

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

@github-actions

github-actionsBot 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 to OutgoingTransaction failure reason

openapi

feat(api): add SCA_NOT_COMPLETED enum value to outgoing failure reasons

php

feat(api): add SCA_NOT_COMPLETED to OutgoingTransaction FailureReason enum

python

feat(api): add SCA_NOT_COMPLETED failure reason to outgoing_transaction

ruby

feat(api): add SCA_NOT_COMPLETED failure reason to OutgoingTransaction

typescript

feat(api): add SCA_NOT_COMPLETED failure reason to OutgoingTransaction

Edit this comment to update them. They will appear in their respective SDK's changelogs.

grid-typescriptstudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅build ✅lint ❗test ✅

npm install https://pkg.stainless.com/s/grid-typescript/3f1b44831db9776576b70dd627837fb727cb0873/dist.tar.gz
grid-openapistudio · code · diff

Your SDK build had at least one "warning" diagnostic, but this did not represent a regression.
generate ⚠️

grid-rubystudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅build ✅lint ✅test ✅

grid-gostudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅build ✅lint ❗test ❗

go get github.com/stainless-sdks/grid-go@a7e97d7918ee0c1dbd227a9a6f8355e398f55b0c
grid-kotlinstudio · code · diff

Your SDK build had at least one "warning" diagnostic, but this did not represent a regression.
generate ⚠️build ✅lint ✅test ❗

grid-pythonstudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅build ✅lint ❗test ❗

pip install https://pkg.stainless.com/s/grid-python/440c81eb48332330bcc2f9fd9a8168cd98515c80/grid-0.0.1-py3-none-any.whl
grid-phpstudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅lint ✅test ✅

grid-clistudio · code · diff

Your SDK build had at least one "warning" diagnostic, but this did not represent a regression.
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-29 06:09:50 UTC

@mintlify

mintlifyBot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

ProjectStatusPreviewUpdated (UTC)
Grid🟢 ReadyView PreviewJul 29, 2026, 6:05 AM

@mintlify

mintlifyBot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

ProjectStatusPreviewUpdated (UTC)
Grid🟡 BuildingJul 29, 2026, 6:04 AM

jklein24 added a commit that referenced this pull request Jul 30, 2026
## 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
@jklein24
jklein24 deleted the 07-29-add-sca-not-completed-failure-reason branch July 30, 2026 01:19
Sign up for freeto 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.

2 participants

@akanter@jklein24