Skip to content

docs: sync documentation with SCA schema changes - #701

Merged
jklein24 merged 2 commits into
mainfrom
docs/sync-20260718
Aug 14, 2026
Merged

docs: sync documentation with SCA schema changes#701
jklein24 merged 2 commits into
mainfrom
docs/sync-20260718

Conversation

@claude

@claudeclaudeBot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Summary

Documents the PENDING_AUTHORIZATION quote/transaction status for Strong Customer Authentication (EU customers), and corrects three places where the existing spec described SCA inaccurately.

Documentation

quote-system.mdx — new "Strong Customer Authentication (EU Customers)" section covering the PENDING_AUTHORIZATION status, the scaChallenge object, and POST /quotes/{quoteId}/authorize. Spells out that where the challenge appears depends on funding: a prefunded quote gets it from execute (the challenge does not exist until then, so the proof always goes on the follow-up authorize and re-calling execute returns 409), while a realtime/JIT-funded quote gets it earlier with paymentInstructions withheld.

transaction-lifecycle.mdxPENDING_AUTHORIZATION added to the status table, state diagram, and webhook events table, plus a PENDING_AUTHORIZATION payload tab, an "SCA Authorization (EU)" scenario tab, and the event wired into both the webhook handler and getUserMessage examples.

Corrections

Three inaccuracies in the pre-existing spec, found while verifying this documentation against the schemas:

  1. scaChallenge was attributed to the wrong resource.TransactionStatus.yaml and OutgoingTransactionStatus.yaml both said "authorize the transaction's scaChallenge", but neither Transaction nor OutgoingTransaction has that property — only Quote does. A developer holding a transaction from an OUTGOING_PAYMENT.PENDING_AUTHORIZATION webhook had no documented path to the challenge. Both now route through the transaction's quoteIdGET /quotes/{quoteId}POST /quotes/{quoteId}/authorize.

  2. WebhookType omitted the event this PR documents.OutgoingPaymentWebhook.yaml listed OUTGOING_PAYMENT.PENDING_AUTHORIZATION, but WebhookType.yaml — which BaseWebhook.type is $ref'd to, and which OutgoingPaymentWebhook extends — did not. The event could not validate against the base enum, which is why generated clients carry no such member. Added.

  3. Wrong terminal state for an abandoned challenge. An earlier revision of this PR drew PENDING_AUTHORIZATION → EXPIRED. OutgoingTransactionFailureReason.yaml documents SCA_NOT_COMPLETED as a failure reason, and failureReason only accompanies FAILED, so the edge is PENDING_AUTHORIZATION → FAILED with failureReason: SCA_NOT_COMPLETED.

Test plan

  • make lint passes (exit 0) — Redocly + Spectral, no new findings
  • openapi.yaml / mintlify/openapi.yaml rebundled; diff is only the changed lines, no reformat churn
  • All JSON examples in both MDX files parse
  • MDX component tags (Tabs/Tab/Info/Note/Warning/Accordion) and code fences balanced
  • Mermaid state diagram, both new tabs, and the handler example verified on the Mintlify preview deploy (local mint dev needs Node 20/22; this pod has v24)

Note: make lint-markdown fails on main too — package.json has no lint:markdown script. Pre-existing, not from this change.

@mintlify

mintlifyBot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

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

ProjectStatusPreviewUpdated (UTC)
Grid🟢 ReadyView PreviewJul 18, 2026, 8:43 AM

@vercel

vercelBot commented Jul 18, 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 30, 2026 4:35pm
grid-wallet-demoIgnoredIgnoredPreviewJul 30, 2026 4:35pm

Request Review

@greptile-apps

greptile-appsBot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR documents the Strong Customer Authentication (SCA) flow introduced for EU-region customers, adding a PENDING_AUTHORIZATION status to both the quote and transaction lifecycle docs.

  • quote-system.mdx: New SCA section under "Executing a Quote" explains the scaChallenge object and the POST /quotes/{quoteId}/authorize endpoint, with a note on sequential challenges for JIT-funded quotes.
  • transaction-lifecycle.mdx: PENDING_AUTHORIZATION added to the status table, state diagram, and webhooks table; the webhook handler example is updated with a new OUTGOING_PAYMENT.PENDING_AUTHORIZATION case. One factual inconsistency exists: the status table describes "the transaction's scaChallenge" while the authorize endpoint is quote-based, which will confuse developers acting on the webhook. A PENDING_AUTHORIZATION webhook payload example and an SCA scenario tab are also absent.

Confidence Score: 4/5

Safe to merge after resolving the transaction vs. quote ownership wording for scaChallenge; the rest of the changes are additive and accurate.

The core SCA flow is correctly described and the new state diagram transitions are accurate. One content issue in transaction-lifecycle.mdx points developers to 'the transaction's scaChallenge' when the actual authorize call goes to a quote endpoint — a developer acting solely on the webhook and the status table description would be pointed in the wrong direction. The missing PENDING_AUTHORIZATION payload example compounds this gap.

transaction-lifecycle.mdx — the status table description, missing webhook payload tab, and getUserMessage example all need a pass to align with the quote-based authorize flow.

Important Files Changed

FilenameOverview
mintlify/platform-overview/core-concepts/quote-system.mdxAdds a 'Strong Customer Authentication (EU Customers)' section under Executing a Quote; covers the PENDING_AUTHORIZATION status, scaChallenge object, and /quotes/{quoteId}/authorize endpoint. Only the SMS_OTP authorize flow is shown; the PASSKEY variant is not documented.
mintlify/platform-overview/core-concepts/transaction-lifecycle.mdxAdds PENDING_AUTHORIZATION to the status table, state diagram, and webhook events table; updates the webhook handler example. The status table incorrectly directs developers to 'the transaction's scaChallenge' while the authorize endpoint is quote-based; a PENDING_AUTHORIZATION webhook payload example and an SCA scenario tab are also missing.

Sequence Diagram

%%{init: {'theme': 'neutral'}}%%
sequenceDiagram
participant App
participant GridAPI
participant Customer
App->>GridAPI: POST /quotes
GridAPI-->>App: "Quote { status: PENDING_AUTHORIZATION, scaChallenge }"
App->>Customer: Prompt SCA challenge (e.g. SMS OTP)
Customer-->>App: Submits proof (code)
App->>GridAPI: "POST /quotes/{quoteId}/authorize { code }"
GridAPI-->>App: Quote status update
alt More challenges required
GridAPI-->>App: status: PENDING_AUTHORIZATION (next challenge)
App->>Customer: Prompt next SCA challenge
Customer-->>App: Submits proof
App->>GridAPI: "POST /quotes/{quoteId}/authorize"
end
GridAPI-->>App: Quote status: PROCESSING
GridAPI--)App: Webhook: OUTGOING_PAYMENT.PENDING_AUTHORIZATION
GridAPI--)App: Webhook: OUTGOING_PAYMENT.PROCESSING
GridAPI--)App: Webhook: OUTGOING_PAYMENT.COMPLETED
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
sequenceDiagram
participant App
participant GridAPI
participant Customer
App->>GridAPI: POST /quotes
GridAPI-->>App: "Quote { status: PENDING_AUTHORIZATION, scaChallenge }"
App->>Customer: Prompt SCA challenge (e.g. SMS OTP)
Customer-->>App: Submits proof (code)
App->>GridAPI: "POST /quotes/{quoteId}/authorize { code }"
GridAPI-->>App: Quote status update
alt More challenges required
GridAPI-->>App: status: PENDING_AUTHORIZATION (next challenge)
App->>Customer: Prompt next SCA challenge
Customer-->>App: Submits proof
App->>GridAPI: "POST /quotes/{quoteId}/authorize"
end
GridAPI-->>App: Quote status: PROCESSING
GridAPI--)App: Webhook: OUTGOING_PAYMENT.PENDING_AUTHORIZATION
GridAPI--)App: Webhook: OUTGOING_PAYMENT.PROCESSING
GridAPI--)App: Webhook: OUTGOING_PAYMENT.COMPLETED
Loading

Comments Outside Diff (2)

  1. mintlify/platform-overview/core-concepts/transaction-lifecycle.mdx, line 453-455 (link)

    P2 The getUserMessage helper in the Best Practices accordion is missing OUTGOING_PAYMENT.PENDING_AUTHORIZATION. Developers following this example would fall through to the generic default branch for EU SCA customers, showing "Payment status updated." instead of prompting the user to complete their authentication challenge.

    Context Used: mintlify/AGENTS.md (source)

    Prompt To Fix With AI
    This is a comment left during a code review.
    Path: mintlify/platform-overview/core-concepts/transaction-lifecycle.mdx
    Line: 453-455
    Comment:
    The `getUserMessage` helper in the Best Practices accordion is missing `OUTGOING_PAYMENT.PENDING_AUTHORIZATION`. Developers following this example would fall through to the generic `default` branch for EU SCA customers, showing "Payment status updated." instead of prompting the user to complete their authentication challenge.
    **Context Used:** mintlify/AGENTS.md ([source](https://app.greptile.com/lightspark/github/lightsparkdev/grid-api/-/custom-context?memory=51934046-75fb-42d3-9870-f42d61cb60e3))
    How can I resolve this? If you propose a fix, please make it concise.
  2. mintlify/platform-overview/core-concepts/transaction-lifecycle.mdx, line 307-368 (link)

    P2Missing SCA scenario tab

    The Scenarios tabs cover Happy Path, Failure with Refund, Failure with Failed Refund, Bank Return, and Manual Cancellation — but there is no tab for the SCA flow (PENDING → PENDING_AUTHORIZATION → PROCESSING → COMPLETED). Adding this would round out the new documentation and help EU-region developers quickly confirm the expected webhook sequence.

    Prompt To Fix With AI
    This is a comment left during a code review.
    Path: mintlify/platform-overview/core-concepts/transaction-lifecycle.mdx
    Line: 307-368
    Comment:
    **Missing SCA scenario tab**
    The Scenarios tabs cover Happy Path, Failure with Refund, Failure with Failed Refund, Bank Return, and Manual Cancellation — but there is no tab for the SCA flow (`PENDING → PENDING_AUTHORIZATION → PROCESSING → COMPLETED`). Adding this would round out the new documentation and help EU-region developers quickly confirm the expected webhook sequence.
    How can I resolve this? If you propose a fix, please make it concise.

    Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Prompt To Fix All With AI
Fix the following 4 code review issues. Work through them one at a time, proposing concise fixes.
---### Issue 1 of 4
mintlify/platform-overview/core-concepts/transaction-lifecycle.mdx:124
**Misleading field reference — `scaChallenge` lives on the quote, not the transaction**
The description says "authorize the transaction's `scaChallenge`", but the only authorize endpoint documented is `POST /quotes/{quoteId}/authorize`, and the `scaChallenge` object is shown on the quote response (in `quote-system.mdx`). A developer who receives an `OUTGOING_PAYMENT.PENDING_AUTHORIZATION` webhook has a transaction ID, not a quote ID — the status table should either reference the quote's `scaChallenge` and mention using the `quoteId` field, or a webhook payload example for this event should be added showing how to obtain the quote ID needed to call `/quotes/{quoteId}/authorize`.
### Issue 2 of 4
mintlify/platform-overview/core-concepts/transaction-lifecycle.mdx:453-455
The `getUserMessage` helper in the Best Practices accordion is missing `OUTGOING_PAYMENT.PENDING_AUTHORIZATION`. Developers following this example would fall through to the generic `default` branch for EU SCA customers, showing "Payment status updated." instead of prompting the user to complete their authentication challenge.
```suggestion switch (webhookType) { case 'OUTGOING_PAYMENT.PENDING': return 'Payment processing...'; case 'OUTGOING_PAYMENT.PENDING_AUTHORIZATION': return 'Authorization required. Please complete the security challenge to proceed.';```### Issue 3 of 4
mintlify/platform-overview/core-concepts/transaction-lifecycle.mdx:197
**Missing webhook payload example for `PENDING_AUTHORIZATION`**
The Example Payloads tabs include PENDING, COMPLETED, FAILED, and REFUND_COMPLETED, but there is no tab for `PENDING_AUTHORIZATION`. Without a concrete payload example, developers cannot see what fields (e.g., `quoteId`, `scaChallenge`) are available in the webhook body — which is critical for knowing how to retrieve the SCA challenge and call `POST /quotes/{quoteId}/authorize`.
### Issue 4 of 4
mintlify/platform-overview/core-concepts/transaction-lifecycle.mdx:307-368
**Missing SCA scenario tab**
The Scenarios tabs cover Happy Path, Failure with Refund, Failure with Failed Refund, Bank Return, and Manual Cancellation — but there is no tab for the SCA flow (`PENDING → PENDING_AUTHORIZATION → PROCESSING → COMPLETED`). Adding this would round out the new documentation and help EU-region developers quickly confirm the expected webhook sequence.

Reviews (1): Last reviewed commit: "docs: add PENDING_AUTHORIZATION status f..." | Re-trigger Greptile

| Status | Description |
|--------|-------------|
| **PENDING** | Quote is pending confirmation |
| **PENDING_AUTHORIZATION** | Awaiting Strong Customer Authentication. Only occurs for customers in regions where SCA is required (e.g., EU); authorize the transaction's `scaChallenge` to proceed. |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1Misleading field reference — scaChallenge lives on the quote, not the transaction

The description says "authorize the transaction's scaChallenge", but the only authorize endpoint documented is POST /quotes/{quoteId}/authorize, and the scaChallenge object is shown on the quote response (in quote-system.mdx). A developer who receives an OUTGOING_PAYMENT.PENDING_AUTHORIZATION webhook has a transaction ID, not a quote ID — the status table should either reference the quote's scaChallenge and mention using the quoteId field, or a webhook payload example for this event should be added showing how to obtain the quote ID needed to call /quotes/{quoteId}/authorize.

Prompt To Fix With AI
This is a comment left during a code review.
Path: mintlify/platform-overview/core-concepts/transaction-lifecycle.mdx
Line: 124
Comment:
**Misleading field reference — `scaChallenge` lives on the quote, not the transaction**
The description says "authorize the transaction's `scaChallenge`", but the only authorize endpoint documented is `POST /quotes/{quoteId}/authorize`, and the `scaChallenge` object is shown on the quote response (in `quote-system.mdx`). A developer who receives an `OUTGOING_PAYMENT.PENDING_AUTHORIZATION` webhook has a transaction ID, not a quote ID — the status table should either reference the quote's `scaChallenge` and mention using the `quoteId` field, or a webhook payload example for this event should be added showing how to obtain the quote ID needed to call `/quotes/{quoteId}/authorize`.
How can I resolve this? If you propose a fix, please make it concise.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@claude fix this one.

@jklein24jklein24Jul 30, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bolt address this one.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch — and it's worse than a wording slip, so thanks for flagging it. I checked the schemas: Transaction/OutgoingTransaction have noscaChallenge property at all (only Quote does, at Quote.yaml:140). So "authorize the transaction's scaChallenge" pointed at a field that doesn't exist on the resource being described.

The transaction does carry quoteId, so that's the bridge. Fixed in three places:

  • transaction-lifecycle.mdx status table now reads: the challenge lives on the quote, fetch GET /quotes/{quoteId} using the transaction's quoteId, then authorize via POST /quotes/{quoteId}/authorize.
  • TransactionStatus.yaml + OutgoingTransactionStatus.yaml had the identical wrong sentence — these are the source the docs were paraphrasing, so I corrected them too rather than leaving the spec and docs disagreeing.
  • The webhook handler example now shows the actual two-step (getQuote(data.quoteId) → prompt with quote.scaChallenge) instead of just notifying the customer with no path to the challenge.

Also added the PENDING_AUTHORIZATION payload tab you asked about in the sibling thread, which makes quoteId concrete on the wire.

Two extra things I found while verifying against the spec, both fixed here:

  1. The state diagram edge was wrong. This PR had PENDING_AUTHORIZATION → EXPIRED for an unsatisfied challenge, but OutgoingTransactionFailureReason.yaml documents SCA_NOT_COMPLETED as a failure reason, and failureReason only accompanies FAILED. Changed to PENDING_AUTHORIZATION → FAILED and documented failureReason: SCA_NOT_COMPLETED in the new scenario tab.
  2. WebhookType.yaml was missing OUTGOING_PAYMENT.PENDING_AUTHORIZATION while OutgoingPaymentWebhook.yaml listed it. Since OutgoingPaymentWebhook extends BaseWebhook, whose type is $ref'd to WebhookType, the event we're documenting couldn't validate against the base enum — which is why the generated client has no such member. Added it, so documenting the webhook is now backed by a spec that actually admits it.

make lint passes (exit 0) and the bundle regenerated cleanly — the openapi.yaml / mintlify/openapi.yaml diff is only the lines I changed, no reformat churn.


🤖 custodial-vertex(#1) | Feedback

@ls-bolt

ls-boltBot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

📌 Bolt Status

2026-07-30 16:19:38 UTC — ⚡ Agent custodial-vertex(#1) started


Feedback

…on docs
Document the new Strong Customer Authentication (SCA) flow for EU customers:
- Add PENDING_AUTHORIZATION status to transaction status table
- Update state diagram with SCA authorization flow
- Add OUTGOING_PAYMENT.PENDING_AUTHORIZATION webhook event
- Add SCA section to quote system docs explaining the authorize flow
- Update webhook handling example to show SCA case
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@ls-bolt

ls-boltBot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

⚡ On it — addressing the two open Greptile threads (the scaChallenge quote-vs-transaction wording @jklein24 flagged, plus the missing PENDING_AUTHORIZATION webhook payload example). I'll verify against the OpenAPI spec and update here when it's pushed.


🤖 custodial-vertex(#1) | Feedback

The transaction resource has no scaChallenge field — only Quote does. Route
readers through the transaction's quoteId, add the missing webhook payload
example and SCA scenario tab, and correct the abandoned-challenge terminal
state to FAILED/SCA_NOT_COMPLETED.
Co-Authored-By: jklein24 <jklein24@users.noreply.github.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@ls-bolt
ls-boltBotforce-pushed the docs/sync-20260718 branch from e410530 to d91e3a9CompareJuly 30, 2026 16:35
@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 30, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds for grid

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

cli

docs(api): clarify PENDING_AUTHORIZATION status in transactions

go

docs(api): clarify PENDING_AUTHORIZATION status description in transactions

kotlin

docs(types): update PENDING_AUTHORIZATION description in transaction status types

openapi

feat(api): add PENDING_AUTHORIZATION value to outgoing_payment webhook events

php

docs(api): clarify PENDING_AUTHORIZATION status handling in transactions

python

docs(api): clarify PENDING_AUTHORIZATION status in transactions

ruby

docs(api): clarify PENDING_AUTHORIZATION status in transaction models

typescript

docs(api): clarify PENDING_AUTHORIZATION handling in transactions status descriptions
⚠️grid-openapistudio · code

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

grid-rubystudio · code

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

⚠️grid-gostudio · 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@32cc0b49f00e7010489fcd0693e6661b942d696e
⚠️grid-kotlinstudio · 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-typescriptstudio · conflict

Your SDK build had at least one note diagnostic.

⚠️grid-pythonstudio · 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/93c08829ec3656f39a9f52fb3fbb622212447005/grid-0.0.1-py3-none-any.whl
grid-phpstudio · code

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

⚠️grid-clistudio · code

Your SDK build had a failure in the build 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-08-14 21:45:42 UTC

@ls-bolt

ls-boltBot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Revision 2

Addressed both open review threads, and fixed three spec inaccuracies surfaced while verifying the docs against the schemas.

Review feedback

  • scaChallenge no longer attributed to the transaction, per @jklein24's request on the P1 thread — Transaction/OutgoingTransaction have no such property, only Quote does. The status table, the webhook handler example, and the two spec files (TransactionStatus.yaml, OutgoingTransactionStatus.yaml) now route through the transaction's quoteId.
  • Added the PENDING_AUTHORIZATION webhook payload tab (shows quoteId, not a nonexistent scaChallenge).
  • Added the "SCA Authorization (EU)" scenario tab.
  • Added OUTGOING_PAYMENT.PENDING_AUTHORIZATION to the getUserMessage helper so EU customers don't fall through to the generic default.

Found while verifying

  • State diagram edge corrected: an unsatisfied challenge ends in FAILED with failureReason: SCA_NOT_COMPLETED, not EXPIREDfailureReason only accompanies FAILED.
  • WebhookType.yaml was missing OUTGOING_PAYMENT.PENDING_AUTHORIZATION while OutgoingPaymentWebhook.yaml listed it. Since the latter extends BaseWebhook, whose type is $ref'd to WebhookType, the event we document here couldn't validate against the base enum. Added.
  • The SCA section in quote-system.mdx said the challenge must be authorized before execution. For a prefunded quote that's backwards — execute is what creates the challenge, so following the old text would deadlock the flow. Now split by funding mode.

make lint passes; the regenerated bundles contain only the lines I changed. The description above has been rewritten to match what actually shipped (the original claimed some files needed no changes).

@jklein24
jklein24 merged commit b78f83d into mainAug 14, 2026
10 checks passed
@jklein24
jklein24 deleted the docs/sync-20260718 branch August 14, 2026 21:39
ls-boltBot pushed a commit that referenced this pull request Aug 28, 2026
The SCA surface moved after this guide was written; bring it current:
- SCA login complete now requires `endUserIpAddress` and returns
`sessionExpiresAt` (#780); the session-scope guidance now tells
integrators to prompt re-login ahead of it.
- Quote authorize documents `409 SCA_SESSION_REQUIRED` and
`423 ACCOUNT_LOCKED` (#761); both join the error tables, and the
snippet notes authorizing requires an active login session.
- A challenge left to expire unsatisfied now fails the transaction with
`failureReason: SCA_NOT_COMPLETED` and no funds moved (#762).
- Trusted external accounts refuse `DELETE` with
`409 BENEFICIARY_TRUSTED`; untrust first (#770).
- The challenge lives on the quote, not the transaction — webhook
consumers route via the transaction's `quoteId` (#701).
- `POST /transfer-out` is deprecated in favor of `POST /quotes` with
`immediatelyExecute: true` (#856); the transfer-out tab now says so.
ls-boltBot pushed a commit that referenced this pull request Aug 29, 2026
The SCA surface moved after this guide was written; bring it current:
- SCA login complete now requires `endUserIpAddress` and returns
`sessionExpiresAt` (#780); the session-scope guidance now tells
integrators to prompt re-login ahead of it.
- Quote authorize documents `409 SCA_SESSION_REQUIRED` and
`423 ACCOUNT_LOCKED` (#761); both join the error tables, and the
snippet notes authorizing requires an active login session.
- A challenge left to expire unsatisfied now fails the transaction with
`failureReason: SCA_NOT_COMPLETED` and no funds moved (#762).
- Trusted external accounts refuse `DELETE` with
`409 BENEFICIARY_TRUSTED`; untrust first (#770).
- The challenge lives on the quote, not the transaction — webhook
consumers route via the transaction's `quoteId` (#701).
- `POST /transfer-out` is deprecated in favor of `POST /quotes` with
`immediatelyExecute: true` (#856); the transfer-out tab now says so.
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