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: