WE BUILD - Pre-flight Conformance Specification: SCA Attestations for Payment and Risk-based Authentication (TS12 Profile)
Version 1.2 Date: 1 October 2026
Revision history
- Version 1.2 (1 October 2026): Extended
urn:eudi:sca:login_risk_transaction:1support to also permit thesca-ibanattestation type in the Issuer-requested flow, alongsidesca-user, per therb-sca-ibanRulebook’s explicit permission to use SCA-IBAN for “authentication and risk operation authorization” in the ASPSP’s own banking application, with the same rules assca-user. Unlikesca-user, ansca-ibanattestation denotes the Holder together with a specific IBAN, but it MAY still be presented to confirm an action unrelated to that account. Wheresca-ibanis used forlogin_risk_transaction(unlike forpayment), the Attestation Provider sets theaudclaim to its own RP identifier, giving this combination the sameaud-based RP-permission check assca-user. - Version 1.1 (1 October 2026): Extended scope to cover the
urn:eudi:sca:login_risk_transaction:1transaction type (TS12 [1] section 4.3.2), using thesca-userattestation type in the Issuer-requested flow, for confirmation of actions carrying a risk of fraud or abuse under PSD2 [8] Article 97(1)(c) (for example, confirming an update to a Holder’s postal address). Treats the KB-JWTjtias the Authentication Code for all in-scope SCA presentations, includinglogin_risk_transaction, as an industry best practice beyond what PSD2 [8] itself requires outside payment transactions.account_accessandemandateremain out of scope. The Third-party-requested flow is unaffected. Retitled the document accordingly. - Version 1.0 (11 September 2026): Published as the approved WE BUILD Conformance Specification on merge of PR #311; version bump only, no content changes from Version 0.9.
- Version 0.9 (10 September 2026): Returned encrypted request delivery outside the Digital Credentials API to the RECOMMENDED level of TS12 section 3.5 for RPs, keeping WU support mandatory and fixing the negotiation through
request_uri_methodpost; stated that the response mode is inherited from CS-02; changed the payment schema reference in the VC Type Metadata example fromschematoschema_uriper TS12 section 4.1. - Version 0.8 (31 August 2026): Made the document an explicit profile of CS-01 and CS-02, aligned the signed-request rule with CS-02, made encrypted request delivery mandatory outside the Digital Credentials API, corrected TS12 and CS-02 section references and the
sca-userVCT, labelled the requirement sections by lifecycle phase (issuance vs presentation), verified and expanded the examples against TS12, and applied editorial cleanup. - Version 0.7 (31 August 2026): Initial draft, profiling TS12 [1] for use within WE BUILD.
Authors / Contributors:
- Stefan Kauhaus, Visa, Germany
- Nikolaos Triantafyllou, University of Aegean, Greece
- Filip Hladky, BankID, Czech Republic
- Lal Chandran, iGrant.io, Sweden
- George J Padayatti, iGrant.io, Sweden
- Michele Massetti, Lissi, Germany
Table of Contents
1. Introduction
This document is a pre-flight conformance specification as per ADR-21 [12]. It defines the WE BUILD Conformance Specification for SCA Attestations used in payment transactions and in confirmation of actions carrying a risk of fraud or abuse. It profiles TS12 [1], the European Commission’s technical specification for Strong Customer Authentication (SCA) under PSD2 [8] with the EU Digital Identity Wallet, for use between WE BUILD consortium partners in the WP3 (Wallet for Payments) use cases. The payment use case addresses PSD2 [8] Article 97(1)(b) (electronic payment initiation); the risk-based authentication use case addresses PSD2 [8] Article 97(1)(c) (actions through a remote channel that may imply a risk of payment fraud or other abuses).
This CS is a profile of CS-01 [5] (Credential Issuance) and CS-02 [6] (Credential Presentation). SCA Attestations are issued with the OpenID4VCI profile of CS-01 and presented with the OpenID4VP profile of CS-02. This document does not restate the requirements of those specifications. It defines only the SCA-specific additions, and conformance to this CS presupposes conformance to CS-01 and CS-02 (section 9). It also relies on CS-04 [7] for Wallet Unit Attestation (WUA) validity and revocation, which gates the issuance of SCA Attestations.
TS12 [1] is itself a profile of SD-JWT-VC [9] and OpenID4VP [10], consistent with the baseline protocols adopted in ADR-2 [3] and the credential-format decisions in ADR-3 [4]. This CS narrows TS12 [1] further, for WE BUILD purposes only, as follows:
Attestation types: only the three SCA Attestation types defined in the WE BUILD Attestation Rulebooks Catalog [2] are in scope:
sca-card-dpc,sca-ibanandsca-user. No other SCA Attestation type is profiled by this CS.Transaction type: only the
payment(urn:eudi:sca:payment:1) andlogin_risk_transaction(urn:eudi:sca:login_risk_transaction:1) transaction types are used. Theaccount_accessandemandatetransaction types of TS12 [1] section 4.3 are out of scope for WE BUILD.Single-attestation presentation: only one SCA Attestation is presented to the RP per Authorization Request. Combined presentations across the three in-scope types are not used in WE BUILD.
Embedded Disclosure Policy: WE BUILD does not use the Embedded Disclosure Policy feature of TS12 [1] section 3.1.
Signed requests: TS12 [1] section 3.1 recommends signed Authorization Requests and permits unsigned requests after a Holder warning. CS-02 [6] requires all Authorization Requests to be signed and requires WUs to reject unsigned requests. This CS follows CS-02: the unsigned-request path of TS12 [1] is not available in WE BUILD (section 7.3, item 3 and section 7.4, item 1). Separately, this CS relaxes one TS12 [1] requirement from a mandatory to an optional level:
Transaction Log Inclusion: TS12 [1] section 5.3 requires Wallet Units to log defined transaction data for every SCA presentation. This CS treats it as an optional Wallet Unit capability (section 2 and section 7.3, item 11).
This CS keeps one TS12 [1] level unchanged and only fixes how it is negotiated:
- Encrypted requests: TS12 [1] section 3.5 recommends encrypted presentation requests for RPs and requires WUs to support them. This CS keeps both levels. So that any RP and WU pair interoperates, an RP that encrypts delivers the Request Object by reference with
request_uri_methodpost, the WU provides its encryption keys in thewallet_metadataof that POST exchange, and the RP sends the Request Object encrypted. A WU accepts signed Request Objects with or without encryption (section 7.3, item 9 and section 7.4, item 2).
This CS extends one TS12 [1] position beyond its own stated legal basis:
- Authentication Code: TS12 [1] section 3.6 states that a verified KB-JWT
jtiserves as the Authentication Code required by PSD2 [8] specifically for electronic payments. WE BUILD treats a verifiedjtias the Authentication Code for every in-scope SCA presentation, includinglogin_risk_transaction, as an industry best practice beyond what PSD2 [8] itself requires outside payment transactions (section 7.4, item 4).
This document supports the Interoperability Test Bed (ITB). It does not define the SCA Attestation types, their claims, or their trust and revocation mechanisms. These are defined in the respective Rulebooks (rb-sca-card-dpc, rb-sca-iban, rb-sca-user) in the Rulebooks Catalog [2].
2. Scope
This CS defines conformance requirements for Attestation Providers, Wallet Units (WU) and Relying Parties (RP) when an SCA Attestation of type sca-card-dpc, sca-iban or sca-user is presented to authenticate a payment transaction, or an sca-iban or sca-user attestation is presented to confirm an action carrying a risk of fraud or abuse, within WE BUILD.
In scope:
- Detection and processing of SCA Attestations of the three named types, including their
extendschain to the base SCA VCT. - Construction, transmission and validation of a
payment(urn:eudi:sca:payment:1) transaction data object, including Dynamic Linking and consent-screen rendering. - Construction, transmission and validation of a
login_risk_transaction(urn:eudi:sca:login_risk_transaction:1) transaction data object, using ansca-userorsca-ibanattestation in the Issuer-requested flow (section 6.1), for confirmation of actions carrying a risk of fraud or abuse under PSD2 [8] Article 97(1)(c). - Signed Request Verification (authenticity and integrity of the Authorization Request) for all in-scope SCA presentations. All requests are signed (section 1, item 5).
- Encrypted delivery of the Authorization Request outside the Digital Credentials API, at the RECOMMENDED level of TS12 [1] section 3.5, with POST delivery of the Request Object and WU-provided encryption keys where used (section 1).
- The
audclaim as the only attestation-level RP-permission control available. It applies tosca-userpresentations in the Issuer-requested flow (section 6.1) in all cases, and tosca-ibanpresentations in that flow only forlogin_risk_transaction(not forpayment). - Key Binding JWT (KB-JWT) requirements (
jti,amr,response_mode,transaction_data_hashes) for SCA presentations.
Out of scope (deviations from TS12 [1]):
- Combined SCA presentations. Presentation of more than one of the three in-scope SCA Attestation types in a single Authorization Request. Only one of the three in-scope types is presented to the RP at a time. This is a WE BUILD-specific restriction. It is distinct from the Combined Presentation pattern of TS12 [1] section 3.4, which combines one SCA Attestation with non-SCA attestations (for example payment plus age verification, driving licence or loyalty cards). That pattern is not addressed by this CS.
- Other transaction types. TS12 [1] section 4.3 defines four built-in transaction types and requires Wallet Units to process and render all of them. Under this profile, WU conformance is assessed only against the
paymentandlogin_risk_transactiontypes. Implementers are not required to implementaccount_accessoremandateto conform to this CS. - Embedded Disclosure Policy. WE BUILD Attestation Providers do not embed a disclosure policy in the three in-scope attestation types (section 7.2). Wallet Units are not required to implement the Disclosure Policy Verification step of TS12 [1] section 3.1 for these attestation types.
- Mandatory Transaction Log Inclusion. TS12 [1] section 5.3 requires transaction logging at a SHALL level. This profile relaxes it to an optional capability (section 7.3, item 11). Wallet Providers are not required to implement it to conform to this CS.
- Attestation-level RP-permission control for
sca-card-dpc, and forsca-ibanin the Third-party-requested flow (section 6.2). Because Embedded Disclosure Policy is excluded and noaudrestriction applies in these cases, this profile has no mechanism that restricts which Relying Parties may request these attestations beyond the authenticity check of Signed Request Verification. A conforming Wallet Unit presents to any Relying Party whose signed request passes Signed Request Verification (section 7.3, item 3). - Other SCA Attestation types than
sca-card-dpc,sca-ibanandsca-user. - mdoc encodings. ISO/IEC 18013-5 (mdoc) encodings of
sca-ibanandsca-user. The respective Rulebooks define mdoc namespaces, but TS12 [1] itself is scoped to SD-JWT-VC [9]. - Payment rails. SCA Attestation registration binding, Open Banking and PSD2 interbank messaging between TPPs and ASPSPs, and account information services generally. These are out of scope of TS12 [1] itself and remain out of scope here.
- WUA issuance and revocation mechanics. These are defined in CS-04 [7] and are referenced here only as an issuance precondition.
- Delivery over the Digital Credentials API. Presentation via the Digital Credentials API is specified in CS-07 [13]. The transport requirements of this CS (section 7.3, item 9 and section 7.4, items 1 and 2) apply to the
openid4vp://delivery of CS-02 [6].
3. Normative Language
The key words MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, SHOULD NOT, RECOMMENDED, MAY and OPTIONAL in this document are to be interpreted as described in RFC 2119 and RFC 8174, only when they appear in all capitals.
4. Roles and Components
- Wallet Unit (WU): the EUDI Wallet software and hardware combination that holds and presents SCA Attestations on behalf of the Holder.
- Holder / Payment Service User (PSU): the natural person who controls the Wallet Unit and completes SCA for a payment or another in-scope action.
- Attestation Provider (ASPSP / Issuer): the payment service provider that issues an
sca-card-dpc,sca-ibanorsca-userattestation into a Wallet Unit, per the relevant Rulebook. - Relying Party (RP): the party that requests the SCA presentation for a payment transaction or another in-scope action. Depending on the flow (section 6), the RP is either the Attestation Provider itself (Issuer-requested flow) or a third party such as a Payee, Merchant, PISP or TPP (Third-party-requested flow).
- Payee: the intended recipient of the payment funds, represented in the
paymenttransaction data payload.
Note (terminology mapping): In OpenID4VP [10] terminology, the RP plays the Verifier role and the WU plays the Wallet role, consistent with the mapping used in CS-02 [6] section 4.
5. Protocol Overview
An SCA presentation is a CS-02 [6] presentation with SCA-specific additions from TS12 [1]. The base flow (request creation, invocation, validation, consent, generation, submission, result handling) is defined in CS-02 [6] sections 5 and 6 and is not restated here. This CS adds the following on top of it:
- The Authorization Request carries a
transaction_dataobject of typeurn:eudi:sca:payment:1orurn:eudi:sca:login_risk_transaction:1, and its DCQL query matches exactly one of the three in-scope VCTs (section 8.1). - During validation, the WU performs Signed Request Verification (section 7.3, item 3) and validates the
transaction_data.payloadagainst the schema declared for the presented transaction type in the attestation’stransaction_data_typesmetadata (section 7.3, item 4). Disclosure Policy Verification does not apply (section 2). - The consent screen becomes a confirmation screen for the presented transaction: a payment confirmation screen for
urn:eudi:sca:payment:1, or an action confirmation screen forurn:eudi:sca:login_risk_transaction:1. The WU composes the requested attributes, the transactional data and the UI labels, per the visualisation levels declared in the attestation metadata (section 7.3, items 5 and 6). - The Holder authenticates locally to the WU with at least two factors from different categories, which the WU records in the
amrclaim (section 7.3, item 8). - The KB-JWT carries the additional claims
jti,amr,response_modeandtransaction_data_hashes(section 7.3, item 8 and section 8.2). The RP treats thejtias the Authentication Code for the presentation (section 1 and section 7.4, item 4). - The WU can log the transaction locally (section 7.3, item 11).
6. High-level Flows
Both flows in this chapter are presentation flows; they differ only in who acts as the RP. There is no SCA-specific issuance flow: an Attestation Provider issues sca-card-dpc, sca-iban and sca-user attestations with the standard issuance flows of CS-01 [5], subject to the issuance-time requirements of section 7.2, with the claims and formats defined in the Rulebooks [2].
6.1 Issuer-requested Flow
Applicable when the RP is the Attestation Provider itself (the Holder’s own ASPSP), using either sca-user or sca-iban (for sca-card-dpc, see the note below).
Note: Despite its name, this is a presentation flow, not an issuance flow. The name follows TS12 [1]: the issuing ASPSP acts as the RP and requests a presentation of an attestation that it issued earlier.
Note: The Rulebooks [2] govern which attestation types are available in each flow. The
rb-sca-card-dpcRulebook currently describes SCA-Card (DPC) for the 3-party model in remote commerce, where the credential issuer and the verifier are different organisations, which excludes the Issuer-requested case. Where a revision of that Rulebook permits use with the Attestation Provider and the RP in the same organisation,sca-card-dpccan also be used in this flow; the Rulebook is authoritative.
- Request creation: The ASPSP, acting as RP, creates a signed Authorization Request for the transaction type being confirmed, that targets a single attestation. For
urn:eudi:sca:payment:1, it targets ansca-ibanattestation to identify the account being debited, or ansca-userattestation where the account context is already established out of band (for example within the ASPSP’s own online or mobile banking session) and the SCA Attestation serves only as the second authentication factor. Forurn:eudi:sca:login_risk_transaction:1, it targets ansca-userattestation, which denotes the Holder only and no specific account or payment instrument, or ansca-ibanattestation, which denotes the Holder together with a specific IBAN but MAY nonetheless be presented to confirm an action carrying a risk of fraud or abuse under PSD2 [8] Article 97(1)(c) regardless of whether that action relates to the identified account (for example, updating a postal address) or is scoped to it (for example, changing the account’s daily transaction limit), per therb-sca-ibanRulebook. - Invocation: Same as CS-02 [6] sections 6.1.1 to 6.1.2 (same-device) or 6.2.1 to 6.2.2 (cross-device).
- Request authenticity and RP permission: The WU performs Signed Request Verification on the Authorization Request in all cases (section 7.3, item 3). Where an
sca-userattestation is requested, or ansca-ibanattestation is requested for alogin_risk_transactionpresentation, the WU additionally checks theaudclaim, which the Attestation Provider sets to the ASPSP’s own RP identifier (section 7.2, items 3 and 6), to confirm that the request originates from the issuing ASPSP. This is the only attestation-level RP-permission check available in this flow. Where ansca-ibanattestation is requested for apaymentpresentation, no equivalent permission check is available, becauseaudrestriction is not evaluated forsca-ibanin payment use (per therb-sca-ibanRulebook; see also section 2). - Validation: The WU validates the
transaction_data.payloadfor the presented transaction type (section 7.3, items 4 to 6). - Consent: The Holder reviews the consent screen for the single presented attestation (account details for
sca-iban, or a User-level confirmation of the payment or action forsca-user) and confirms. - Generation: The WU generates a single KB-JWT for the presented attestation (section 7.3, item 8).
- Submission and outcome: Same as CS-02 [6] sections 6.1.6 to 6.1.7. The ASPSP validates the KB-JWT and proceeds with payment execution or the confirmed action, as applicable.
Note: Combined presentation is out of scope (section 2). An
sca-userattestation presented alone for apaymenttransaction relies on the account or card context being established outside the wallet exchange, for example within the ASPSP’s own online or mobile banking session; for alogin_risk_transactionpresentation usingsca-user, no account or card context is needed, since the attestation confirms the Holder’s identity for the action itself. Ansca-ibanattestation inherently carries its account context in both cases, whether or not the specific action it confirms relates to that account. Both uses are consistent with the description in TS12 [1] of the Issuer-requested flow as resembling banks’ existing authenticator solutions.
6.2 Third-party-requested Flow
Applicable when the RP is not the Attestation Provider (for example a Merchant, or a TPP performing an embedded SCA flow), typically using sca-card-dpc or sca-iban.
- Request creation: The third-party RP creates a signed Authorization Request for
urn:eudi:sca:payment:1that targets ansca-card-dpcorsca-ibanattestation, encrypted where the RP supports encryption (section 7.4, items 1 and 2). - Invocation: Same as section 6.1, step 2.
- Request authenticity: The WU performs Signed Request Verification (section 7.3, item 3) as the only check on the request (section 7.1, item 3). No Embedded Disclosure Policy applies to either attestation type (section 2). No
audclaim is defined forsca-card-dpc. Forsca-iban, anaudclaim exists but is not evaluated for payment use, regardless of flow (section 6.1, step 3). - Validation, consent, generation, submission: Same as section 6.1, steps 4 to 7.
- Outcome: The RP validates the response and proceeds with any further messaging required to complete the payment, for example Open Banking messaging between the RP (as TPP) and the ASPSP, or card scheme messaging between Merchant, PSP or Acquirer and card Issuer (
sca-card-dpc). This messaging is out of scope (section 2).
7. Normative Requirements
The requirements below are additions on top of CS-01 [5] (issuance) and CS-02 [6] (presentation). The base requirements of those specifications continue to apply and are not restated.
7.1 Common Requirements (Attestation Provider, WU and RP)
- Implementations SHALL restrict
transaction_data.typetourn:eudi:sca:payment:1orurn:eudi:sca:login_risk_transaction:1for all SCA presentations. RPs SHALL NOT request, and WUs MAY reject, presentations declaringurn:eudi:sca:account_access:1orurn:eudi:sca:emandate:1. - Implementations SHALL restrict SCA Attestation processing to the
sca-card-dpc,sca-ibanandsca-usertypes, identified via theirvctextendschain to the base SCA VCT. - Implementations SHALL NOT treat Signed Request Verification (section 7.3, item 3) as providing RP-permission control. It establishes request authenticity and integrity only.
7.2 Attestation Provider Requirements (Issuance)
All requirements in this section apply at issuance time. The Attestation Provider issues SCA Attestations as an Issuer under CS-01 [5]. In addition, the Attestation Provider:
- SHALL NOT embed a disclosure policy in
sca-card-dpc,sca-ibanorsca-userattestations. - SHALL validate the Wallet Unit’s WUA per CS-04 [7] before issuance, and SHALL ensure that the SCA Attestation’s validity period does not exceed the WUA’s validity period (TS12 [1] section 5.1).
- SHALL, for
sca-userattestations, set theaudclaim to its own RP identifier(s), consistent with the two-party-only model defined in therb-sca-userRulebook. - SHALL NOT rely on
audrestriction forsca-card-dpcandsca-ibanattestations intended for use in a Third-party-requested flow (section 6.2). No attestation-level RP-permission control applies to these cases (section 2). - SHALL declare
transaction_data_typesmetadata covering, at minimum,urn:eudi:sca:payment:1forsca-card-dpcattestations, andurn:eudi:sca:payment:1and/orurn:eudi:sca:login_risk_transaction:1forsca-ibanandsca-userattestations, consistent with the Attestation Provider’s intended use of each attestation. The Attestation Provider MAY omiturn:eudi:sca:account_access:1andurn:eudi:sca:emandate:1metadata, which remain out of scope (section 2). - SHALL, for
sca-ibanattestations intended for use withurn:eudi:sca:login_risk_transaction:1in the Issuer-requested flow (section 6.1), set theaudclaim to its own RP identifier(s), per therb-sca-ibanRulebook’s permission to apply the same rules assca-userto this use case. This requirement does NOT apply tosca-ibanattestations used forurn:eudi:sca:payment:1(item 4).
Example (illustrative, non-normative) VC Type Metadata for an sca-iban attestation, showing the SCA-specific parameters of TS12 [1] sections 2.3, 3.3.3 and 4.1 and the VCT hierarchy of the rb-sca-iban Rulebook [2]:
{
"vct": "https://issuer.bank.example/credentials/sca/iban/1.0",
"name": "Example Bank SCA-IBAN Attestation",
"extends": "https://webuildconsortium.eu/sca/sca-iban/1.0",
"category": "urn:eu:europa:ec:eudi:sua:sca",
"transaction_data_types": {
"urn:eudi:sca:payment:1": {
"schema_uri": "urn:eudi:sca:payment:1",
"claims": [
{
"path": ["payload", "amount"],
"visualisation": 1,
"display": [
{
"lang": "en-GB",
"label": "Amount",
"description": "Amount of the payment"
}
]
},
{
"path": ["payload", "payee", "name"],
"visualisation": 1,
"display": [
{
"lang": "en-GB",
"label": "Payee",
"description": "Recipient of the payment"
}
]
}
],
"ui_labels": {
"affirmative_action_label": [
{ "lang": "en", "value": "Confirm Payment" }
],
"denial_action_label": [
{ "lang": "en", "value": "Cancel Payment" }
]
}
},
"urn:eudi:sca:login_risk_transaction:1": {
"schema_uri": "urn:eudi:sca:login_risk_transaction:1",
"claims": [
{
"path": ["payload", "service"],
"visualisation": 2,
"display": [
{
"lang": "en-GB",
"label": "Service",
"description": "Service requesting confirmation"
}
]
},
{
"path": ["payload", "action"],
"visualisation": 1,
"display": [
{
"lang": "en-GB",
"label": "Action",
"description": "Action to be confirmed"
}
]
}
],
"ui_labels": {
"affirmative_action_label": [
{ "lang": "en", "value": "Confirm" }
],
"denial_action_label": [
{ "lang": "en", "value": "Cancel" }
]
}
}
}
}This example shows an sca-iban attestation declaring both in-scope transaction types: urn:eudi:sca:payment:1 to identify the account being debited (section 6.1, step 1), and urn:eudi:sca:login_risk_transaction:1 to confirm an action under PSD2 [8] Article 97(1)(c), per the aud-setting requirement of item 6 above.
In this profile, the key of each transaction_data_types entry is the transaction type itself (urn:eudi:sca:payment:1), so the value that the RP sends as transaction_data.type is also the key that the WU looks up (TS12 [1] section 3.2).
The payment schema is referenced by its URN in schema_uri, which TS12 [1] section 4.1 defines for references, whereas schema is defined for an embedded JSON Schema. The WU recognises urn:eudi:sca:payment:1 as the built-in payment schema of TS12 [1] section 4.3.1 and does not resolve it. The non-normative example in TS12 [1] section 2.3 uses schema for the same URN; this inconsistency is reported upstream in eudi-doc-standards-and-technical-specifications issue 651.
Example (illustrative, non-normative) VC Type Metadata for an sca-user attestation declaring urn:eudi:sca:login_risk_transaction:1, per TS12 [1] section 4.3.2:
{
"vct": "https://issuer.bank.example/credentials/sca/user/1.0",
"name": "Example Bank SCA-User Attestation",
"extends": "https://webuildconsortium.eu/sca/sca-user/1.0",
"category": "urn:eu:europa:ec:eudi:sua:sca",
"transaction_data_types": {
"urn:eudi:sca:login_risk_transaction:1": {
"schema_uri": "urn:eudi:sca:login_risk_transaction:1",
"claims": [
{
"path": ["payload", "service"],
"visualisation": 2,
"display": [
{
"lang": "en-GB",
"label": "Service",
"description": "Service requesting confirmation"
}
]
},
{
"path": ["payload", "action"],
"visualisation": 1,
"display": [
{
"lang": "en-GB",
"label": "Action",
"description": "Action to be confirmed"
}
]
}
],
"ui_labels": {
"affirmative_action_label": [
{ "lang": "en", "value": "Confirm" }
],
"denial_action_label": [
{ "lang": "en", "value": "Cancel" }
]
}
}
}
}The WU recognises urn:eudi:sca:login_risk_transaction:1 as the built-in login and risk-based authentication schema of TS12 [1] section 4.3.2 and does not resolve it, following the same schema_uri convention as the payment schema above.
7.3 Wallet Unit Requirements (Presentation)
All requirements in this section apply at presentation time. The WU obtains SCA Attestations under CS-01 [5] and presents them under CS-02 [6]. In addition, the WU:
- SHALL evaluate the SD-JWT VC Type Metadata
categoryclaim per TS12 [1] section 3 to detect SCA Attestations, restricted to the three in-scope types (section 7.1, item 2). - SHALL NOT perform Disclosure Policy Verification (TS12 [1] section 3.1) for attestations in scope of this CS.
- SHALL perform Signed Request Verification (TS12 [1] section 3.1) for every SCA Authorization Request, regardless of flow: verify the signature and certificate, and cease processing and inform the Holder if the verification fails. The WU SHALL reject unsigned requests, as required by CS-02 [6] section 7.1. The unsigned-request path of TS12 [1] section 3.1 (warn the User and continue on confirmation) SHALL NOT be used.
- SHALL validate
transaction_data.payloadagainst the schema declared for the presentedtransaction_data.type(urn:eudi:sca:payment:1orurn:eudi:sca:login_risk_transaction:1) in the attestation’stransaction_data_typesmetadata, per TS12 [1] section 3.2, and SHALL cease processing on validation failure. - SHALL render the confirmation screen for the presented transaction per the visualisation levels declared in the attestation’s Claim Metadata, defaulting to level
3where unset (TS12 [1] sections 3.3.1 to 3.3.2). - SHALL display the
affirmative_action_labeland, if present, thedenial_action_label,transaction_titleandsecurity_hintUI elements per TS12 [1] section 3.3.3. - SHALL NOT present more than one SCA Attestation, across
sca-card-dpc,sca-ibanandsca-user, in response to a single Authorization Request. Combined presentation of these types is out of scope (section 2). - SHALL include the following in every KB-JWT generated in an SCA presentation, per TS12 [1] section 3.6 and OpenID4VP [10]:
- a fresh, cryptographically random
jti, unique per presentation; - a
response_modeclaim that echoes the request’sresponse_mode; - an
amrarray with at least two entries from different categories (knowledge,possession,inherence), where each entry is an object that pairs the category with the specific method used, for example{"knowledge": "pin_6_or_more_digits"}; transaction_data_hashes, calculated over the presentedtransaction_data, together with thetransaction_data_hashes_algthat identifies the algorithm used.
- a fresh, cryptographically random
- SHALL support processing of encrypted Authorization Requests per TS12 [1] section 3.5 and JAR [11]. For requests delivered outside the Digital Credentials API, the WU SHALL support POST delivery of the Request Object (
request_uri_methodpost, OpenID4VP [10] section 5.10), SHALL provide its encryption keys to the RP in thewallet_metadataof that POST exchange, and SHALL accept signed Request Objects delivered with or without encryption. - MAY reject any request declaring a transaction type other than
urn:eudi:sca:payment:1orurn:eudi:sca:login_risk_transaction:1(section 7.1, item 1). - MAY, for every SCA presentation (successful or not), log at least the
transaction_data.payload.transaction_id, and additionally: for aurn:eudi:sca:payment:1presentation, thepayee.nameand, where available, thepisp.legal_name; for aurn:eudi:sca:login_risk_transaction:1presentation, theserviceattribute where available; consistent with the Transaction Log Inclusion requirement of TS12 [1] section 5.3. WE BUILD relaxes this from a mandatory to an optional requirement: Wallet Providers are not required to implement this logging capability to conform to this CS.
7.4 Relying Party Requirements (Presentation)
All requirements in this section apply at presentation time. The RP acts as a Verifier under CS-02 [6]. In addition, the RP:
- SHALL send signed Authorization Requests (JAR [11], OpenID4VP [10] section 5) for SCA presentations, as required by CS-02 [6] sections 5 and 7.2. This CS tightens TS12 [1] section 3.1, which recommends signing (section 1, item 5).
- SHOULD, for requests delivered outside the Digital Credentials API (the
openid4vp://flows of CS-02 [6] section 6), deliver the Authorization Request encrypted, as recommended by TS12 [1] section 3.5. An RP that encrypts SHALL deliver the Request Object by reference withrequest_uri_methodpost(OpenID4VP [10] section 5.10), SHALL obtain the WU’s encryption keys from thewallet_metadatathat the WU sends in that POST exchange, and SHALL send the Request Object encrypted (JAR [11]). An RP that does not encrypt delivers the signed Request Object per CS-02 [6] section 8. This CS keeps the RECOMMENDED level of TS12 [1] section 3.5 (section 1). - SHALL, where the RP is the Attestation Provider (Issuer-requested flow, section 6.1) and requests an
sca-userattestation, ensure that its identifier is present in the attestation’saudclaim, per therb-sca-userRulebook. - SHALL treat the
jtiof a validated KB-JWT as the Authentication Code for the corresponding SCA presentation. Forurn:eudi:sca:payment:1presentations this satisfies PSD2 [8]; forurn:eudi:sca:login_risk_transaction:1presentations, WE BUILD applies the same treatment as an industry best practice, beyond what PSD2 [8] itself requires outside payment transactions (section 1). - SHALL verify that the
amrarray of each validated KB-JWT contains at least two entries from different categories before treating SCA as satisfied. - SHALL validate the presentation and the attestation per CS-02 [6] section 7.2, including revocation status where a
status_listclaim is present, SHALL recompute and verifytransaction_data_hashesagainst the exacttransaction_datasent in the Authorization Request, and SHALL cease the underlying process (payment execution or the confirmed action, as applicable) on a negative result (TS12 [1] section 5.2). - SHALL NOT construct an Authorization Request querying for more than one of
sca-card-dpc,sca-ibanorsca-user(section 2). - SHALL, where the RP is the Attestation Provider (Issuer-requested flow, section 6.1) and requests an
sca-ibanattestation for aurn:eudi:sca:login_risk_transaction:1presentation, ensure that its identifier is present in the attestation’saudclaim, per therb-sca-ibanRulebook. This requirement does NOT apply where the RP requests ansca-ibanattestation for aurn:eudi:sca:payment:1presentation (section 6.1, step 3).
8. Interface Definitions
9. Conformance
Conformance to this CS presupposes conformance to the base specifications: CS-01 [5] as an Issuer or Wallet Provider, and CS-02 [6] as a Verifier or Wallet Provider, for the respective role.
An implementation conforms to this specification as an Attestation Provider if it:
- Conforms to CS-01 [5] as an Issuer.
- Issues
sca-card-dpc,sca-ibanand/orsca-userattestations for SCA purposes without an embedded disclosure policy (section 7.2). - Validates the Wallet Unit’s WUA prior to issuance, per CS-04 [7], and caps the attestation validity at the WUA validity (section 7.2).
- Applies the
aud-restriction rules of section 7.2 appropriate to each attestation type.
An implementation conforms to this specification as a Wallet Unit if it:
- Conforms to CS-01 [5] and CS-02 [6] as a Wallet Provider.
- Restricts SCA processing to the
sca-card-dpc,sca-ibanandsca-userattestation types and theurn:eudi:sca:payment:1andurn:eudi:sca:login_risk_transaction:1transaction types (sections 2 and 7.1). - Implements Signed Request Verification for all in-scope SCA presentations, rejects unsigned requests, supports encrypted requests with POST delivery of the Request Object outside the Digital Credentials API, and does not implement or require Disclosure Policy Verification for these attestation types (section 7.3).
- Implements transaction data discovery, validation and rendering per sections 5, 6 and 7.3.
- Generates Key Binding JWTs meeting the
jti,amr,response_modeandtransaction_data_hashesrequirements of section 7.3. - Never presents more than one SCA Attestation, across
sca-card-dpc,sca-ibanandsca-user, in response to a single Authorization Request (section 7.3, item 7).
An implementation conforms to this specification as a Relying Party if it:
- Conforms to CS-02 [6] as a Verifier.
- Issues only
urn:eudi:sca:payment:1orurn:eudi:sca:login_risk_transaction:1transaction data requests for SCA presentations (section 7.1). - Sends signed Authorization Requests for all SCA presentations and, where it encrypts them outside the Digital Credentials API, does so with POST delivery of the Request Object and the WU-provided keys (section 7.4).
- Treats the KB-JWT
jtiper the requirements of section 7.4. - Constructs Authorization Requests querying for at most one of
sca-card-dpc,sca-ibanorsca-userper request (section 7.4).
This CS does not itself constitute conformance to TS12 [1]. An implementation conforming to this CS conforms to the subset of TS12 [1] described in section 2, and may additionally implement the out-of-scope features of TS12 [1] without ceasing to conform to this CS, provided the requirements above are met for the in-scope subset.
References
[1] TS12: European Commission (2026) TS12 - Electronic Payments SCA Implementation with the Wallet. eudi-doc-standards-and-technical-specifications. Available at: https://github.com/eu-digital-identity-wallet/eudi-doc-standards-and-technical-specifications/blob/main/docs/technical-specifications/ts12-electronic-payments-SCA-implementation-with-wallet.md (Accessed: 26 August 2026).
[2] Rulebooks Catalog: WE BUILD Consortium (2026) Attestation Rulebooks Catalog - rb-sca-card-dpc, rb-sca-iban, rb-sca-user. Available at: https://github.com/webuild-consortium/webuild-attestation-rulebooks-catalog/tree/main/rulebooks (Accessed: 26 August 2026).
[3] ADR-2: WE BUILD Consortium (2026) ADR-2: Baseline Protocols. wp4-architecture. Available at: https://github.com/webuild-consortium/wp4-architecture/blob/main/adr/base-protocols.md (Accessed: 26 August 2026).
[4] ADR-3: WE BUILD Consortium (2026) ADR-3: Specify PID and eAA Formats. wp4-architecture. Available at: https://github.com/webuild-consortium/wp4-architecture/blob/main/adr/document-formats.md (Accessed: 26 August 2026).
[5] CS-01: WE BUILD Consortium (2026) CS-01: Credential Issuance. wp4-architecture. Available at: https://github.com/webuild-consortium/wp4-architecture/blob/main/conformance-specs/cs-01-credential-issuance.md (Accessed: 26 August 2026).
[6] CS-02: WE BUILD Consortium (2026) CS-02: Credential Presentation. wp4-architecture. Available at: https://github.com/webuild-consortium/wp4-architecture/blob/main/conformance-specs/cs-02-credential-presentation.md (Accessed: 26 August 2026).
[7] CS-04: WE BUILD Consortium (2026) CS-04: Individual Wallet Unit Attestation (WUA) Lifecycle. wp4-architecture. Available at: https://github.com/webuild-consortium/wp4-architecture/blob/main/conformance-specs/cs-04-wua-lifecycle.md (Accessed: 26 August 2026).
[8] PSD2: European Parliament and Council (2015) Directive (EU) 2015/2366 on payment services in the internal market (PSD2). Available at: https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32015L2366 (Accessed: 26 August 2026).
[9] SD-JWT-VC: IETF OAuth Working Group (2026) SD-JWT-based Verifiable Digital Credentials (SD-JWT VC), draft-ietf-oauth-sd-jwt-vc. Available at: https://datatracker.ietf.org/doc/draft-ietf-oauth-sd-jwt-vc/ (Accessed: 26 August 2026).
[10] OpenID4VP: OpenID Foundation (2025) OpenID for Verifiable Presentations 1.0. Available at: https://openid.net/specs/openid-4-verifiable-presentations-1_0.html (Accessed: 26 August 2026).
[11] JAR: IETF (2021) RFC 9101: The OAuth 2.0 Authorization Framework: JWT-Secured Authorization Request (JAR). Available at: https://datatracker.ietf.org/doc/html/rfc9101 (Accessed: 26 August 2026).
[12] ADR-21: WE BUILD Consortium (2026) ADR-21: Pre-flight CS. wp4-architecture. Available at: https://github.com/webuild-consortium/wp4-architecture/blob/main/adr/pre-flight-CS.md (Accessed: 28 August 2026).
[13] CS-07: WE BUILD Consortium (2026) CS-07: Credential Presentation and Issuance via the Digital Credentials API. wp4-architecture. Available at: https://github.com/webuild-consortium/wp4-architecture/blob/main/conformance-specs/cs-07-credential-presentation-dc-api.md (Accessed: 31 August 2026).