Skip to content

FCA Compliance

BlocMarket operates under UK Financial Conduct Authority (FCA) requirements for payment services and anti-money laundering (AML).

RegulationScope
Payment Services Regulations 2017 (PSD2)Payment processing, Open Banking
Proceeds of Crime Act 2002AML, suspicious activity reporting
Money Laundering Regulations 2017Customer due diligence
Consumer Duty (FCA)Customer outcomes, fair treatment

BlocMarket is not itself an authorised Payment Institution. All regulated payment activities are performed by FCA-authorised providers:

  • TrueLayer Ltd — FCA-authorised Payment Institution for Open Banking payments
  • Stripe Ltd — FCA-authorised Payment Institution, PCI DSS Level 1, for card payments and escrow deposits
RequirementDescriptionEvidence
2.1Licensed PITrueLayer Ltd is FCA-authorised PI
3.1Consumer notificationTrueLayer sends payment status webhooks
4.1Risk managementPayment amount validation, fee calculation
6.1Transaction recordingpayments table with full audit trail
8.1Access controlJWT auth, admin-only endpoints
10.1Record retentionPostgreSQL with RLS, audit logging
11.1Information securityEncrypted in transit, RLS, HMAC

BlocMarket uses Stripe for payment processing:

  • PCI DSS Level 1 compliant (Stripe handles card data)
  • Tokenization — Card data never touches BlocMarket servers
  • 3D Secure — Authentication for card payments
  • Webhook verification — HMAC-SHA256 signature validation
1. Client requests payment intent (POST /api/v1/payments/intent)
2. BlocMarket creates Stripe payment intent, returns client_secret
3. Client confirms payment — card data goes directly to Stripe, never touching BlocMarket
4. Stripe processes payment and sends signed webhook to /api/v1/payments/webhook
5. BlocMarket verifies HMAC-SHA256 signature
6. BlocMarket updates payment record (status = completed)
7. Payment event is recorded in the audit trail

Open Banking payments follow the equivalent TrueLayer flow via POST /api/v1/payments/truelayer/create-intent and POST /api/v1/payments/truelayer/create-payment.

Payment and transaction records are retained for 6 years per the Limitation Act 1980 and HMRC requirements. Stripe reference IDs (stripe_payment_intent_id, stripe_payment_method_id) are classified Restricted and encrypted at rest; only tokens are stored, never card data.

BlocMarket does NOT hold client funds. Per UK property law:

  • Solicitors hold all money in client accounts
  • BlocMarket tracks milestones and payment status only
  • Escrow deposits are processed via Stripe
  • Refunds are handled through the same payment method

Open Banking payments via TrueLayer:

FeatureImplementation
Account verificationTrueName API
Payment initiationTrueLayer Payments API
Bank authenticationRedirect flow
Payment statusWebhook + polling
  • TLS 1.3 for all API communication
  • OAuth 2.0 for bank authentication
  • FCA-regulated provider (TrueLayer)
  • No card data stored by BlocMarket
CheckTriggerImplementation
Email verificationRegistrationAutomated
Identity verificationHigh-value transactionsDocuSign Identity
Source of fundsTransactions > thresholdManual review
PEP screeningAll usersThird-party service

Automated monitoring for suspicious patterns:

PatternThresholdAction
High-value single transaction> £10,000Flag for review
Multiple rapid transactions> 5 in 1 hourFlag for review
Unusual geographic patternCross-borderEnhanced due diligence
Structured transactionsBelow threshold splittingSuspicious Activity Report

If a suspicious transaction is detected:

  1. Transaction is flagged internally
  2. Compliance officer reviews within 24 hours
  3. If confirmed, SAR filed with NCA
  4. Tipping-off prohibition enforced
  5. Audit trail maintained

Prometheus business alerts in deploy/monitoring/business_alerts.yml provide operational transaction monitoring:

AlertTrigger
BidVolumeAnomaly5m bid rate exceeds 10x the same window one hour earlier
TransactionValueSpikeCumulative transaction value exceeds 100,000
RegistrationSpike> 20 registrations in 5 minutes (bot detection)

BlocMarket tracks transaction milestones without handling funds:

MilestoneDescription
Offer AcceptedBloc assembly agreement reached
Legal ReviewSolicitor initiates due diligence
Surveys CompleteProperty surveys finalized
Contracts ExchangedOption Agreements signed (DocuSign)
CompletionTransaction finalized

All transaction events are logged with:

  • Timestamp (UTC)
  • Actor (user ID or system)
  • Action performed
  • Previous and new state
  • IP address and user agent

BlocMarket achieves PCI DSS compliance by:

  1. Never storing card data — Stripe tokenization
  2. TLS encryption — All data in transit
  3. Access controls — RBAC + RLS
  4. Audit logging — All payment events
  5. Vulnerability scanning — Trivy + cargo-deny
Data TypeStorageAccess
Card numbersNever stored (Stripe tokens)N/A
Bank detailsTrueLayer tokensSystem only
Identity documentsEncrypted (pgcrypto)Compliance officer
Transaction recordsPostgreSQLAuthorized users
ReportFrequencyAudience
Transaction summaryDailyOperations
AML activity reportWeeklyCompliance officer
SAR reportAs neededNCA
FCA regulatory returnAnnualFCA
PCI DSS assessmentAnnualQSA
ControlRequirementImplementation
Network securityPCI DSS Req 1TLS 1.3, network segmentation
Cardholder data protectionPCI DSS Req 3Stripe tokenization
Vulnerability managementPCI DSS Req 6cargo-deny, Trivy scanning
Access controlPCI DSS Req 7RBAC, RLS
MonitoringPCI DSS Req 10Prometheus, Grafana, audit logs
Security testingPCI DSS Req 11Annual pen testing
PolicyPCI DSS Req 12Documented policies