PHPackages                             vachmara/pskyc - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Security](/categories/security)
4. /
5. vachmara/pskyc

ActivePrestashop-module[Security](/categories/security)

vachmara/pskyc
==============

Open source, GDPR-compliant KYC document verification for PrestaShop 8 and 9.

v1.1.3(3mo ago)111[2 issues](https://github.com/vachmara/pskyc/issues)[1 PRs](https://github.com/vachmara/pskyc/pulls)MITPHPPHP &gt;=8.1CI passing

Since Jun 1Pushed 3mo agoCompare

[ Source](https://github.com/vachmara/pskyc)[ Packagist](https://packagist.org/packages/vachmara/pskyc)[ Docs](https://github.com/vachmara/pskyc)[ RSS](/packages/vachmara-pskyc/feed)WikiDiscussions dev Synced 1mo ago

READMEChangelog (5)Dependencies (5)Versions (8)Used By (0)

KYC Secure Upload (PrestaShop Module)
=====================================

[](#kyc-secure-upload-prestashop-module)

[![License: MIT](https://camo.githubusercontent.com/fdf2982b9f5d7489dcf44570e714e3a15fce6253e0cc6b5aa61a075aac2ff71b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e737667)](https://opensource.org/licenses/MIT)[![PHP Version](https://camo.githubusercontent.com/7535257ca228724c93658bd52583d4e47a9bab02c356abf6e54c1d575f2151e6/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e312532422d626c75652e737667)](https://www.php.net/)[![PrestaShop](https://camo.githubusercontent.com/20a50af01af483f7e3e7cfbf93425b7608f910d1d9fafcfacc2cb3feb0a9476e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f50726573746153686f702d382e78253230253236253230392e782d6f72616e67652e737667)](https://www.prestashop.com/)[![Packagist Version](https://camo.githubusercontent.com/9a1167da60e9cd1b7fd42371a8a6711c3fa2aadea72efda6804e8a79dc2c26f3/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f766163686d6172612f70736b79632e737667)](https://packagist.org/packages/vachmara/pskyc)[![Packagist Downloads](https://camo.githubusercontent.com/2f525c92cbfa7c98c291caa399bdf2bd702e809484da2dd907f42edfe8e100fa/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f766163686d6172612f70736b79632e737667)](https://packagist.org/packages/vachmara/pskyc)[![CI Tests](https://github.com/vachmara/pskyc/workflows/CI%20Tests/badge.svg)](https://github.com/vachmara/pskyc/actions)[![codecov](https://camo.githubusercontent.com/df4ad858bb6e5b6144175cf2505c1ce8177335377f260854881d73cb3f305cc1/68747470733a2f2f636f6465636f762e696f2f67682f766163686d6172612f70736b79632f6272616e63682f6465762f67726170682f62616467652e737667)](https://codecov.io/gh/vachmara/pskyc)[![Code Style](https://camo.githubusercontent.com/9a55c17459c810407cac6350c94a2c6f9545d3c249439e19a763f6856392bb39/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636f64652532307374796c652d5053522d2d31322d626c75652e737667)](https://www.php-fig.org/psr/psr-12/)[![PHPStan](https://camo.githubusercontent.com/0729e562e10fac943b16dbb271b4af26488f779a33fc82cc3eef1e37a432c0b4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048505374616e2d6c6576656c253230352d627269676874677265656e2e737667)](https://phpstan.org/)

Open source, GDPR-compliant KYC document verification for PrestaShop.

- Proof of identity (ID)
- Proof of address (utility bill, bank statement, etc.)
- Secure file storage with encryption
- Product order blocking until KYC is validated

Requirements
------------

[](#requirements)

### PrestaShop Compatibility

[](#prestashop-compatibility)

- **PrestaShop:** 8.x – 9.x

#### Tested PrestaShop releases

[](#tested-prestashop-releases)

Official continuous integration covers PrestaShop 8.0, 8.1, 8.2 and 9.0 Docker images to ensure ongoing compatibility across both major branches.

- **PHP:** 8.1 or higher

### PHP Extensions

[](#php-extensions)

This module uses standard PrestaShop-required PHP extensions:

- **fileinfo** - For MIME type detection of uploaded documents
- **openssl** - For AES-256-CBC document encryption
- **curl** - For HTTP requests (standard PrestaShop requirement)
- **gd** - For image processing (standard PrestaShop requirement)
- **json** - For configuration data (standard PrestaShop requirement)
- **mbstring** - For string handling (standard PrestaShop requirement)

*All listed extensions are standard PrestaShop 8/9 requirements, so no additional server configuration is needed.*

Features
--------

[](#features)

- Secure KYC file uploads (ID, proof of address)
- End-to-end file encryption (OpenSSL)
- Front-office upload &amp; status tracking
- Back-office admin panel: validation, document checking, logs
- Order blocking for sensitive products until KYC is validated
- Easy installation, configuration, and uninstall
- Multi-language ready
- Automated email notifications (status updates, document confirmations, admin alerts)

Installation
------------

[](#installation)

1. Download the latest release ZIP
2. Upload to your PrestaShop back office (Modules &gt; Module Manager &gt; Upload)
3. Configure in the modules section

Quick Start
-----------

[](#quick-start)

Get up and running in minutes with automatic integration.

### Basic Setup

[](#basic-setup)

1. **Install the module** via PrestaShop back office
2. **Configure KYC categories:**
    - Go to Modules → KYC Secure Upload → Configure
    - Select product categories that require KYC verification
3. **That's it!** The module works automatically with any checkout

### How It Works

[](#how-it-works)

- **Automatic blocking:** Orders for KYC-required products are blocked until verification is approved
- **Server-side security:** Cannot be bypassed via frontend modifications
- **Clear messaging:** Customers see helpful error messages and redirects

### Testing Checklist

[](#testing-checklist)

1. **Configure categories** requiring KYC in module settings
2. **Test as unverified customer:**
    - Add KYC-required product to cart
    - Complete checkout process
    - ✅ Should see error and redirect to KYC verification
3. **Test as verified customer:**
    - Complete KYC verification (get admin approval)
    - Add same product and checkout
    - ✅ Order should process normally
4. **Test non-KYC products:**
    - Add regular product to cart
    - ✅ No KYC check, order processes normally

### Common Issues

[](#common-issues)

- **Orders going through without KYC:** Reinstall module to ensure hooks are registered
- **No error messages:** Check PrestaShop logs at `var/logs/`
- **Warnings not appearing:** Clear cache in Advanced Parameters → Performance

Third-Party Checkout Integration
--------------------------------

[](#third-party-checkout-integration)

This module works seamlessly with PrestaShop's standard checkout and is compatible with third-party checkout modules like **Prestahero One Page Checkout**.

📖 **[Complete Integration Guide](INTEGRATION.md)** - Comprehensive documentation for integrating with third-party checkout modules including:

- Prestahero One Page Checkout
- Custom checkout modules
- Override examples and best practices
- Troubleshooting and extension points

Security
--------

[](#security)

- Files are stored encrypted with OpenSSL (`AES-256-CBC`)
- Keys and IV managed securely
- .htaccess restricts direct access
- GDPR retention and deletion supported

Flow Diagram
------------

[](#flow-diagram)

 ```
flowchart TD
    A[Customer Uploads Documents] --> B[Create Verification Record]
    B --> C[Upload Documents to Encrypted Storage]
    C --> D{All Documents Uploaded Successfully?}

    D -->|Yes| E[Send Upload Confirmation to Customer]
    D -->|No| F[Show Upload Errors]

    E --> G[Send Admin Notification]
    G --> H[Admin Reviews Documents]

    H --> I{Admin Decision}
    I -->|Approve| J[Update Status to 'approved']
    I -->|Reject| K[Update Status to 'rejected']
    I -->|Request More Info| L[Update Status to 'requested_more_info']
    I -->|Under Review| M[Update Status to 'under_review']

    J --> N[Send Approval Email to Customer]
    K --> O[Send Rejection Email to Customer]
    L --> P[Send Request More Info Email to Customer]
    M --> Q[Send Under Review Email to Customer]

    J --> R[Set Expiry Date]
    R --> S[Schedule Expiry Warning Check]

    S --> T{30 Days Before Expiry?}
    T -->|Yes| U[Send Expiry Warning to Customer]
    T -->|No| V[Continue Monitoring]

    U --> W{Documents Expired?}
    W -->|Yes| X[Auto-Update Status to 'expired']
    W -->|No| V

    X --> Y[Send Expiry Notification to Customer]

    %% Simplified semantic color scheme (4 colors)
    style A fill:#1976D2,stroke:#0D47A1,stroke-width:2px,color:#ffffff
    style E fill:#388E3C,stroke:#1B5E20,stroke-width:2px,color:#ffffff
    style F fill:#D32F2F,stroke:#B71C1C,stroke-width:2px,color:#ffffff
    style G fill:#F57C00,stroke:#E65100,stroke-width:2px,color:#ffffff
    style N fill:#388E3C,stroke:#1B5E20,stroke-width:2px,color:#ffffff
    style O fill:#D32F2F,stroke:#B71C1C,stroke-width:2px,color:#ffffff
    style P fill:#F57C00,stroke:#E65100,stroke-width:2px,color:#ffffff
    style Q fill:#1976D2,stroke:#0D47A1,stroke-width:2px,color:#ffffff
    style U fill:#F57C00,stroke:#E65100,stroke-width:2px,color:#ffffff
    style Y fill:#D32F2F,stroke:#B71C1C,stroke-width:2px,color:#ffffff
    style X fill:#D32F2F,stroke:#B71C1C,stroke-width:2px,color:#ffffff
```

      Loading Email Types Summary
-------------------

[](#email-types-summary)

Email TypeTriggerRecipientTemplatePurpose**Upload Confirmation**Document upload successCustomer`document_upload_confirmation`Confirm receipt**Admin Notification**Document upload successAdmins`admin_new_verification`Alert for review**Status Change**Admin updates statusCustomer`verification_status`Notify of decision**Expiry Warning**30 days before expiryCustomer`verification_expiry_warning`Renewal reminderEmail Templates
---------------

[](#email-templates)

Email templates are located in:

- Text versions: `mails/{lang}/`
- HTML versions: `mails/layouts/`

Available languages: `en`, `fr`

### ⚠️ Known Issue: Email Template Generation

[](#️-known-issue-email-template-generation)

There is a known bug in PrestaShop 8.1.2 preventing email template generation for custom modules through the admin interface. Email sending functionality works normally.

**Details:** [PrestaShop Issue #35214](https://github.com/PrestaShop/PrestaShop/issues/35214)

Contribution
------------

[](#contribution)

PRs welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.

License
-------

[](#license)

MIT License. See [LICENSE.md](LICENSE.md) for details.

###  Health Score

33

—

LowBetter than 75% of packages

Maintenance61

Regular maintenance activity

Popularity4

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 97.8% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~61 days

Total

5

Last Release

99d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/b39f62244f089983abd3df2519ba454d386c286db10d63ae57c031440db77b94?d=identicon)[vachmara](/maintainers/vachmara)

---

Top Contributors

[![vachmara](https://avatars.githubusercontent.com/u/55046446?v=4)](https://github.com/vachmara "vachmara (218 commits)")[![Copilot](https://avatars.githubusercontent.com/in/1143301?v=4)](https://github.com/Copilot "Copilot (5 commits)")

---

Tags

document-verificationgdpr-compliantkycprestashopprestashop-modulesecuritymoduleverificationgdprprestashopdocumentskyc

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/vachmara-pskyc/health.svg)

```
[![Health](https://phpackages.com/badges/vachmara-pskyc/health.svg)](https://phpackages.com/packages/vachmara-pskyc)
```

###  Alternatives

[mlocati/ocsp

Library to query HTTPS Certificates revocation status using the Online Certificate Status Protocol (OCSP)

40754.7k2](/packages/mlocati-ocsp)[defuse/php-passgen

PHP Random Password Generator Library

4017.7k](/packages/defuse-php-passgen)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
