OwnPay is a self-hosted, open-source payment orchestrator. It lets a single platform owner run multiple white-labeled payment brands (stores) from one installation, with 123+ payment gateways, a double-entry ledger, and full data isolation between brands.
Is OwnPay really free?
Yes. OwnPay is released under the AGPL-3.0 license. You can download, install, and use it without paying any license fees. You only pay the transaction fees charged by your chosen payment gateways (Stripe, bKash, etc.), not to OwnPay.
What license does OwnPay use?
AGPL-3.0 (GNU Affero General Public License). This means you can use, modify, and distribute OwnPay freely, but any modifications you serve over a network must also be made available under the same license. See the Contributing Guide for details on licensing of contributions.
How many gateways does OwnPay support?
OwnPay ships with 123 built-in gateway adapters covering global card processors (Stripe, Adyen, Square), digital wallets (PayPal, Apple Pay, Google Pay), mobile financial services (bKash, Nagad, M-Pesa, GCash), buy-now-pay-later (Klarna), crypto (Coinbase Commerce), and regional platforms (Razorpay, Flutterwave, Paystack, Xendit, and many more).
Is OwnPay a SaaS platform?
No. OwnPay is infrastructure you deploy and own on your own server. No third party has access to your transactions, customer data, or configuration.
PHP 8.3 or higher. OwnPay uses declare(strict_types=1) throughout and relies on PHP 8.3 features like readonly properties and typed class constants.
What database does OwnPay use?
MySQL 8.0 or MariaDB 10.4+. OwnPay uses InnoDB for all tables and relies on Stored Generated Columns for JSON field indexing.
Is Redis required?
No, but it is strongly recommended. OwnPay works with file-based cache and sessions by default, but Redis provides significantly better performance for rate limiting, sessions, and the job queue. Switch to Redis when you expect more than 1,000 payments per day.
Can I run OwnPay with Docker?
Yes. While there is no official Docker image yet, the community maintains Docker Compose configurations. OwnPay’s single-entry-point architecture (public/index.php) makes it straightforward to containerize with any PHP 8.3 base image.
Does OwnPay work on shared hosting?
Yes. OwnPay includes a web-based installer that requires no CLI access. The vendor/ directory is bundled in release archives, so you do not need Composer on the server. You need PHP 8.3 support and a MySQL database.
OwnPay uses a gateway delegation model - credit card data is collected and processed directly by upstream gateways (Stripe, Adyen, etc.) and never touches your server. This typically places OwnPay under SAQ-A, the simplest PCI self-assessment level. Consult a QSA for your specific deployment.
How is my data encrypted?
Customer PII (names, emails, phone numbers) and gateway API credentials are encrypted at rest using AES-256-GCM with a per-installation key. Webhook payloads are signed with HMAC-SHA256. All traffic uses HTTPS with HSTS enforced.
Is OwnPay GDPR compliant?
OwnPay provides the technical tools for GDPR compliance: data minimization, encrypted storage, hash-based lookups, data export (CSV), and data deletion with ledger anonymization. As a self-hosted platform, you are the data controller and are responsible for your own GDPR processes and policies.
See the full list on the Features page under “Payment Gateway System.” The list includes 123 adapters across cards, wallets, MFS, crypto, and regional platforms.
Can I accept manual payments (bank transfer, cash)?
Yes. OwnPay supports manual gateways where you configure custom fields (bank account number, reference number) and verify payments manually or via the SMS auto-verification system with the companion app.
How does SMS verification work?
The OwnPay Android companion app forwards incoming SMS from payment providers to your server. The server parses the SMS using regex and heuristic patterns, extracts the transaction amount and ID, and automatically matches it to a pending payment intent. See the Features page for details.
Plugins are self-contained packages under modules/ with a manifest.json that declares metadata, capabilities, and hook registrations. Three types exist: Gateway, Theme, and Addon. All plugins are scanned by a static code sandbox before loading. See the Plugin Development Overview.
What are the API rate limits?
Merchant API: 60 requests/minute per API key. Login attempts: 10 per 5 minutes per IP. Global: 120 requests/minute per IP. See the Rate Limiting page for the full reference.
How do webhooks work?
You register a webhook URL per brand in the admin panel. OwnPay sends signed HTTP POST requests (HMAC-SHA256) when payment events occur. Failed deliveries are retried with exponential backoff. See the Code Examples page for verification code.
Are there official SDKs?
Yes. OwnPay provides official SDKs for PHP, Laravel, and Node.js. Community-maintained SDKs exist for Python, Go, and Java. See the Ecosystem page for links and installation instructions.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"OwnPay","description":"Open-source, Self-hosted payment gateway with multi-brand support, white-label domains, and 100+ payment gateways.","colors":{"primary":"#0F97ED","light":"#5BB8F5","dark":"#102963"},"logo":{"light":"https://mintcdn.com/ownpay/S70Th8VweRBV-OVo/logo/light.svg?fit=max\u0026auto=format\u0026n=S70Th8VweRBV-OVo\u0026q=85\u0026s=0c0e2df69a1c85bdc1297590e8be64c5","dark":"https://mintcdn.com/ownpay/S70Th8VweRBV-OVo/logo/dark.svg?fit=max\u0026auto=format\u0026n=S70Th8VweRBV-OVo\u0026q=85\u0026s=9be8f7a4a0258f42abf703e80659f76b","href":"https://ownpay.org/docs"},"favicon":"https://mintcdn.com/ownpay/S70Th8VweRBV-OVo/favicon.svg?fit=max\u0026auto=format\u0026n=S70Th8VweRBV-OVo\u0026q=85\u0026s=38a2465d7330cd7f513a442ea6bb9b6d","api":{"playground":{"display":"interactive","proxy":true,"credentials":false},"examples":{"defaults":"all","languages":["curl","php","python","javascript","go","java","nodejs"],"prefill":true,"autogenerate":true},"url":"full","mdx":{"auth":{"method":"bearer","name":"Authorization"},"server":"https://demo.ownpay.org"}},"appearance":{"default":"system"},"background":{"decoration":"gradient"},"navbar":{"links":[{"href":"https://github.com/own-pay/OwnPay","label":"GitHub","type":"github"},{"href":"https://ownpay.org","label":"ownpay.org"},{"href":"/quickstart","label":"Get Started"}],"primary":{"type":"button","label":"Get Started","href":"/quickstart"}},"footer":{"socials":{"github":"https://github.com/own-pay/OwnPay","website":"https://ownpay.org","x":"https://x.com/ownpayorg","facebook":"https://facebook.com/ownpay.org","youtube":"https://youtube.com/@ownpayorg"},"links":[{"header":"Product","items":[{"label":"Quickstart","href":"/docs/quickstart"},{"label":"Installation","href":"/docs/installation"},{"label":"Download","href":"https://update.ownpay.org"},{"label":"Features","href":"/docs/resources/features"},{"label":"Roadmap","href":"/docs/resources/roadmap"},{"label":"Changelog","href":"/docs/resources/changelog"}]},{"header":"Developers","items":[{"label":"API Reference","href":"/docs/api/overview"},{"label":"API Quick Start","href":"/docs/developer/quickstart"},{"label":"Webhooks","href":"/docs/api/webhooks"},{"label":"Plugins","href":"/docs/developer/plugins/overview"}]},{"header":"Resources","items":[{"label":"Architecture","href":"/docs/resources/architecture"},{"label":"Security","href":"/docs/resources/security-compliance"},{"label":"FAQ","href":"/docs/resources/faq"},{"label":"Community","href":"https://github.com/own-pay/OwnPay/discussions"},{"label":"Contributing","href":"/docs/resources/contributing"}]}]},"search":{"prompt":"Search OwnPay docs..."},"seo":{"metatags":{"og:site_name":"OwnPay Documentation","og:locale":"en_US","twitter:card":"summary_large_image","twitter:site":"@ownpayorg","robots":"index, follow, max-snippet:-1, max-image-preview:large","canonical":"https://ownpay.org/docs","fb:app_id":"2933285433703137","og:image:alt":"OwnPay - Open-Source, Self-Hosted Payment Gateway Platform"},"organization":{"id":"https://ownpay.org/#organization","name":"OwnPay","legalName":"OwnPay","url":"https://ownpay.org","logo":"https://ownpay.org/docs/logo/light.svg","sameAs":["https://github.com/own-pay/OwnPay","https://x.com/ownpayorg","https://youtube.com/@ownpayorg","https://facebook.com/ownpay.org","https://github.com/own-pay","https://www.npmjs.com/package/ownpay-nodejs","https://marketplace.whmcs.com/product/8845-ownpay-whmcs","https://github.com/own-pay/OwnPay-Mobile-App","https://facebook.com/groups/ownpay.org"]},"indexing":"all","trailingSlash":false},"icons":{"library":"tabler"},"styling":{"eyebrows":"section","codeblocks":{"theme":{"light":"github-light","dark":"github-dark"}},"latex":true},"integrations":{"clarity":{"projectId":"xfbp4tcicy"},"telemetry":{"enabled":true}},"banner":{"content":"OwnPay v0.2.0 is available. [See what's new](/resources/changelog).","dismissible":true,"type":"info"},"errors":{"404":{"redirect":false,"title":"Lost in transit?","description":"The page you are looking for has moved or does not exist. Try the search bar at the top or explore these key sections:\n\n* **[Getting Started](/quickstart)** - Set up your self-hosted instance.\n* **[Installation](/installation)** - Deploy on shared hosting, VPS, or Docker.\n* **[API Reference](/api/overview)** - Merchant, Mobile, and Admin API specs.\n* **[Developer Hub](/developer/quickstart)** - Build custom plugins and integrations."}},"contextual":{"options":["copy","assistant","view","download-pdf","download-spec","mcp","add-mcp","claude","chatgpt","grok","aistudio","devin","windsurf","devin-mcp","vscode","cursor","perplexity"],"display":"header"},"interaction":{"drilldown":true},"metadata":{"timestamp":true},"variables":{"version":"0.2.0","github":"https://github.com/own-pay/OwnPay","website":"https://ownpay.org","github-docs":"https://github.com/own-pay/ownpay-docs","github-wordpress":"https://github.com/own-pay/OwnPay-WordPress","github-whmcs":"https://marketplace.whmcs.com/product/8845-ownpay-whmcs","docs-url":"https://ownpay.org/docs","mcp-url":"https://ownpay.org/docs/mcp","skills-url":"https://ownpay.org/docs/skill.md","support-email":"ping@ownpay.org","llms-txt":"https://ownpay.org/docs/llms.txt"},"markdown":{"schema":true,"instructions":["OwnPay is licensed under AGPL-3.0 and is completely free - no licensing fees.","Production docs URL: https://ownpay.org/docs - append .md to any page URL for clean markdown.","OwnPay requires PHP 8.3+, MySQL/MariaDB, and Redis.","MCP server available at https://ownpay.org/docs/mcp for programmatic documentation queries.","Use root-relative links (e.g. /quickstart) for internal navigation - do NOT include /docs prefix.","Plugin development: consult /developer/plugins/ pages for correct interfaces and manifests.","Canonical locations: API auth = /api/authentication, webhook verification = /api/webhooks, rate limits = /resources/rate-limiting, transaction statuses = /fundamentals/payment-flow.","The documentation uses the Diataxis framework: Tutorials (learning), How-to (tasks), Reference (lookup), Explanation (understanding)."]},"navigation":{"global":{"anchors":[{"anchor":"Changelog","icon":"history","href":"/resources/changelog"}]},"languages":[{"language":"en","default":true,"href":"introduction"},{"language":"zh","href":"zh/introduction"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"ownpay","hasAudioNarration":false,"actualSubdomain":"ownpay","customDomains":["ownpay.org"],"gitSource":{"type":"github","owner":"own-pay","repo":"ownpay-docs","deployBranch":"master","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"collectionId":"cb0f1eb3-944e-45c3-aa40-1642f8ad8963","liveDeploymentHistoryId":"6ad921c22b0fc3f48bb38a76","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ad921c22b0fc3f48bb38a76"},"feedback":{"thumbs":true,"edits":true,"issues":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ad921c22b0fc3f48bb38a76","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"en","tag":"API Reference","count":72},{"language":"en","tag":"Documentation","count":50},{"language":"en","tag":"Developer","count":24},{"language":"en","tag":"Resources","count":18},{"language":"en","tag":"Merchant API","count":16},{"language":"en","tag":"Mobile API","count":12},{"language":"en","tag":"Plugin System","count":7},{"language":"en","tag":"Fundamentals","count":7},{"language":"en","tag":"SDKs \u0026 Libraries","count":6},{"language":"en","tag":"Security \u0026 Access","count":6}],"searchSettings":{"showContentSnippets":true,"isFiltersEnabled":true}},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":true,"enableContextualStarterQuestions":true,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"ping@ownpay.org"}},"basePath":"/docs","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"@keyframes pulse-green{0%{transform:scale(.95);box-shadow:0 0 0 0 rgba(16,185,129,.7)}70%{transform:scale(1);box-shadow:0 0 0 6px transparent}to{transform:scale(.95);box-shadow:0 0 0 0 transparent}}@keyframes slide-right{0%{color:#334155;transform:translateX(0)}50%{color:#38bdf8}to{color:#334155;transform:translateX(4px)}}footer a[href*=\"mintlify.com\"],footer button[aria-label*=\"Switch to dark\"],footer button[aria-label*=\"Switch to light\"],footer button[aria-label*=\"Switch to system\"]{display:none!important}footer#footer{background:#fafbfc;border-top:1px solid #e2e8f0}.dark footer#footer{background:#0f172a;border-top-color:#1e293b}footer#footer>div:first-child{max-width:1200px;margin:0 auto;padding:4rem 2rem 0}footer#footer p.text-sm.font-semibold{font-size:14px!important;font-weight:600;color:#0f172a;margin-bottom:1rem!important}.dark footer#footer p.text-sm.font-semibold{color:#f1f5f9}footer#footer [style*=grid-template-columns]{gap:2rem!important}footer#footer [style*=grid-template-columns] a{font-size:14px!important;padding:5px 0!important;transition:color .15s ease}footer#footer [style*=grid-template-columns] a:hover{color:#10b981!important}#navbar nav a[href*=\"github.com/own-pay\"] span,footer#footer .footer-description{display:none!important}footer#footer>div:first-child>div:last-child{display:none!important}footer#footer::after{content:\"Built by the Community, for the Community.\";display:block;text-align:center;font-size:12px;color:#94a3b8;padding:0 0 1.5rem;margin:0;border-top:1px solid #e2e8f0}.dark footer#footer::after{color:#64748b;border-top-color:#1e293b}#sidebar+div footer,#sidebar+div>div:last-child footer{margin-left:0!important;width:100%!important;border-top:1px solid #e5e7eb}.dark #sidebar+div footer,.dark #sidebar+div>div:last-child footer{border-top-color:#374151}footer{z-index:0!important;position:relative!important;display:block!important}footer [style*=grid-template-columns]{display:grid!important;grid-template-columns:repeat(4,1fr)!important;gap:2rem!important;padding:0 1rem}@media (max-width:767px){footer [style*=grid-template-columns]{grid-template-columns:repeat(2,1fr)!important;gap:1.5rem!important}}footer .flex.items-center.justify-between{display:flex!important;flex-direction:column!important;align-items:center!important;text-align:center!important;gap:1rem!important;padding:1rem!important}@media (min-width:768px){footer .flex.items-center.justify-between{flex-direction:row!important;justify-content:space-between!important;align-items:center!important;text-align:left!important}}.github-stars-badge{display:inline-flex;align-items:center;gap:3px;font-size:12px;font-weight:600;color:#374151;padding:2px 8px;border-radius:9999px;border:1px solid #e5e7eb;background:#f9fafb;line-height:1;margin-left:-4px}.dark .github-stars-badge{color:#d1d5db;border-color:#374151;background:#1f2937}.github-stars-badge svg{width:12px;height:12px;fill:#fbbf24}#changelog-content h1,#changelog-content h2{font-size:1.75rem;font-weight:700;margin-top:2rem;margin-bottom:.5rem;color:#111827}.dark #changelog-content h1{color:#f9fafb}#changelog-content h2{font-size:1.35rem;font-weight:600;margin-top:1.75rem;padding-bottom:.25rem;border-bottom:1px solid #e5e7eb}.dark #changelog-content h2{color:#f9fafb;border-bottom-color:#374151}#changelog-content h3{font-size:1.1rem;font-weight:600;margin-top:1.25rem;margin-bottom:.35rem;color:#374151}.dark #changelog-content h3,.dark #changelog-content li{color:#d1d5db}#changelog-content ul{list-style:disc;padding-left:1.5rem;margin:.5rem 0}#changelog-content li{margin-bottom:.35rem;line-height:1.6;color:#374151}#changelog-content blockquote{border-left:3px solid #0178c8;padding-left:1rem;margin:1rem 0;color:#6b7280;font-style:italic}#changelog-content p{margin:.5rem 0;line-height:1.6}#changelog-content hr{border:0;border-top:1px solid #e5e7eb;margin:1.5rem 0}.dark #changelog-content hr{border-top-color:#374151}#changelog-content a{color:#0178c8;text-decoration:underline}html{color-scheme:light dark;scroll-behavior:smooth}.card,.card-group a,[role=button],a,button{transition:all .25s cubic-bezier(.4,0,.2,1)!important}@media (prefers-reduced-motion:reduce){*,::after,::before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}html{scroll-behavior:auto}}*{scrollbar-width:thin;scrollbar-color:rgba(156,163,175,.35) transparent}.dark *{scrollbar-color:rgba(156,163,175,.2) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:rgba(156,163,175,.25);border-radius:9999px}::-webkit-scrollbar-thumb:hover{background:rgba(156,163,175,.45)}.dark ::-webkit-scrollbar-thumb{background:rgba(156,163,175,.15)}.dark ::-webkit-scrollbar-thumb:hover{background:rgba(156,163,175,.35)}#navbar,.sticky,header{backdrop-filter:blur(12px) saturate(180%)!important;-webkit-backdrop-filter:blur(12px) saturate(180%)!important}.homepage-container{max-width:1200px;margin:0 auto;padding:3rem 1.5rem}@media (min-width:768px){.homepage-container{padding:5rem 2rem}}.homepage-hero{display:flex;flex-direction:column;gap:3rem;margin-bottom:5rem;align-items:center}@media (min-width:1024px){.homepage-hero{flex-direction:row;justify-content:space-between;text-align:left}}.hero-content{flex:1.2;max-width:600px}.hero-visual{flex:.8;width:100%;max-width:500px;display:flex;justify-content:center}.hero-pill-badge{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:500;color:#0178c8;background:rgba(15,151,237,.08);padding:6px 14px;border-radius:9999px;border:1px solid rgba(15,151,237,.15);margin-bottom:1.5rem}.dark .hero-pill-badge{color:#7ec8fc;background:rgba(126,200,252,.08);border-color:rgba(126,200,252,.15)}.hero-title{font-size:2.5rem;line-height:1.15;font-weight:800;color:#102963;letter-spacing:-.02em;margin-bottom:1.25rem}@media (min-width:768px){.hero-title{font-size:3.25rem}}.dark .hero-title{color:#fff}.hero-description{font-size:1.125rem;line-height:1.6;color:#4b5563;margin-bottom:2rem}.dark .hero-description{color:#9ca3af}.hero-actions{display:flex;flex-wrap:wrap;gap:1rem}.btn-primary,.btn-secondary{display:inline-flex;align-items:center;justify-content:center;font-weight:600;font-size:15px;padding:10px 22px;border-radius:8px;text-decoration:none!important}.btn-primary{background-color:#0178c8!important;color:#fff!important;border:1px solid #0178c8;box-shadow:0 4px 12px rgba(15,151,237,.15)}.btn-primary:hover{background-color:#007fd6!important;border-color:#007fd6;box-shadow:0 6px 16px rgba(15,151,237,.25);transform:translateY(-1px)}.btn-secondary{background-color:#fff!important;color:#374151!important;border:1px solid #d1d5db}.btn-secondary:hover{background-color:#f9fafb!important;border-color:#9ca3af;transform:translateY(-1px)}.dark .btn-secondary{background-color:#1e293b!important;color:#f3f4f6!important;border-color:#334155}.dark .btn-secondary:hover{background-color:#334155!important;border-color:#475569}.code-mockup-card{background-color:#0b0f19;border:1px solid #1e293b;border-radius:12px;box-shadow:0 20px 40px rgba(0,0,0,.35);width:100%;overflow:hidden;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.code-mockup-header{background-color:#121826;border-bottom:1px solid #1e293b;padding:10px 16px;display:flex;align-items:center;justify-content:space-between}.code-mockup-dots{display:flex;gap:6px}.code-mockup-dot{width:10px;height:10px;border-radius:50%}.dot-red{background-color:#ef4444}.dot-yellow{background-color:#f59e0b}.dot-green{background-color:#10b981}.code-mockup-title{color:#6b7280;font-size:12px;font-weight:500}.code-mockup-body{padding:1.25rem;font-size:13.5px;line-height:1.6;color:#e2e8f0;overflow-x:auto}.section-header{text-align:center;max-width:700px;margin:0 auto 3.5rem}.section-title{font-size:2rem;font-weight:700;color:#102963;letter-spacing:-.01em;margin-bottom:.75rem}.dark .section-title{color:#fff}.section-subtitle{font-size:1.125rem;line-height:1.5;color:#4b5563}.dark .section-subtitle{color:#9ca3af}.bento-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:1.5rem;margin-bottom:5rem}@media (min-width:768px){.bento-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.bento-card{background-color:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:1.75rem;display:flex;flex-direction:column;justify-content:space-between;box-shadow:0 4px 6px -1px rgba(0,0,0,.05)}.dark .bento-card{background-color:#0f172a;border-color:#1e293b;box-shadow:0 4px 6px -1px rgba(0,0,0,.2)}.bento-card:hover{border-color:#0178c8;box-shadow:0 10px 15px -3px rgba(15,151,237,.08)}.dark .bento-card:hover{border-color:#7ec8fc;box-shadow:0 10px 15px -3px rgba(126,200,252,.08)}@media (min-width:768px){.bento-col-span-2{grid-column:span 2}}.bento-card-icon{width:42px;height:42px;border-radius:8px;background-color:rgba(15,151,237,.08);display:flex;align-items:center;justify-content:center;color:#0178c8;margin-bottom:1.25rem}.dark .bento-card-icon{background-color:rgba(126,200,252,.08);color:#7ec8fc}.bento-card-title{font-size:1.25rem;font-weight:700;color:#102963;margin-bottom:.5rem}.dark .bento-card-title{color:#fff}.bento-card-desc{font-size:14.5px;line-height:1.5;color:#4b5563}.dark .bento-card-desc{color:#9ca3af}.timeline-section{margin-bottom:5rem}.checkpoints-bar{display:flex;flex-direction:column;gap:1.25rem;border-top:1px solid #e5e7eb;border-bottom:1px solid #e5e7eb;padding:1.25rem 1rem;margin-bottom:4rem;justify-content:space-around;align-items:center;width:100%}@media (min-width:768px){.checkpoints-bar{flex-direction:row;padding:1.5rem 2rem}}.dark .checkpoints-bar{border-color:#1e293b}.checkpoint-item{display:flex;align-items:center;gap:8px;font-size:14.5px;font-weight:500;color:#374151}.dark .checkpoint-item{color:#d1d5db}.checkpoint-icon{color:#10b981}.explorer-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:1.5rem;margin-bottom:5rem}@media (min-width:640px){.explorer-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.explorer-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.explorer-card{background-color:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:1.5rem;box-shadow:0 4px 6px -1px rgba(0,0,0,.05);display:flex;flex-direction:column;text-decoration:none!important;transition:all .25s cubic-bezier(.4,0,.2,1)!important;position:relative;overflow:hidden}.dark .explorer-card{background-color:#0f172a;border-color:#1e293b;box-shadow:0 4px 6px -1px rgba(0,0,0,.2)}.explorer-card:hover{transform:translateY(-2px);box-shadow:0 10px 15px -3px rgba(0,0,0,.08);border-color:#cbd5e1}.dark .explorer-card:hover{border-color:#334155;box-shadow:0 10px 15px -3px rgba(0,0,0,.25)}.explorer-card::before{content:\"\";position:absolute;top:0;left:0;right:0;height:3px;background-color:transparent}.explorer-card-blue::before{background-color:#0178c8}.explorer-card-green::before{background-color:#10b981}.explorer-card-purple::before{background-color:#7e3aed}.explorer-card-amber::before{background-color:#f59e0b}.explorer-card-navy::before{background-color:#102963}.explorer-card-pink::before{background-color:#ec4899}.custom-footer-socials a,.explorer-icon-wrapper{display:flex;align-items:center;justify-content:center;border-radius:6px}.explorer-icon-wrapper{width:36px;height:36px;margin-bottom:1rem}.explorer-icon-blue{background-color:rgba(15,151,237,.08);color:#0178c8}.explorer-icon-green{background-color:rgba(16,185,129,.08);color:#10b981}.explorer-icon-purple{background-color:rgba(126,58,237,.08);color:#7e3aed}.explorer-icon-amber{background-color:rgba(245,158,11,.08);color:#f59e0b}.explorer-icon-navy{background-color:rgba(16,41,99,.08);color:#102963}.explorer-icon-pink{background-color:rgba(236,72,153,.08);color:#ec4899}.dark .explorer-icon-navy{background-color:rgba(126,200,252,.08);color:#7ec8fc}.explorer-title{font-size:1.1rem;font-weight:700;color:#102963;margin-bottom:.5rem}.dark .explorer-title{color:#fff}.explorer-desc{font-size:13.5px;line-height:1.5;color:#4b5563}.dark .explorer-desc{color:#9ca3af}.bento-mini-table{width:100%;border-collapse:collapse;font-size:12px;margin-top:1rem;border:1px solid #e5e7eb;border-radius:6px;overflow:hidden;background-color:#f9fafb}.dark .bento-mini-table{border-color:#1e293b;background-color:#0b0f19}.bento-mini-table td,.bento-mini-table th{padding:8px 12px;text-align:left;border-bottom:1px solid #e5e7eb}.dark .bento-mini-table td,.dark .bento-mini-table th{border-bottom-color:#1e293b}.bento-mini-table th{background-color:#f3f4f6;font-weight:600;color:#374151}.dark .bento-mini-table th{background-color:#121826;color:#9ca3af}.custom-footer{margin-top:4rem;border-top:1px solid #e2e8f0;padding-top:0;padding-bottom:0;width:100%;background:#fafbfc}.dark .custom-footer{border-top-color:#1e293b;background:#0f172a}.custom-footer-brand-row{display:flex;flex-direction:column;gap:1rem;margin-bottom:2rem}@media (min-width:768px){.custom-footer-brand-row{flex-direction:row;justify-content:space-between;align-items:flex-start}}.custom-footer-brand{gap:.5rem}.custom-footer-logo-row img{height:24px}.custom-footer-desc{display:none}.custom-footer-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:3rem;max-width:1200px;margin:0 auto;padding:0 2rem 2rem}@media (max-width:767px){.custom-footer-grid{grid-template-columns:1fr 1fr;gap:2rem;padding:0 1.5rem 2rem}}.custom-footer-col{display:flex;flex-direction:column;gap:0}.custom-footer-heading{font-size:14px;font-weight:600;color:#0f172a;margin-bottom:1rem;letter-spacing:0;text-transform:none}.dark .custom-footer-heading,.dark .custom-footer-link:hover{color:#f1f5f9}.custom-footer-link{display:block;font-size:14px;color:#64748b;padding:6px 0;text-decoration:none!important;transition:color .15s ease;line-height:1.5}.custom-footer-link:hover{color:#0f172a}.dark .custom-footer-link{color:#94a3b8}.custom-footer-bottom{max-width:1200px;margin:0 auto;justify-content:space-between}@media (max-width:767px){.custom-footer-bottom{flex-direction:column;gap:1rem;text-align:center;padding:1.5rem}}.dark .custom-footer-bottom{border-color:#1e293b}.custom-footer-socials{gap:8px}.custom-footer-socials a{width:32px;height:32px;background:0 0;color:#94a3b8;transition:all .15s ease}.custom-footer-socials a:hover{background:#f1f5f9;color:#0f172a}.dark .custom-footer-socials a:hover{background:#1e293b;color:#f1f5f9}.custom-footer-bottom{border-top:1px solid #e5e7eb;padding:2rem 2rem 1.5rem;display:flex;flex-direction:column;gap:1.5rem;align-items:flex-start;text-align:left;width:100%}@media (min-width:768px){.custom-footer-bottom{flex-direction:row;justify-content:space-between;text-align:left;align-items:flex-start}}.custom-footer-brand{max-width:360px;display:flex;flex-direction:column;align-items:flex-start}.custom-footer-logo-row{display:flex;align-items:center;gap:10px;margin-bottom:.75rem}.custom-footer-copyright{font-size:12.5px;color:#9ca3af;margin-top:.5rem}.custom-footer-socials{display:flex;gap:1.25rem;align-items:center}@media (max-width:767px){.custom-footer-socials{margin-top:1rem}}.custom-footer-social-link{color:#4b5563;transition:color .2s ease}.custom-footer-social-link:hover{color:#0178c8}.dark .custom-footer-social-link{color:#9ca3af}.dark .custom-footer-social-link:hover{color:#7ec8fc}#page-title,h1,h2,h3,h4{text-wrap:balance}p{text-wrap:pretty}@media (max-width:767px){table{min-width:0!important}pre{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}}.gateway-router-card{background-color:#0b0f19;border:1px solid #1e293b;border-radius:12px;box-shadow:0 20px 40px rgba(0,0,0,.35);width:100%;overflow:hidden;font-family:'Inter',sans-serif;color:#e2e8f0}.router-header{background-color:#121826;border-bottom:1px solid #1e293b;padding:12px 18px;display:flex;align-items:center;justify-content:space-between}.status-indicator{display:flex;align-items:center;gap:8px}.pulse-dot{width:8px;height:8px;background-color:#10b981;border-radius:50%;box-shadow:0 0 0 0 rgba(16,185,129,.7);animation:pulse-green 2s infinite}.status-text{font-size:11px;font-weight:600;color:#10b981;text-transform:uppercase;letter-spacing:.05em}.router-title{color:#64748b;font-size:13px;font-weight:500}.router-body{padding:24px}.flow-node,.route-flow{display:flex;align-items:center}.route-flow{justify-content:space-between;background-color:#121826;border:1px solid #1e293b;border-radius:8px;padding:16px;margin-bottom:24px}.flow-node{flex-direction:column;gap:6px;font-size:12px;color:#94a3b8}.flow-node svg{color:#64748b}.active-node{color:#38bdf8;font-weight:600}.active-node svg{color:#38bdf8;filter:drop-shadow(0 0 8px rgba(56,189,248,.5))}.flow-arrow{color:#334155;font-size:16px;animation:slide-right 2s infinite linear}.gateway-list{display:flex;flex-direction:column;gap:12px}.gateway-info,.gateway-item{display:flex;align-items:center}.gateway-item{justify-content:space-between;background-color:rgba(30,41,59,.4);border:1px solid rgba(226,232,240,.05);border-radius:8px;padding:12px 16px}.gateway-info{gap:10px}.gateway-dot{width:6px;height:6px;border-radius:50%}.status-active{background-color:#10b981;box-shadow:0 0 8px #10b981}.gateway-badge{font-size:11px;background-color:rgba(56,189,248,.1);color:#38bdf8;padding:2px 8px;border-radius:4px;font-weight:500}"}],"page":{"pagePath":"resources/faq","slug":"/resources/faq","pageMetadata":{"title":"Frequently Asked Questions","description":"Answers to common questions about OwnPay covering general, technical, security, payments, and development topics.","keywords":"FAQ, frequently asked questions, OwnPay help, self-hosted payments, open source payment gateway","sidebarTitle":"FAQ","icon":"heart-handshake","href":"/resources/faq"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Answers to common questions about OwnPay covering general, technical, security, payments, and development topics.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,hr:`hr`,li:`li`,p:`p`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Heading}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Common questions about OwnPay, organized by topic.`}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`general`,children:`General`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`What is OwnPay?`,id:`what-is-ownpay`,children:_jsx(_components.p,{children:`OwnPay is a self-hosted, open-source payment orchestrator. It lets a single platform owner run multiple white-labeled payment brands (stores) from one installation, with 123+ payment gateways, a double-entry ledger, and full data isolation between brands.`})}),_jsx(Accordion,{title:`Is OwnPay really free?`,id:`is-ownpay-really-free`,children:_jsx(_components.p,{children:`Yes. OwnPay is released under the AGPL-3.0 license. You can download, install, and use it without paying any license fees. You only pay the transaction fees charged by your chosen payment gateways (Stripe, bKash, etc.), not to OwnPay.`})}),_jsx(Accordion,{title:`What license does OwnPay use?`,id:`what-license-does-ownpay-use`,children:_jsxs(_components.p,{children:[`AGPL-3.0 (GNU Affero General Public License). This means you can use, modify, and distribute OwnPay freely, but any modifications you serve over a network must also be made available under the same license. See the `,_jsx(_components.a,{href:`/resources/contributing`,children:`Contributing Guide`}),` for details on licensing of contributions.`]})}),_jsx(Accordion,{title:`How many gateways does OwnPay support?`,id:`how-many-gateways-does-ownpay-support`,children:_jsx(_components.p,{children:`OwnPay ships with 123 built-in gateway adapters covering global card processors (Stripe, Adyen, Square), digital wallets (PayPal, Apple Pay, Google Pay), mobile financial services (bKash, Nagad, M-Pesa, GCash), buy-now-pay-later (Klarna), crypto (Coinbase Commerce), and regional platforms (Razorpay, Flutterwave, Paystack, Xendit, and many more).`})}),_jsx(Accordion,{title:`Is OwnPay a SaaS platform?`,id:`is-ownpay-a-saas-platform`,children:_jsx(_components.p,{children:`No. OwnPay is infrastructure you deploy and own on your own server. No third party has access to your transactions, customer data, or configuration.`})})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`technical`,children:`Technical`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`What PHP version do I need?`,id:`what-php-version-do-i-need`,children:_jsxs(_components.p,{children:[`PHP 8.3 or higher. OwnPay uses `,_jsx(_components.code,{children:`declare(strict_types=1)`}),` throughout and relies on PHP 8.3 features like readonly properties and typed class constants.`]})}),_jsx(Accordion,{title:`What database does OwnPay use?`,id:`what-database-does-ownpay-use`,children:_jsx(_components.p,{children:`MySQL 8.0 or MariaDB 10.4+. OwnPay uses InnoDB for all tables and relies on Stored Generated Columns for JSON field indexing.`})}),_jsx(Accordion,{title:`Is Redis required?`,id:`is-redis-required`,children:_jsx(_components.p,{children:`No, but it is strongly recommended. OwnPay works with file-based cache and sessions by default, but Redis provides significantly better performance for rate limiting, sessions, and the job queue. Switch to Redis when you expect more than 1,000 payments per day.`})}),_jsx(Accordion,{title:`Can I run OwnPay with Docker?`,id:`can-i-run-ownpay-with-docker`,children:_jsxs(_components.p,{children:[`Yes. While there is no official Docker image yet, the community maintains Docker Compose configurations. OwnPay’s single-entry-point architecture (`,_jsx(_components.code,{children:`public/index.php`}),`) makes it straightforward to containerize with any PHP 8.3 base image.`]})}),_jsx(Accordion,{title:`Does OwnPay work on shared hosting?`,id:`does-ownpay-work-on-shared-hosting`,children:_jsxs(_components.p,{children:[`Yes. OwnPay includes a web-based installer that requires no CLI access. The `,_jsx(_components.code,{children:`vendor/`}),` directory is bundled in release archives, so you do not need Composer on the server. You need PHP 8.3 support and a MySQL database.`]})})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`security`,children:`Security`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`Is OwnPay PCI DSS compliant?`,id:`is-ownpay-pci-dss-compliant`,children:_jsx(_components.p,{children:`OwnPay uses a gateway delegation model - credit card data is collected and processed directly by upstream gateways (Stripe, Adyen, etc.) and never touches your server. This typically places OwnPay under SAQ-A, the simplest PCI self-assessment level. Consult a QSA for your specific deployment.`})}),_jsx(Accordion,{title:`How is my data encrypted?`,id:`how-is-my-data-encrypted`,children:_jsx(_components.p,{children:`Customer PII (names, emails, phone numbers) and gateway API credentials are encrypted at rest using AES-256-GCM with a per-installation key. Webhook payloads are signed with HMAC-SHA256. All traffic uses HTTPS with HSTS enforced.`})}),_jsx(Accordion,{title:`Is OwnPay GDPR compliant?`,id:`is-ownpay-gdpr-compliant`,children:_jsx(_components.p,{children:`OwnPay provides the technical tools for GDPR compliance: data minimization, encrypted storage, hash-based lookups, data export (CSV), and data deletion with ledger anonymization. As a self-hosted platform, you are the data controller and are responsible for your own GDPR processes and policies.`})})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`payments`,children:`Payments`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`Which payment gateways are supported?`,id:`which-payment-gateways-are-supported`,children:_jsxs(_components.p,{children:[`See the full list on the `,_jsx(_components.a,{href:`/resources/features`,children:`Features`}),` page under “Payment Gateway System.” The list includes 123 adapters across cards, wallets, MFS, crypto, and regional platforms.`]})}),_jsx(Accordion,{title:`Can I accept manual payments (bank transfer, cash)?`,id:`can-i-accept-manual-payments-bank-transfer-cash`,children:_jsx(_components.p,{children:`Yes. OwnPay supports manual gateways where you configure custom fields (bank account number, reference number) and verify payments manually or via the SMS auto-verification system with the companion app.`})}),_jsx(Accordion,{title:`How does SMS verification work?`,id:`how-does-sms-verification-work`,children:_jsxs(_components.p,{children:[`The OwnPay Android companion app forwards incoming SMS from payment providers to your server. The server parses the SMS using regex and heuristic patterns, extracts the transaction amount and ID, and automatically matches it to a pending payment intent. See the `,_jsx(_components.a,{href:`/resources/features`,children:`Features`}),` page for details.`]})})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`development`,children:`Development`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`How does the plugin system work?`,id:`how-does-the-plugin-system-work`,children:_jsxs(_components.p,{children:[`Plugins are self-contained packages under `,_jsx(_components.code,{children:`modules/`}),` with a `,_jsx(_components.code,{children:`manifest.json`}),` that declares metadata, capabilities, and hook registrations. Three types exist: Gateway, Theme, and Addon. All plugins are scanned by a static code sandbox before loading. See the `,_jsx(_components.a,{href:`/developer/plugins/overview`,children:`Plugin Development Overview`}),`.`]})}),_jsx(Accordion,{title:`What are the API rate limits?`,id:`what-are-the-api-rate-limits`,children:_jsxs(_components.p,{children:[`Merchant API: 60 requests/minute per API key. Login attempts: 10 per 5 minutes per IP. Global: 120 requests/minute per IP. See the `,_jsx(_components.a,{href:`/resources/rate-limiting`,children:`Rate Limiting`}),` page for the full reference.`]})}),_jsx(Accordion,{title:`How do webhooks work?`,id:`how-do-webhooks-work`,children:_jsxs(_components.p,{children:[`You register a webhook URL per brand in the admin panel. OwnPay sends signed HTTP POST requests (HMAC-SHA256) when payment events occur. Failed deliveries are retried with exponential backoff. See the `,_jsx(_components.a,{href:`/resources/code-examples`,children:`Code Examples`}),` page for verification code.`]})}),_jsx(Accordion,{title:`Are there official SDKs?`,id:`are-there-official-sdks`,children:_jsxs(_components.p,{children:[`Yes. OwnPay provides official SDKs for PHP, Laravel, and Node.js. Community-maintained SDKs exist for Python, Go, and Java. See the `,_jsx(_components.a,{href:`/resources/ecosystem`,children:`Ecosystem`}),` page for links and installation instructions.`]})})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`related-pages`,children:`Related Pages`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/resources/common-errors`,children:`Common Errors`}),` - Troubleshooting specific issues`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/resources/debug-mode`,children:`Debug Mode`}),` - Enabling detailed error output for diagnosis`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/resources/contributing`,children:`Contributing`}),` - How to contribute to OwnPay`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/resources/code-examples`,children:`Code Examples`}),` - Integration code in multiple languages`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":{"theme":{"light":"github-light","dark":"github-dark"}},"config":{},"pageMetadata":{"title":"Frequently Asked Questions","description":"Answers to common questions about OwnPay covering general, technical, security, payments, and development topics.","keywords":"FAQ, frequently asked questions, OwnPay help, self-hosted payments, open source payment gateway","sidebarTitle":"FAQ","icon":"heart-handshake","href":"/resources/faq"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"General","slug":"general","depth":2,"children":[]},{"title":"Technical","slug":"technical","depth":2,"children":[]},{"title":"Security","slug":"security","depth":2,"children":[]},{"title":"Payments","slug":"payments","depth":2,"children":[]},{"title":"Development","slug":"development","depth":2,"children":[]},{"title":"Related Pages","slug":"related-pages","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/ownpay/bc03f67168c469e9/script.js"],"subdomain":"ownpay","siteName":"OwnPay","title":"Frequently Asked Questions - OwnPay","relatedPagesConfig":{"enabled":true,"limit":5,"mode":"automatic"},"contextualStarterQuestions":[{"_id":"6a8d3b6c3a3ee223ca15958f","deploymentId":"6a4eb393b0b17ad26d4e5eea","questionText":"What is OwnPay?","status":"active","generatedBy":"contextual","path":"resources/faq","createdAt":"2026-08-25T06:51:24.628Z","updatedAt":"2026-08-25T06:51:24.628Z","__v":0},{"_id":"6a8d3b6c3a3ee223ca159591","deploymentId":"6a4eb393b0b17ad26d4e5eea","questionText":"What PHP version is needed?","status":"active","generatedBy":"contextual","path":"resources/faq","createdAt":"2026-08-25T06:51:24.628Z","updatedAt":"2026-08-25T06:51:24.628Z","__v":0},{"_id":"6a8d3b6c3a3ee223ca159590","deploymentId":"6a4eb393b0b17ad26d4e5eea","questionText":"Does OwnPay cost money?","status":"active","generatedBy":"contextual","path":"resources/faq","createdAt":"2026-08-25T06:51:24.628Z","updatedAt":"2026-08-25T06:51:24.628Z","__v":0}],"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/resources/faq","matchLevel":0},"zh":{"href":"/zh/introduction","matchLevel":4}}},"lastModified":"2026-08-25T06:51:09.020Z","gitLastModified":"2026-08-25T12:02:04.000Z","originalFileLocation":"resources/faq.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Answers to common questions about OwnPay covering general, technical, security, payments, and development topics.\">\u003cmeta data-mint-head name=\"application-name\" content=\"OwnPay\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003cmeta data-mint-head name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/ownpay/JIvzQy_7GPsgYuLC/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/ownpay/JIvzQy_7GPsgYuLC/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/ownpay/JIvzQy_7GPsgYuLC/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/ownpay/JIvzQy_7GPsgYuLC/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/ownpay/JIvzQy_7GPsgYuLC/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/ownpay/JIvzQy_7GPsgYuLC/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/ownpay/JIvzQy_7GPsgYuLC/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/ownpay/JIvzQy_7GPsgYuLC/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/ownpay/JIvzQy_7GPsgYuLC/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Frequently Asked Questions - OwnPay\">\u003cmeta data-mint-head property=\"og:description\" content=\"Answers to common questions about OwnPay covering general, technical, security, payments, and development topics.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"OwnPay Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://ownpay.org/docs/resources/faq\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://ownpay.mintlify.app/_mintlify/api/og/v2?division=Troubleshooting\u0026amp;title=Frequently+Asked+Questions\u0026amp;description=Answers+to+common+questions+about+OwnPay+covering+general%2C+technical%2C+security%2C+payments%2C+and+development+topics.\u0026amp;theme=104e90172858186ecb085a5d\u0026amp;signature=815885b948ae9085b06a689bd5d595eec04e01e843a8f4452f39196d6d1ba1a6\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Frequently Asked Questions - OwnPay\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Answers to common questions about OwnPay covering general, technical, security, payments, and development topics.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://ownpay.mintlify.app/_mintlify/api/og/v2?division=Troubleshooting\u0026amp;title=Frequently+Asked+Questions\u0026amp;description=Answers+to+common+questions+about+OwnPay+covering+general%2C+technical%2C+security%2C+payments%2C+and+development+topics.\u0026amp;theme=104e90172858186ecb085a5d\u0026amp;signature=815885b948ae9085b06a689bd5d595eec04e01e843a8f4452f39196d6d1ba1a6\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/ownpay/JIvzQy_7GPsgYuLC/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"OwnPay\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0F97ED\">\u003cmeta data-mint-head name=\"og:locale\" content=\"en_US\">\u003cmeta data-mint-head name=\"fb:app_id\" content=\"2933285433703137\">\u003cmeta data-mint-head name=\"og:image:alt\" content=\"OwnPay - Open-Source, Self-Hosted Payment Gateway Platform\">\u003clink data-mint-head rel=\"canonical\" href=\"https://ownpay.org/docs/resources/faq\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/resources/faq.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://ownpay.org/#organization\",\"name\":\"OwnPay\",\"legalName\":\"OwnPay\",\"url\":\"https://ownpay.org\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://ownpay.org/docs/logo/light.svg\"},\"sameAs\":[\"https://github.com/own-pay/OwnPay\",\"https://x.com/ownpayorg\",\"https://youtube.com/@ownpayorg\",\"https://facebook.com/ownpay.org\",\"https://github.com/own-pay\",\"https://www.npmjs.com/package/ownpay-nodejs\",\"https://marketplace.whmcs.com/product/8845-ownpay-whmcs\",\"https://github.com/own-pay/OwnPay-Mobile-App\",\"https://facebook.com/groups/ownpay.org\"]},{\"@type\":\"WebSite\",\"@id\":\"https://ownpay.org/docs#website\",\"name\":\"OwnPay\",\"url\":\"https://ownpay.org/docs\",\"publisher\":{\"@id\":\"https://ownpay.org/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://ownpay.org/docs/resources/faq#webpage\",\"url\":\"https://ownpay.org/docs/resources/faq\",\"name\":\"Frequently Asked Questions\",\"description\":\"Answers to common questions about OwnPay covering general, technical, security, payments, and development topics.\",\"dateModified\":\"2026-08-25T12:02:04.000Z\",\"isPartOf\":{\"@id\":\"https://ownpay.org/docs#website\"},\"breadcrumb\":{\"@id\":\"https://ownpay.org/docs/resources/faq#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://ownpay.org/docs/resources/faq#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Troubleshooting\",\"item\":\"https://ownpay.org/docs/resources/common-errors\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Frequently Asked Questions\",\"item\":\"https://ownpay.org/docs/resources/faq\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://ownpay.org/docs/resources/faq#article\",\"headline\":\"Frequently Asked Questions\",\"name\":\"Frequently Asked Questions\",\"description\":\"Answers to common questions about OwnPay covering general, technical, security, payments, and development topics.\",\"url\":\"https://ownpay.org/docs/resources/faq\",\"mainEntityOfPage\":{\"@id\":\"https://ownpay.org/docs/resources/faq#webpage\"},\"dateModified\":\"2026-08-25T12:02:04.000Z\",\"publisher\":{\"@id\":\"https://ownpay.org/#organization\"},\"isPartOf\":{\"@id\":\"https://ownpay.org/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"OwnPay\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"OwnPay","nav":{"global":{"anchors":[{"anchor":"Changelog","icon":"history","href":"/resources/changelog"}]},"languages":[{"language":"en","default":true,"tabs":[{"tab":"Documentation","icon":"book","pages":[{"title":"Documentation","href":"/introduction"}]},{"tab":"API Reference","icon":"terminal-2","pages":[{"title":"API Reference","href":"/api/overview"}]},{"tab":"Developer","icon":"code","pages":[{"title":"Developer","href":"/developer/quickstart"}]},{"tab":"Resources","icon":"folder","groups":[{"group":"About","icon":"info-circle","pages":[{"title":"Features and Capabilities","sidebarTitle":"Features","icon":"star","href":"/resources/features"},{"title":"OwnPay Architecture: PHP Core, Middleware, and Plugins","sidebarTitle":"Architecture","icon":"building","href":"/resources/architecture"},{"title":"Roadmap - OwnPay Release Milestones and Upcoming Features","sidebarTitle":"Roadmap","icon":"map","href":"/resources/roadmap"},{"title":"OwnPay ecosystem: SDKs, plugins, and companion app","sidebarTitle":"Ecosystem","icon":"network","href":"/resources/ecosystem"}]},{"group":"Advanced","icon":"shield","pages":[{"title":"Security and Compliance","sidebarTitle":"Security","icon":"shield-check","href":"/resources/security-compliance"},{"title":"Performance and Scaling","sidebarTitle":"Performance","icon":"gauge","href":"/resources/performance-scaling"},{"title":"Backup and Export","sidebarTitle":"Backup \u0026 Export","icon":"server","href":"/resources/backup-export"},{"title":"Migration Guide","sidebarTitle":"Migration Guide","icon":"arrows-exchange","href":"/resources/migration-guide"},{"title":"Rate Limiting","sidebarTitle":"Rate Limiting","icon":"clock","href":"/resources/rate-limiting"}]},{"group":"Troubleshooting","icon":"alert-triangle","pages":[{"title":"Common Errors","description":"Fix common OwnPay installation, payment, webhook, SMS, plugin, and system errors, with the symptom, root cause, and resolution listed for each issue.","sidebarTitle":"Common Errors","icon":"message-report","href":"/resources/common-errors"},{"title":"Frequently Asked Questions","sidebarTitle":"FAQ","icon":"heart-handshake","href":"/resources/faq"},{"title":"Debug Mode","description":"Learn how to enable and use OwnPay's debug mode for detailed error output, SQL query logging, and troubleshooting development issues.","sidebarTitle":"Debug Mode","icon":"bug","href":"/resources/debug-mode"}]},{"group":"Community","icon":"users","pages":[{"title":"Contributing to OwnPay","sidebarTitle":"Contributing","icon":"git-pull-request","href":"/resources/contributing"},{"title":"Set up OwnPay for local development","sidebarTitle":"Local Setup","href":"/resources/local-setup"},{"title":"Code of Conduct","sidebarTitle":"Code of Conduct","icon":"script","href":"/resources/code-of-conduct"},{"title":"Changelog","sidebarTitle":"Changelog","icon":"history","href":"/resources/changelog"},{"title":"Glossary","sidebarTitle":"Glossary","icon":"book","href":"/resources/glossary"}]},{"group":"Code Examples","icon":"code","pages":[{"title":"Code Examples","sidebarTitle":"Code Examples","icon":"code","href":"/resources/code-examples"}]}]}]},{"language":"zh","pages":[{"title":"zh","href":"/zh/introduction"}]}]},"title":"Frequently Asked Questions - OwnPay","buildId":"dpl_3rfzHPCtRhDFBbetXZ3oLkN5tjmA","deploymentId":"dpl_3rfzHPCtRhDFBbetXZ3oLkN5tjmA","dynamics":["10e4515597"],"chunks":["BannerMarkdown-3zwwRfY7.js","dist-DMuJXOAm.js","lib--scc4DXi.js","lib-B8HbPgcC.js","clsx-eUAxaTXI.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js"]}