Go to blue arrow
back to Tech Blog
Business

Written by:

Alexandra Mendes
Alexandra Mendes

,

Senior Growth Specialist at Imaginary Cloud

Last Published:

21 September 2026

Min Read

FinTech Software Development: 2026 Compliance Guide

Isometric illustration of a businessman with a compliance checklist, padlocked screen, safe, and financial growth symbols.

You've built the feature. It works. Then compliance says no. Not because the logic is broken, but because you missed a regulatory layer somewhere. Maybe it's KYC verification on signup. Maybe it's transaction monitoring. Maybe it's GDPR data retention. But the feature stalls and the launch delays. You're back in the sprint backlog.

Here's the uncomfortable truth: compliance isn't the compliance team's job alone. It's yours. As a developer or CTO building fintech, regulatory requirements are architectural requirements. Miss them, and you're not just delaying launch. You're risking fines, license rejection, or worse.

At Imaginary Cloud, we've spent years building fintech systems across payment platforms, lending apps, and trading engines. We've delivered solutions for major financial institutions, regional banks, and specialised investment platforms. What we've learned is simple: compliance is easier when it's baked in from the start.

This guide is for you. Developers, CTOs, compliance engineers, actually anyone building regulated financial software. We'll cover the regulatory landscape, the technical implementation patterns, the common pitfalls, and the practical steps to get compliant code into production.

blue arrow to the left
Imaginary Cloud logo

What is FinTech Compliance? (And Why It Matters)

Fintech compliance means building software that satisfies regulatory requirements for anti-money laundering (AML), know-your-customer (KYC), data protection, and jurisdiction-specific rules. Think of it like this: if a bank building a locked apartment complex needs the locks (encryption), the keycard system (authentication), and a security log (audit trail), fintech is the same. Rules exist. Code must enforce them. Oversight must verify.

Why should you care? Because compliance isn't optional, and it's not a phase you can skip. It's woven into:

  • Customer onboarding (KYC checks block bad actors before they're in your system)
  • Transaction processing (AML rules flag suspicious patterns in real-time)
  • Data handling (GDPR, data minimisation, retention policies - all architectural decisions)
  • Team accountability (audit logs prove who did what and when)

Miss compliance, and you're not just breaking rules. You're building technical debt that gets exponentially more expensive to fix later. At Imaginary Cloud, we've seen teams retrofit compliance into systems designed without it. It's slow and usually costs 3 to 5x more than building it right the first time.

blue arrow to the left
Imaginary Cloud logo

The Global Regulatory Framework: 2026 Edition

Compliance rules differ wildly by jurisdiction. There's no "one global standard." If you're launching internationally (or even thinking about it), you need to know the landscape.

Three regulatory pillars shape fintech development everywhere: anti-money laundering (AML), know-your-customer (KYC), and data protection. On top sit jurisdiction-specific rules - and they vary. Here's what you need to know:

United States: FinCEN and BSA Rules

The Financial Crimes Enforcement Network (FinCEN) governs Money Services Businesses (MSBs). If you're handling money transfers, payouts, or stored value, you likely need FinCEN registration.

1. Core obligations:

  • MSB registration (if you're a money transmitter)
  • OFAC screening (Office of Foreign Assets Control - sanctions list screening for every customer)
  • Suspicious Activity Reports (SARs) when you detect suspicious transactions
  • Customer identification (name, address, DOB minimum)
  • Transaction records (what, who, when, how much)

2. 2026 update: FinCEN's focus has tightened on de-risking. Banks are dropping customers more aggressively, so fintech acting as a middle layer must have airtight compliance. One missed SAR filing and your banking relationships are at risk.

European Union: PSD2, GDPR, MiFID II

Europe's regulatory stack is dense. PSD2 (Payment Services Directive 2) mandates open banking and strong authentication. GDPR demands data minimisation and privacy by design. MiFID II applies if you're offering investment services.

1. PSD2 (Payment Services):

  • Strong Customer Authentication (SCA): Multi-factor auth for payments over €30 (with exemptions)
  • Open Banking APIs: Licensed Payment Service Providers (PSPs) and Account Servicing Payment Service Providers (ASPSPs) must share customer data via regulated APIs
  • Liability shifts: Who pays if fraud happens? Depends on who was negligent (you need clear logs)

2. 2026 update: PSD2 Phase 2 (October 2024 baseline) now requires tighter SCA enforcement. Banks have raised the bar. Strong auth isn't optional anymore.

3. GDPR (Data Protection):

  • Collect only what you need (data minimisation)
  • Encrypt it (data security)
  • Let users delete it (right to erasure - this is tricky in fintech)
  • Report breaches within 72 hours
  • Document your processing (Data Protection Impact Assessments)

4. MiFID II (Investment Services):

  • If you're offering investment products, securities, or managed portfolios, MiFID II applies
  • Requires suitability assessments, investor classifications, transaction reporting

United Kingdom: Post-Brexit FCA Rules

After Brexit, the UK's Financial Conduct Authority (FCA) sets its own rules. UK fintech faces regulatory divergence from the EU now. You can't assume GDPR compliance equals FCA compliance.

1. Key FCA rules:

  • Senior Management Regime (SMR): Individuals are personally accountable for compliance failures
  • Operational resilience: Systems must survive and recover from disruptions
  • Open Banking Implementation Standards (OBIS): Similar to PSD2 but UK-specific

APAC: Fragmented but Critical

Asia-Pacific is a patchwork. Singapore has MAS (Monetary Authority). Hong Kong has SFC (Securities and Futures Commission). Australia has ASIC. India has RBI. Each has different AML/CFT (Counter-Financing of Terrorism) rules per FATF guidelines, license requirements, and data localisation mandates.

1. Common thread: Most APAC countries require:

  • AML/CFT compliance (strict FATF guidelines)
  • Local entity registration
  • Data localisation (customer data stays in-country)
  • Regular compliance audits

2. Quick win: If you're expanding to APAC, hire a local compliance consultant before writing code. Data localisation requirements alone can force architectural changes.

blue arrow to the left
Imaginary Cloud logo

AML and KYC Implementation for Developers: The Core Flow

This is where theory meets code. Here's how AML and KYC work, what developers need to build, and what mistakes to avoid.

KYC (Know Your Customer) verifies who your customer is before you onboard them. AML (Anti-Money Laundering) watches what they do after onboarding and flags suspicious patterns. For developers: KYC is a gating function on signup. AML is a continuous monitoring engine in your transaction pipeline.

KYC: The Onboarding Gate

KYC flow typically looks like this:

  1. Document Submission - Customer uploads ID (passport, driver's license)
  2. Verification - You verify the document is real (integrate with a provider: Jumio, IDmission, Socure, or Onfido)
  3. Liveness Check - Confirm the person holding the ID is the person in the photo (video selfie)
  4. Risk Scoring - Assign a risk tier (low/medium/high) based on geography, document type, behavior
  5. Approval/Rejection - Auto-approve low-risk. Escalate medium/high to a human reviewer.
  6. Ongoing Re-verification - Periodically re-check (rules vary: every 3 years for low-risk, annually for medium, quarterly for high)

From an architecture standpoint:

  • Don't build verification yourself. The document fraud landscape is sophisticated. Third-party providers have ML models trained on millions of IDs. Use them.
  • Make verification async. User submits docs. You queue a verification job. Meanwhile, they can explore the app (with limited functionality). When verification completes, enable full features.
  • Log everything. Who verified? When? With which document version? What was the risk score? If regulators audit you, this trail is your defense.
  • Handle failure gracefully. Verification fails occasionally (bad lighting on the selfie, blurry ID). Let users retry 2 to 3 times, then escalate to support.

At Imaginary Cloud, we've built KYC flows for cross-border payment platforms, and here's what works:

POST /kyc/start
- Create KYC session
- Return redirect URL to verification provider
- Store session ID and provider reference

Webhook: verification_complete
- Check result (approved/rejected/manual_review)
- Update user status
- Trigger downstream actions (enable trading, allow transfers)

Common mistake: Hardcoding risk thresholds. You might say "all US customers are low-risk." That's wrong. Geography is one signal. A US customer sending $50k daily to sanctioned countries is high-risk, regardless of document type. Risk scoring should be rules-based and learned, not hardcoded.

AML: The Monitoring Engine

AML watches the stream of transactions and flags outliers.

AML typically operates in three layers:

  1. Sanctions Screening - Does this customer match a sanctions list? (OFAC, UN, EU, etc.)
    • Check on customer creation (one-time)
    • Re-check periodically (rules vary, but 6-monthly is common)
    • Check on high-risk transactions (amounts > threshold)
  2. Transaction Monitoring - Does this transaction pattern suggest money laundering?
    • Velocity checks: Is the customer suddenly sending 10x their average daily volume?
    • Geographic checks: Are they sending money to high-risk jurisdictions?
    • Counterparty checks: Are they sending to known shell companies or sanctioned entities?
    • Time-of-day checks: Unusual sending patterns (4 AM, weekends)?
  3. Suspicious Activity Reporting (SAR) - When you detect a red flag, file a SAR with FinCEN (US) or FCA (UK) or equivalent
    • Mandatory within 30 days of detection
    • Never tip off the customer you've filed a SAR (that's "tipping off" - it's illegal)
    • Keep SAR details confidential (regulators expect discretion)

From an architecture standpoint:

  • Don't build sanctions screening in-house. OFAC and other lists update frequently. Use a third-party provider (Compliant, Refinitiv, etc.) that refreshes lists hourly.
  • Make transaction monitoring real-time. A customer tries to send $100k. Before the transaction settles, run it through your rules engine. Flag or approve in milliseconds.
  • Use thresholds, but learn. Start with simple rules:
    • Velocity: If today's volume > 3x customer's average daily volume → flag
    • Geography: If destination is on OFAC list → reject
    • Counterparty: If recipient's bank account is flagged → escalate
  • But then layer in ML. Over time, your rules become your training data. Build a model that predicts "high-risk transaction" with better accuracy than fixed thresholds.

At Imaginary Cloud, we've implemented AML monitoring for payment platforms, and here's the pattern that works:

POST /transfer/send
- Sanitise inputs (amount, recipient, purpose)
- Run sanctions screening (sync, fast-path if cached)
- Run transaction monitoring rules
 - If score < threshold: Approve immediately
 - If score >= threshold: Hold, escalate to review queue
- Log all signals (for SAR filing later, if needed)
- Return to user: "Processing..." or "Approved"

Common mistake: Approving transactions too quickly without escalation paths. You run a rules engine. It flags 5% of transactions as suspicious. If all 5% auto-reject, customers get frustrated ("Why was I blocked?"). If all auto-approve, you're not mitigating risk. Best practice: Auto-approve clear cases (score < 20). Auto-reject high-risk (score > 80). Escalate the middle (20 to 80) to a human review queue.

blue arrow to the left
Imaginary Cloud logo

Data Protection and Security: Building Privacy-First Architecture

Fintech data is gold. Customer PII, financial history, transaction metadata - all of it sensitive. Regulators care deeply. So should you.

Direct answer: Fintech must encrypt data at rest and in transit, limit who can access it, and let users delete it (even though fintech audit requirements make this hard). GDPR, CCPA, LGPD, and local regulations all demand this.

GDPR Specifics for Fintech

GDPR applies if you process data of EU residents. Key obligations:

Data Minimisation: Collect only what you need for the stated purpose.

  • Good: Customer name, email, account number for payment verification
  • Bad: Collecting their employer, annual income, and marital status "just in case"
  • Dev implication: Design schemas lean. Don't add fields speculatively.

Penalties for Non-Compliance: GDPR violations carry significant financial penalties. Organizations can face fines up to 4% of global revenue under GDPR, making compliance not just a regulatory requirement but a critical business imperative.

Encryption: Data at rest (in databases) and in transit (over networks).

  • At-rest: Use AES-256 encryption for sensitive data (SSN, account numbers)
  • In-transit: TLS 1.2+ for all APIs. No HTTP. Ever.
  • Dev implication: Database encryption should be transparent (database-level, not application-level, for performance). Use AWS KMS, Azure Key Vault, or HashiCorp Vault.

Right to Erasure: Customers can request deletion. You must delete (with exceptions for audit logs).

  • This is tricky in fintech because you must keep transaction history for 6 to 7 years (regulatory requirement per FinCEN).
  • Solution: Pseudonymisation. Delete the link between the person and the transaction, but keep the transaction record.
  • Dev implication: Design your data model with erasure in mind. Separate users table from transactions table. When a user requests deletion, delete their PII but replace it with a hash. Transactions stay for audit, but aren't linked to the person anymore.

Data Protection Impact Assessment (DPIA): Document your processing. What data? Why? Who accesses it? How long kept?

  • Mandatory for high-risk processing (automated decision-making, large-scale processing, biometric data)
  • Dev implication: Work with compliance/legal to document your systems. Then actually follow the documentation.

Practical Steps for Privacy-First Architecture

  1. Encrypt at rest: Database encryption, encrypted backups, encrypted key management
  2. Encrypt in transit: TLS 1.2+ for all APIs, encrypted webhooks
  3. Access control: Role-based access (RBAC). Support staff shouldn't see customer SSNs. Only KYC team should.
  4. Audit logging: Who accessed what data, when? Immutable logs. Retention: 3 to 7 years (regulatory requirement)
  5. Data retention: Define retention policies per data type. Delete after retention window unless legal hold applies.
  6. Incident response: Breach happens? You have 72 hours to notify regulators. Have a plan.

Common mistake: Logging sensitive data. A developer logs an API response for debugging. That response includes a customer's SSN. Now SSNs are scattered in log files. Encrypt those logs, or better - don't log sensitive data at all. Log anonymised signals: "KYC verification for user_id 123 returned approved" instead of "KYC for John Doe, SSN 123-45-6789, returned approved."

blue arrow to the left
Imaginary Cloud logo

Payment Service Regulations: PSD2 and Open Banking

If you're building a payment platform or offering payment initiation services, PSD2 is your bible.

Direct answer: PSD2 mandates strong authentication and open APIs. If your platform lets customers authorise payments, you need SCA (Strong Customer Authentication). If you're an aggregator pulling data from multiple banks, you need access to standardised open APIs.

Strong Customer Authentication (SCA)

SCA means two independent factors of authentication. Not just password and SMS. Something like:

  • Possession factor: Biometric (fingerprint, face) or hardware token
  • Knowledge factor: PIN or password
  • Inherence factor: Something unique to the person (not really used in fintech yet)

Example: Customer initiates a payment. Password verified? Good. Now: "Confirm with fingerprint or enter your PIN."

Exemptions (PSD2 allows some relaxation):

  • Payments to trusted beneficiaries (previously verified recipients) can skip SCA on repeat payments
  • Payments under €30 can skip SCA (but cumulative check: if customer hits €500/day in low-value payments, SCA required)
  • Recurring payments after first SCA can use token-based auth

Dev implication:

  • Implement SCA as middleware in your payment flow
  • Flag which transactions trigger SCA (vs. exempt)
  • If customer fails SCA, transaction declines (don't retry automatically)
  • Log SCA events (who, when, succeeded/failed?)

Open Banking APIs (OBIE Standard, PSD2 Standard)

PSD2 requires banks to offer read/write APIs so authorised third parties (Account Information Service Providers, Payment Initiation Service Providers) can access/initiate on behalf of customers.

For you as a fintech:

  • If you're aggregating bank data (showing balances across banks), you access AISP APIs
  • If you're initiating payments on behalf of customers (e.g., paying bills from their bank), you access PISP APIs
  • Customers must authorise explicitly (OAuth-like flow)

Dev implication:

  • Integrate with bank APIs (not all banks have great APIs - some are painful)
  • Store customer OAuth tokens securely (encrypted, rotated regularly)
  • Handle token revocation (customer removes your app's access, token dies)
  • Be ready for API rate limits (banks limit how often you can hit their API)
blue arrow to the left
Imaginary Cloud logo

Compliance Monitoring and Testing: Ops for Developers

Compliance isn't a launch day thing. It's continuous. You need monitoring, alerting, and testing.

Direct answer: Set up automated checks for KYC expirations, AML rule triggers, GDPR data inventory, and audit logging. Test your compliance logic the same way you test business logic - unit tests for AML rules, integration tests for KYC workflows.

Continuous Monitoring

KYC Expirations:

  • Flag customers whose KYC is expiring soon (60-day warning)
  • Trigger re-verification when expiry hits (automatically or with user prompt)
  • Suspend risky accounts if re-verification fails

AML Rules:

  • Monitor your AML rule engine output (# of flags per day, false positive rate)
  • If false positive rate spikes, investigate (maybe rules need tuning)
  • Alert on unusual patterns (e.g., "suddenly 50% of transactions are being flagged")

GDPR Data Inventory:

  • Periodic audit: What data exists? Where? For how long?
  • Flag data past retention window (should be deleted)
  • Audit: Who accessed sensitive data?

Example monitoring setup:

- KYC expiration dashboard: % of users with valid KYC
- AML metrics: Transactions flagged/approved/reviewed per day, avg review time
- GDPR compliance: Data over retention window, unencrypted data, access logs
- SARs filed: Count, reasons, time-to-file

Compliance Testing

Treat compliance like a feature.

Unit tests for AML rules:

def test_high_velocity_detection():
    customer = Customer(daily_average_volume=1000)
    transaction = Transaction(amount=5000)  # 5x average
    result = aml_engine.check(customer, transaction)
    assert result.risk_score > 80  # High-risk flag
    assert result.reason == "VELOCITY_ANOMALY"

Integration tests for KYC workflows:

def test_kyc_flow_end_to_end():
    # Create user
    user = User.create(email="test@example.com")
    # Start KYC
    kyc_session = kyc_provider.start_verification(user)
    # Simulate approval webhook
    kyc_provider.mock_approval(kyc_session.id)
    # Check user status updated
    user.refresh()
    assert user.kyc_status == "approved"
    assert user.features_enabled == ["trading", "transfers"]

Compliance audit checklists:

  • KYC records exist for 100% of active customers
  • AML rules firing on test transactions (positive cases)
  • AML rules not firing on legitimate transactions (negative cases)
  • Transactions flagged for review are in review queue
  • SARs filed within 30 days of flagging
  • Audit logs capture all sensitive data access
  • Encryption enabled for data at rest and in transit

Common mistake: Treating compliance tests as optional. "We'll regression test business logic, but compliance... eh, manual QA handles that." Wrong. Compliance bugs are the most expensive. One misconfigured AML rule and you're filing false SARs. Automate.

blue arrow to the left
Imaginary Cloud logo

FAQ: 10 Questions Developers Actually Ask

1. Do we need to handle sanctions screening ourselves or outsource it?

Outsource. OFAC lists update. Sanctions designations change. Do not build screening in-house. Use a third-party provider (Compliant, Refinitiv, etc.) that maintains fresh lists and has legal liability if they miss a designation.

2. How do we implement GDPR right-to-erasure without breaking audit logs?

Pseudonymisation: Delete the link between person and audit record, but keep the record. Example: In an audit log entry {user_id: 123, action: "transfer", amount: 1000}, delete the user record but replace user_id with a hash or random token. Regulators accept this - transaction history is preserved, but the person is anonymised.

3. What happens if our KYC check fails? Does the customer get stuck forever?

No. Implement retry logic. Customer can re-submit documents 2 to 3 times. After that, escalate to support (maybe the document is genuinely hard to verify, or maybe it's fraud - a human should decide). Don't permanently block without escalation.

4. How often must we re-verify customers?

Risk-based. Low-risk customers: every 3 years. Medium-risk: annually. High-risk: quarterly. Regulatory guidance varies by jurisdiction, but risk-based refreshing is the standard.

5. Can we store encrypted SSNs or are they too sensitive?

Yes, you can store encrypted SSNs. Encryption is acceptable for GDPR and FinCEN. But best practice: store only a hash or token, not the SSN itself. If you need the actual SSN (for wire transfers, for example), request it on-demand from the customer, process it, then discard it. Don't persist.

6. How long do we need to keep transaction data?

6 to 7 years in most jurisdictions. US FinCEN requires 5 years minimum. EU and UK often require 6 to 7 years depending on the transaction type. Check your jurisdiction. Also check your payment processors - they might have longer requirements.

7. "What if we make a mistake in an AML rule and flag legitimate customers?"

Investigate and file a correction memo. Document why you flagged them (rule X triggered). Document why it was a false positive (customer explained purpose, provided proof, etc.). Keep the memo in your file. If a regulator audits, you show: "We flagged, we investigated, we resolved." That's due diligence.

8. Can customers use VPNs? Do we block them?

Risk-based. VPN use doesn't auto-trigger a block. But if a customer uses a VPN to mask their geography and match a sanctions rule, that's suspicious. AML rules should incorporate this: "Customer from US, suddenly connecting from Iran via VPN → high-risk." Let human reviewers make the call.

9. How do we handle SARs if they're filed confidentially?

Never tell the customer you filed a SAR. That's illegal ("tipping off"). File it, keep quiet, move on. Internally: document why you filed (rule triggered, thresholds met, etc.). Keep SAR records confidential - don't log them in customer-facing systems.

10. What's the most common compliance mistake you see?

Treating compliance as a post-launch feature. Teams ship fast, then retrofit compliance. By then, the codebase is a mess, compliance is a hack, and technical debt is astronomical. Build compliance in. It's not slower - it's cheaper.

blue arrow to the left
Imaginary Cloud logo

Your Compliance Roadmap: Getting from Here to Launch

You've read the rules. You understand the architecture. Now: how do you actually build this?

Step 1: Pick your jurisdiction(s).

  • Which countries are your customers in? Which are you launching in first?
  • Different jurisdictions equal different requirements. Prioritise by revenue potential and regulatory risk.
  • Start with one or two; expand gradually.

Step 2: Audit your current system (if you have one).

  • Checklist: Do you have KYC? AML? Data encryption? Audit logs?
  • Document gaps. Prioritise by risk (missing AML equals high risk; missing GDPR right-to-erasure equals medium risk).

Step 3: Integrate third-party services.

  • KYC verification provider (Jumio, IDmission, Onfido, Socure)
  • AML/sanctions screening (Compliant, Refinitiv, Mantas)
  • Don't build these in-house.

Step 4: Implement compliance flows.

  • KYC gating on signup
  • AML monitoring on transactions
  • Data encryption at rest and in transit
  • Audit logging

Step 5: Test relentlessly.

  • Unit tests for AML rules
  • Integration tests for KYC workflows
  • Manual testing: Can a customer onboard? Can they send a transaction? Does AML approve/flag as expected?

Step 6: Document and maintain.

  • Document your compliance architecture (for regulators)
  • Set up monitoring dashboards
  • Plan for quarterly reviews (rules change, new guidance emerges)
  • Train your team (new devs need to understand compliance trade-offs)

Step 7: Launch and monitor.

  • Go live with monitoring active
  • Watch KYC approval rates (too low equals product friction; too high equals risk)
  • Watch AML flags (too many equals tuning needed; too few equals rules might be too lenient)
  • Be ready to iterate
blue arrow to the left
Imaginary Cloud logo

Closing: Compliance Is Architecture

Compliance isn't a phase. It's not something you bolt on after launch. It's architecture - a set of constraints that shape how you design systems, how you store data, how you test.

Build it right, and it's invisible. Users onboard smoothly. Transactions flow. Regulators inspect your logs and nod. You sleep well.

Build it wrong, and it's your whole roadmap. Retrofitting compliance into a non-compliant system costs 3 to 5x more than building it in. Teams spend quarters rewiring. Launched products get suspended. Investors balk.

Here's your takeaway:

  1. Compliance is non-negotiable. Pick your jurisdiction. Learn the rules.
  2. Use third-party services for KYC and AML. Don't build screening in-house.
  3. Encrypt everything. Data at rest, in transit, in logs.
  4. Log everything else. Audit trails are your legal defense.
  5. Test compliance logic like business logic. Unit tests, integration tests, manual testing.
  6. Monitor continuously. KYC expirations, AML flags, GDPR data inventory, SAR filing.
  7. Plan for change. Regulatory guidance evolves. Build systems that flex.

At Imaginary Cloud, we've built dozens of compliant fintech systems. The ones that succeed are the ones that treat compliance as a first-class citizen from day one - not an afterthought. Our experience working on platforms like BNP Paribas, Banco Montepio, and specialized services like TrustPortal has taught us that foundational compliance architecture drives long-term success.

Your regulators are watching. Build well.


Building fintech software that needs to get compliance right the first time? Our team at Imaginary Cloud has shipped compliant systems for banks, payment platforms, and regulated fintechs across Europe and the US. Get in touch to talk through your compliance architecture before you write a line of code.

Alexandra Mendes
Alexandra Mendes

Alexandra Mendes is a Senior Growth Specialist at Imaginary Cloud with 3+ years of experience writing about software development, AI, and digital transformation. After completing a frontend development course, Alexandra picked up some hands-on coding skills and now works closely with technical teams. Passionate about how new technologies shape business and society, Alexandra enjoys turning complex topics into clear, helpful content for decision-makers.

LinkedIn

Read more posts by this author

People who read this post, also found these interesting:

Dropdown caret icon