How to create manual (offline) payment methods like bank transfer, cash on delivery, and mobile money with payment instructions in OwnPay.
Manual payment methods are offline channels where the customer pays outside of OwnPay - for example, by transferring money to your bank account, sending mobile money, or paying cash on delivery. You define the payment instructions and custom fields, and then verify the payment manually or automatically via SMS.
Unlike API gateways (Stripe, bKash API) that process payments in real time, manual gateways rely on the customer completing the payment on their own and then submitting proof. OwnPay provides the checkout interface and tracking, but you confirm whether the payment actually arrived.Common examples:
Bank transfer - customer transfers to your account number and uploads a screenshot.
Cash on delivery (COD) - customer pays when they receive goods.
Mobile money with instructions - customer sends money to your phone number and enters the transaction ID.
Write clear, step-by-step instructions with exact account numbers
No custom fields for transaction ID
You cannot identify which payment belongs to which transaction
Always require at least a transaction ID field
Min amount higher than max amount
Checkout will reject all amounts
Ensure min amount is less than or equal to max amount
Spaces in slug
Breaks checkout URLs
Use only lowercase letters, numbers, and hyphens
Manual payments stay in “awaiting verification” until you or the SMS auto-verification system process them. Check the Transactions page regularly if you are not using SMS verification.
{"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":"gateways/manual-methods","slug":"/gateways/manual-methods","pageMetadata":{"title":"Manual payment methods","description":"How to create manual (offline) payment methods like bank transfer, cash on delivery, and mobile money with payment instructions in OwnPay.","keywords":"manual gateway, offline payment, bank transfer, COD, mobile money, custom fields","sidebarTitle":"Manual Methods","icon":"cash","href":"/gateways/manual-methods"},"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: \"How to create manual (offline) payment methods like bank transfer, cash on delivery, and mobile money with payment instructions in OwnPay.\"\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`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Manual payment methods are offline channels where the customer pays outside of OwnPay - for example, by transferring money to your bank account, sending mobile money, or paying cash on delivery. You define the payment instructions and custom fields, and then verify the payment manually or automatically via SMS.`}),`\n`,_jsx(Heading,{level:`2`,id:`what-manual-gateways-are`,children:`What manual gateways are`}),`\n`,_jsx(_components.p,{children:`Unlike API gateways (Stripe, bKash API) that process payments in real time, manual gateways rely on the customer completing the payment on their own and then submitting proof. OwnPay provides the checkout interface and tracking, but you confirm whether the payment actually arrived.`}),`\n`,_jsx(_components.p,{children:`Common examples:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Bank transfer`}),` - customer transfers to your account number and uploads a screenshot.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Cash on delivery (COD)`}),` - customer pays when they receive goods.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Mobile money with instructions`}),` - customer sends money to your phone number and enters the transaction ID.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`create-a-manual-gateway`,children:`Create a manual gateway`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Go to `,_jsx(_components.strong,{children:`Gateways \u0026 Currencies`}),` → `,_jsx(_components.strong,{children:`Payment Gateways`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Add Manual Gateway`}),`.`]}),`\n`,_jsx(_components.li,{children:`Fill in the basic settings (see table below).`}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Create Gateway`}),`.`]}),`\n`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Setting`}),_jsx(_components.th,{children:`Type`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Name`})}),_jsx(_components.td,{children:`Text`}),_jsx(_components.td,{children:`Display name at checkout (for example “Bank Transfer - IBBL”)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Slug`})}),_jsx(_components.td,{children:`Text`}),_jsx(_components.td,{children:`URL-safe identifier (lowercase, hyphens only)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Icon`})}),_jsx(_components.td,{children:`File upload`}),_jsx(_components.td,{children:`Logo or icon shown at checkout`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Payment instructions`})}),_jsx(_components.td,{children:`Rich text`}),_jsx(_components.td,{children:`Instructions the customer sees after selecting this method`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Custom fields`})}),_jsx(_components.td,{children:`JSON schema`}),_jsx(_components.td,{children:`Fields the customer must fill (for example transaction ID, account number)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`QR code`})}),_jsx(_components.td,{children:`File upload`}),_jsx(_components.td,{children:`Optional QR code customers can scan to pay`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Min / Max amount`})}),_jsx(_components.td,{children:`Number`}),_jsx(_components.td,{children:`Transaction limits for this method`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`custom-fields`,children:`Custom fields`}),`\n`,_jsx(_components.p,{children:`Define a JSON schema for the fields customers must fill at checkout. For example:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light github-dark`,style:{backgroundColor:`#fff`,\"--shiki-dark-bg\":`#24292e`,color:`#24292e`,\"--shiki-dark\":`#e1e4e8`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`[`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:` { `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`\"name\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"trx_id\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`, `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`\"label\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"Transaction ID\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`, `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`\"type\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"text\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`, `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`\"required\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`true`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:` { `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`\"name\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"sender_account\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`, `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`\"label\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"Sender Account Number\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`, `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`\"type\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`\"text\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`, `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`\"required\"`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`false`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:` }`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`]`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`These fields appear on the checkout page after the customer selects this manual method.`}),`\n`,_jsx(Heading,{level:`2`,id:`how-manual-payments-work`,children:`How manual payments work`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`The customer selects the manual method at checkout.`}),`\n`,_jsxs(_components.li,{children:[`They see your `,_jsx(_components.strong,{children:`payment instructions`}),` (bank account, phone number, etc.).`]}),`\n`,_jsx(_components.li,{children:`They complete the payment on their own.`}),`\n`,_jsxs(_components.li,{children:[`They fill in the `,_jsx(_components.strong,{children:`custom fields`}),` (for example enter their transaction ID).`]}),`\n`,_jsxs(_components.li,{children:[`The transaction enters `,_jsx(_components.strong,{children:`awaiting verification`}),` status.`]}),`\n`,_jsxs(_components.li,{children:[`You review the proof and click `,_jsx(_components.strong,{children:`Mark Completed`}),` or `,_jsx(_components.strong,{children:`Mark Failed`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`For automatic verification via SMS, see `,_jsx(_components.a,{href:`/gateways/sms-verification`,children:`SMS verification`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`common-mistakes`,children:`Common mistakes`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Mistake`}),_jsx(_components.th,{children:`Why it matters`}),_jsx(_components.th,{children:`Fix`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Vague payment instructions`}),_jsx(_components.td,{children:`Customer does not know where to send money`}),_jsx(_components.td,{children:`Write clear, step-by-step instructions with exact account numbers`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`No custom fields for transaction ID`}),_jsx(_components.td,{children:`You cannot identify which payment belongs to which transaction`}),_jsx(_components.td,{children:`Always require at least a transaction ID field`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Min amount higher than max amount`}),_jsx(_components.td,{children:`Checkout will reject all amounts`}),_jsx(_components.td,{children:`Ensure min amount is less than or equal to max amount`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Spaces in slug`}),_jsx(_components.td,{children:`Breaks checkout URLs`}),_jsx(_components.td,{children:`Use only lowercase letters, numbers, and hyphens`})]})]})]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Manual payments stay in “awaiting verification” until you or the SMS auto-verification system process them. Check the Transactions page regularly if you are not using SMS verification.`})}),`\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:`/gateways/configuration`,children:`Configure payment gateways`}),` - set up API-based gateways`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/gateways/sms-verification`,children:`SMS verification`}),` - auto-verify manual payments via SMS`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/payments/transactions`,children:`Transactions`}),` - review and approve awaiting-verification transactions`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/mobile/sms-templates`,children:`SMS templates`}),` - manage SMS parsing templates`]}),`\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":"Manual payment methods","description":"How to create manual (offline) payment methods like bank transfer, cash on delivery, and mobile money with payment instructions in OwnPay.","keywords":"manual gateway, offline payment, bank transfer, COD, mobile money, custom fields","sidebarTitle":"Manual Methods","icon":"cash","href":"/gateways/manual-methods"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"What manual gateways are","slug":"what-manual-gateways-are","depth":2,"children":[]},{"title":"Create a manual gateway","slug":"create-a-manual-gateway","depth":2,"children":[]},{"title":"Custom fields","slug":"custom-fields","depth":2,"children":[]},{"title":"How manual payments work","slug":"how-manual-payments-work","depth":2,"children":[]},{"title":"Common mistakes","slug":"common-mistakes","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":"Manual payment methods - OwnPay","relatedPagesConfig":{"enabled":true,"limit":5,"mode":"automatic"},"contextualStarterQuestions":[{"_id":"6a8d6299b9b6d81a5a515ec4","deploymentId":"6a4eb393b0b17ad26d4e5eea","questionText":"How does manual payment work?","status":"active","generatedBy":"contextual","path":"gateways/manual-methods","createdAt":"2026-08-25T09:38:33.988Z","updatedAt":"2026-08-25T09:38:33.988Z","__v":0},{"_id":"6a8d6299b9b6d81a5a515ec3","deploymentId":"6a4eb393b0b17ad26d4e5eea","questionText":"What fields can customers fill in?","status":"active","generatedBy":"contextual","path":"gateways/manual-methods","createdAt":"2026-08-25T09:38:33.988Z","updatedAt":"2026-08-25T09:38:33.988Z","__v":0},{"_id":"6a8d6299b9b6d81a5a515ec2","deploymentId":"6a4eb393b0b17ad26d4e5eea","questionText":"How do I create a manual gateway?","status":"active","generatedBy":"contextual","path":"gateways/manual-methods","createdAt":"2026-08-25T09:38:33.988Z","updatedAt":"2026-08-25T09:38:33.988Z","__v":0}],"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/gateways/manual-methods","matchLevel":0},"zh":{"href":"/zh/introduction","matchLevel":4}}},"lastModified":"2026-08-25T09:37:37.281Z","gitLastModified":"2026-08-25T12:02:04.000Z","originalFileLocation":"gateways/manual-methods.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=\"How to create manual (offline) payment methods like bank transfer, cash on delivery, and mobile money with payment instructions in OwnPay.\">\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=\"Manual payment methods - OwnPay\">\u003cmeta data-mint-head property=\"og:description\" content=\"How to create manual (offline) payment methods like bank transfer, cash on delivery, and mobile money with payment instructions in OwnPay.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"OwnPay Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://ownpay.org/docs/gateways/manual-methods\">\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=Gateways+%26+Currencies\u0026amp;title=Manual+payment+methods\u0026amp;description=How+to+create+manual+%28offline%29+payment+methods+like+bank+transfer%2C+cash+on+delivery%2C+and+mobile+money+with+payment+instructions+in+OwnPay.\u0026amp;theme=104e90172858186ecb085a5d\u0026amp;signature=99a6cce167cfed024773a3e0c233dad5cdb752c3300d56a4d3ca5e02671c26ee\">\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=\"Manual payment methods - OwnPay\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"How to create manual (offline) payment methods like bank transfer, cash on delivery, and mobile money with payment instructions in OwnPay.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://ownpay.mintlify.app/_mintlify/api/og/v2?division=Gateways+%26+Currencies\u0026amp;title=Manual+payment+methods\u0026amp;description=How+to+create+manual+%28offline%29+payment+methods+like+bank+transfer%2C+cash+on+delivery%2C+and+mobile+money+with+payment+instructions+in+OwnPay.\u0026amp;theme=104e90172858186ecb085a5d\u0026amp;signature=99a6cce167cfed024773a3e0c233dad5cdb752c3300d56a4d3ca5e02671c26ee\">\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/gateways/manual-methods\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/gateways/manual-methods.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/gateways/manual-methods#webpage\",\"url\":\"https://ownpay.org/docs/gateways/manual-methods\",\"name\":\"Manual payment methods\",\"description\":\"How to create manual (offline) payment methods like bank transfer, cash on delivery, and mobile money with payment instructions in OwnPay.\",\"dateModified\":\"2026-08-25T12:02:04.000Z\",\"isPartOf\":{\"@id\":\"https://ownpay.org/docs#website\"},\"breadcrumb\":{\"@id\":\"https://ownpay.org/docs/gateways/manual-methods#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://ownpay.org/docs/gateways/manual-methods#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Gateways \u0026 Currencies\",\"item\":\"https://ownpay.org/docs/gateways/configuration\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Manual payment methods\",\"item\":\"https://ownpay.org/docs/gateways/manual-methods\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://ownpay.org/docs/gateways/manual-methods#article\",\"headline\":\"Manual payment methods\",\"name\":\"Manual payment methods\",\"description\":\"How to create manual (offline) payment methods like bank transfer, cash on delivery, and mobile money with payment instructions in OwnPay.\",\"url\":\"https://ownpay.org/docs/gateways/manual-methods\",\"mainEntityOfPage\":{\"@id\":\"https://ownpay.org/docs/gateways/manual-methods#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","groups":[{"group":"Get Started","icon":"rocket","pages":[{"title":"OwnPay: Self-Hosted Payment Orchestrator","sidebarTitle":"Introduction","icon":"bolt","href":"/introduction"},{"title":"Quickstart - Accept Your First Payment in 5 Minutes","sidebarTitle":"Quickstart","icon":"rocket","href":"/quickstart"},{"title":"Install OwnPay on Shared Hosting, VPS, or Docker","sidebarTitle":"Installation","icon":"feather","href":"/installation"}]},{"group":"Fundamentals","icon":"stack-2","pages":[{"title":"How OwnPay Works","sidebarTitle":"How OwnPay Works","icon":"brain","href":"/fundamentals/how-ownpay-works"},{"title":"Brands - Multi-Tenant Merchant Isolation","sidebarTitle":"Brands","icon":"building-store","href":"/fundamentals/brands"},{"title":"Payment Flow - Transaction Statuses and Lifecycle","sidebarTitle":"Payment Flow","icon":"cash","href":"/fundamentals/payment-flow"},{"title":"Gateways - Payment Provider Integrations","sidebarTitle":"Gateways","icon":"wallet","href":"/fundamentals/gateways"},{"title":"Ledger - Double-Entry Bookkeeping for Payments","sidebarTitle":"Ledger","icon":"book","href":"/fundamentals/ledger"},{"title":"Plugin System - Extensible Architecture","sidebarTitle":"Plugins","icon":"puzzle","href":"/fundamentals/plugins"},{"title":"Custom Domains - White-Label Checkout URLs","sidebarTitle":"Domains","icon":"world","href":"/fundamentals/domains"}]},{"group":"People","icon":"users","pages":[{"title":"Create and manage brands","sidebarTitle":"Brands","icon":"building-store","href":"/people/brands"},{"title":"Invite and manage staff","sidebarTitle":"Staff","icon":"user-plus","href":"/people/staff"},{"title":"Roles and permissions","sidebarTitle":"Roles","icon":"shield-check","href":"/people/roles"},{"title":"Customer profiles","sidebarTitle":"Customers","icon":"id","href":"/people/customers"}]},{"group":"Payments","icon":"credit-card","pages":[{"title":"Create payment links","sidebarTitle":"Payment Links","icon":"link","href":"/payments/payment-links"},{"title":"Transaction management","sidebarTitle":"Transactions","icon":"receipt","href":"/payments/transactions"},{"title":"Issue refunds","sidebarTitle":"Refunds","icon":"rotate","href":"/payments/refunds"},{"title":"Create and manage invoices","sidebarTitle":"Invoices","icon":"file-text","href":"/payments/invoices"},{"title":"Ledger UI","sidebarTitle":"Ledger","icon":"book","href":"/payments/ledger"}]},{"group":"Gateways \u0026 Currencies","icon":"wallet","pages":[{"title":"Configure payment gateways","description":"How to add, configure, test, and activate API-based payment gateways in OwnPay with encrypted credential storage.","sidebarTitle":"Gateways","icon":"settings","href":"/gateways/configuration"},{"title":"Manual payment methods","sidebarTitle":"Manual Methods","icon":"cash","href":"/gateways/manual-methods"},{"title":"Manage currencies and exchange rates","description":"How to add currencies, set base currency per brand, configure exchange rates, and handle multi-currency checkouts in OwnPay.","sidebarTitle":"Currencies","icon":"coins","href":"/gateways/currencies"},{"title":"SMS auto-verification","sidebarTitle":"SMS Verification","icon":"message-circle","href":"/gateways/sms-verification"}]},{"group":"Appearance","icon":"palette","pages":[{"title":"Brand identity settings","sidebarTitle":"Branding","icon":"brush","href":"/appearance/branding"},{"title":"Checkout themes","sidebarTitle":"Themes","icon":"palette","href":"/appearance/themes"},{"title":"Landing page configuration","sidebarTitle":"Landing Page","icon":"app-window","href":"/appearance/landing-page"}]},{"group":"Notifications","icon":"bell","pages":[{"title":"Email Notifications","sidebarTitle":"Email","icon":"mail","href":"/notifications/email"},{"title":"Webhooks","sidebarTitle":"Webhooks","icon":"webhook","href":"/notifications/webhooks"},{"title":"Telegram Notifications","sidebarTitle":"Telegram","icon":"send","href":"/notifications/telegram"},{"title":"SMS Center","sidebarTitle":"SMS Center","icon":"message","href":"/notifications/sms-center"}]},{"group":"Mobile","icon":"device-mobile","pages":[{"title":"Companion App","sidebarTitle":"Companion App","icon":"device-mobile","href":"/mobile/companion-app"},{"title":"Devices","sidebarTitle":"Devices","icon":"device-mobile","href":"/mobile/devices"},{"title":"SMS Templates","sidebarTitle":"SMS Templates","icon":"file-code","href":"/mobile/sms-templates"}]},{"group":"Reports \u0026 Finance","icon":"chart-bar","pages":[{"title":"Dashboard","sidebarTitle":"Dashboard","icon":"layout-dashboard","href":"/reports/dashboard"},{"title":"Audit Log","sidebarTitle":"Audit Log","icon":"scroll","href":"/reports/audit-log"},{"title":"Balance Verification","sidebarTitle":"Balance Verification","icon":"scale","href":"/reports/balance-verification"},{"title":"Disputes","sidebarTitle":"Disputes","icon":"alert-circle","href":"/reports/disputes"}]},{"group":"System","icon":"settings","pages":[{"title":"Settings","sidebarTitle":"Settings","icon":"settings","href":"/system/settings"},{"title":"Domains","sidebarTitle":"Domains","icon":"world","href":"/system/domains"},{"title":"Plugins","sidebarTitle":"Plugins","icon":"puzzle","href":"/system/plugins"},{"title":"Addons","sidebarTitle":"Addons","icon":"package","href":"/system/addons"},{"title":"Languages","sidebarTitle":"Languages","icon":"language","href":"/system/languages"},{"title":"System Update","sidebarTitle":"System Update","icon":"refresh","href":"/system/system-update"}]},{"group":"Security \u0026 Access","icon":"lock","pages":[{"title":"Login","sidebarTitle":"Login","icon":"login","href":"/security/login"},{"title":"Two-Factor Authentication","sidebarTitle":"Two-Factor Authentication","icon":"shield","href":"/security/two-factor"},{"title":"Password Reset","sidebarTitle":"Password Reset","icon":"key","href":"/security/password-reset"},{"title":"API Keys","sidebarTitle":"API Keys","icon":"key","href":"/security/api-keys"},{"title":"Developer Hub","sidebarTitle":"Developer Hub","icon":"terminal","href":"/security/developer-hub"},{"title":"My Account","sidebarTitle":"My Account","icon":"user","href":"/security/my-account"}]},{"group":"Checkout","icon":"shopping-cart","pages":[{"title":"Customer Experience","sidebarTitle":"Customer Experience","icon":"shopping-bag","href":"/checkout/customer-experience"}]}]},{"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","pages":[{"title":"Resources","href":"/resources/features"}]}]},{"language":"zh","pages":[{"title":"zh","href":"/zh/introduction"}]}]},"title":"Manual payment methods - 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"]}