With Risk Evaluation
Card Link with Risk extends the standard Card Link integration by allowing the issuer to return a risk decision alongside card details in a single response. Instead of - or in addition to - Apata evaluating the configured Risk Profile, the issuer's own risk engine can directly influence the authentication outcome.
To integrate Card Link with Risk, implement the webhook endpoint according to the Card Link with Risk API reference.
How It Works
Card data and risk decision are returned together in one Card Link response, eliminating the need for a separate risk engine call.
The issuer's riskAction takes precedence over Apata's Risk Profile rules when set to ACCEPT, CHALLENGE, or REJECT.
The issuer can return a numeric Risk Score and category, which Apata uses within its Risk Profile evaluation via a Low-Risk Rule.
When accepting a transaction, the issuer can specify which exemption to report to the payment scheme, giving full control over the authentication outcome.
The Card Link request is sent synchronously during transaction processing. The issuer must respond within the timeout for their payment scheme.
Maximum response time: 5 seconds
Maximum response time: 7 seconds
If the issuer's endpoint does not respond within the timeout, the transaction is errored withwebhook_call_failedand the cardholder cannot complete authentication.
Risk Response Fields
The issuer returns the following risk fields in the Card Link response alongside the standard card details.
riskAction
Controls the authentication outcome directly. When provided, Apata acts on this value before evaluating any Risk Rules.
| Value | Behaviour |
|---|---|
ACCEPT | Transaction is approved as a Frictionless Transaction. Risk Rules are not evaluated. |
CHALLENGE | Transaction is sent to Challenge Flow. Risk Rules are not evaluated. |
REJECT | Transaction is REJECTED. Risk Rules are not evaluated. |
EVALUATE | Apata evaluates the Risk Profile rules as normal. This is the default if riskAction is not provided. |
riskScoreCategory
An optional categorical risk assessment returned by the issuer. Used by Apata's Low-Risk Rule within the Risk Profile when riskAction is EVALUATE or not provided.
| Value | Description |
|---|---|
LOW | The issuer's risk engine considers the transaction low risk. |
MEDIUM | The issuer's risk engine considers the transaction medium risk. |
HIGH | The issuer's risk engine considers the transaction high risk. |
riskScore
An optional numeric score between -100 and 100 returned by the issuer's External Risk Engine. Used alongside riskScoreCategory to inform Apata's Risk Profile evaluation.
A lower score indicates lower risk. A higher score indicates higher risk.
exemption
Only applicable when riskAction is ACCEPT. Specifies which exemption Apata reports to the payment scheme for the frictionless transaction. If not provided, defaults to LOW_RISK.
| Value | Description |
|---|---|
LOW_RISK | TRA exemption. Default if not specified. |
LOW_VALUE_PAYMENT | Low Value Payment exemption under PSD2. |
RECURRING | Recurring Payment exemption. |
ACQUIRER_EXEMPTION | Acquirer Exemption. |
MERCHANT_INITIATED | Merchant-Initiated Transaction exemption. |
ONE_LEG_TRANSACTION | One-Leg Transaction exemption. |
SECURE_CORPORATE_PAYMENT | Secure Corporate Payment exemption. |
WHITELISTED | Whitelist exemption. |
DATA_SHARE | Data Share only transaction. |
NON_PAYMENT | NPA transaction. |
Decision Flow
flowchart TD
classDef error fill:#fde8e8,stroke:#e53e3e,color:#9b2335
classDef success fill:#e6ffed,stroke:#38a169,color:#276749
classDef terminal fill:#fff5f5,stroke:#fc8181,color:#c53030
classDef process fill:#ebf8ff,stroke:#4299e1,color:#2c5282
CL([Card Link response received]) --> RA{riskAction?}
RA -->|ACCEPT| ACC["Apply specified exemption<br/>Generate Authentication Value"]:::process
RA -->|CHALLENGE| CHAL[Proceed to Challenge Flow]:::process
RA -->|REJECT| REJ[ARes: transStatus R]:::process
RA -->|"EVALUATE or not set"| SCORE{Risk score returned?}
SCORE -->|Yes| RULES["Pass score to Risk Profile<br/>Evaluate Risk Rules"]:::process
SCORE -->|No| RULES2[Evaluate Risk Rules normally]:::process
ACC --> SUC([SUCCEEDED · Finalised Event]):::success
REJ --> REJOUT([REJECTED · Finalised Event]):::terminal
RULES --> OUT{Outcome}
RULES2 --> OUT
OUT -->|Frictionless| SUC2([SUCCEEDED · Finalised Event]):::success
OUT -->|Challenge| CF([Challenge Flow · Finalised Event]):::process
OUT -->|Reject| REJ2([REJECTED · Finalised Event]):::terminal
CHAL --> CF2([Challenge Flow · Finalised Event]):::process
Example Responses
The issuer instructs Apata to challenge the cardholder regardless of Risk Rule outcomes.
{
"financialInstitutionId": "f88458df-20ea-49b7-b890-119c2f5e8c6e",
"externalId": "card-external-id-1234",
"language": "en-GB",
"riskAction": "CHALLENGE"
}Authentication Flows
Challenge Flow
The issuer returns riskAction: CHALLENGE in the Card Link response. Apata skips Risk Rule evaluation and proceeds directly to the Challenge Flow.
sequenceDiagram
autonumber
participant ch as Cardholder
participant 3ds as 3DS Server
participant ds as Directory Server
participant acs as Apata ACS
participant issuer as Issuer
ch->>3ds: Initiate transaction
3ds->>ds: AReq
ds->>acs: AReq
acs->>issuer: Card Link request
issuer->>acs: Card details + riskAction CHALLENGE
acs->>ds: ARes (transStatus C)
ds->>3ds: ARes (transStatus C)
3ds->>acs: CReq
acs->>ch: Deliver OTP and render Challenge Interface
ch->>acs: Submit OTP
acs->>acs: Verify OTP
acs->>ds: RReq
ds->>3ds: RReq
3ds->>ds: RRes
ds->>acs: RRes
acs->>ch: Redirect to merchant
opt Finalised Event
acs->>issuer: Finalised Event notification
end
Frictionless Flow (Accept)
The issuer returns riskAction: ACCEPT. Apata approves the transaction frictionlessly and reports the specified exemption to the payment scheme.
sequenceDiagram
autonumber
participant ch as Cardholder
participant 3ds as 3DS Server
participant ds as Directory Server
participant acs as Apata ACS
participant issuer as Issuer
ch->>3ds: Initiate transaction
3ds->>ds: AReq
ds->>acs: AReq
acs->>issuer: Card Link request
issuer->>acs: Card details + riskAction ACCEPT + exemption
acs->>acs: Generate Authentication Value
acs->>ds: ARes (transStatus Y)
ds->>3ds: ARes (transStatus Y)
opt Finalised Event
acs->>issuer: Finalised Event notification
end
Benefits
Card data and risk decision are combined into one response, reducing integration complexity and latency.
The issuer can bypass Apata's Risk Rules entirely for specific cards or transaction patterns.
Returning a numeric Risk Score gives Apata's Risk Profile richer signal for threshold-based decisions.
Control which exemption is reported to the payment scheme for every frictionless transaction the issuer approves.
Issuer-driven exemptions ensure correct ECI and Authentication Value values are generated for each approval type.
Like standard Card Link, no cards need to be pre-enrolled in Apata.
Updated 24 days ago