Suspicious activity detected on your account
2 transactions flagged for review. Location verification can help confirm these were made by you. Click "Verify Location" above to resolve.

Good morning, Marie-Louise

Here's your financial summary for today, May 9, 2026

Quick Actions
Send Money
Pay Bill
Transfer
Investments
Fraud Help
Your Accounts
Recent Transactions
View all
🚨
International Wire Transfer
Chequing •••4821 · Ref: WR9921044
FLAGGED
-$4,200.00
May 9
⚠️
Crypto Exchange · Coinbase
Chequing •••4821 · Ref: CE7731882
FLAGGED
-$1,500.00
May 8
🛒
IGA Marchés d'alimentation
Chequing •••4821 · Point of sale
-$87.43
May 8
💼
Payroll Deposit
Chequing •••4821 · Direct deposit
+$3,450.00
May 7
⛽
Petro-Canada
Chequing •••4821 · Point of sale
-$62.10
May 6
🍽️
Restaurant Toqué!
Chequing •••4821 · Point of sale
-$124.00
May 5
Fraud Risk Assessment
Details
74
Risk Score
⚠ Elevated Risk
Location unverified Cannot confirm user is in Canada
Unusual wire transfer $4,200 to foreign account
Crypto purchase detected First-time merchant category
Known device Recognized browser fingerprint
Location Not Verified
Click "Verify Location" to confirm you're in Canada and lower your fraud risk score.
How It Works
Browser
→
CF Worker
/api/sdk · /api/license
↓
KV Store
GeoComply manages
→
Geo Result
GeoComply pushes SDK version + license into the operator's KV. The Worker just reads. Zero maintenance for the bank.
Key message: National Bank never manages SDK versions or rotates license keys. GeoComply pushes updates directly into your Cloudflare KV — your Workers just read them. One binding, zero ops.
Setup — 3 Steps
1
Create a KV namespace in Cloudflare dashboard
2
Bind it to your Worker as PP_SECRETS
3
GeoComply writes gc_license + gc_sdk_url — done
Worker: /api/license
functions/api/license.js
export async function onRequestGet({ env }) {
  const license =
    await env.PP_SECRETS.get('gc_license');

  return Response.json({ license });
}
Worker: /api/sdk
functions/api/sdk.js
export async function onRequestGet({ env }) {
  const url =
    await env.PP_SECRETS.get('gc_sdk_url');

  const res = await fetch(url);
  const js  = await res.text();

  return new Response(js, {
    headers: { 'Content-Type':
      'application/javascript' }
  });
}
wrangler.toml
[[kv_namespaces]]
binding = "PP_SECRETS"
id      = "<your-namespace-id>"
Live Status
SDK endpoint
—
License endpoint
—
License prefix
—
SDK URL (from KV)
—
GC SDK loaded
—
Geolocation API
—
Geolocation Result
Status: waiting for verification…
City: —
Region: —
Country: —
Coordinates: —
Accuracy: —