Files
nroxy/docs/ops/payment-provider-selection.md
2026-03-10 16:14:36 +03:00

9.4 KiB

Payment Provider Selection

Status

Working selection criteria for the product payment processor. Reviewed on 2026-03-10 against official provider materials.

Goal

Pick a crypto payment path that fits nproxy:

  • monthly crypto subscription
  • manual renewal only
  • fixed-price invoice checkout
  • single-VPS deployment
  • safe callback or polling-based reconciliation

Hard requirements

  • Crypto invoice API for fixed-price checkout.
  • Manual renewal flow. The provider must not force native recurring billing.
  • Stable external invoice identifier for reconciliation.
  • Clear invoice lifecycle that can be mapped to pending, paid, expired, and canceled.
  • Webhook support or a reliable status polling API. Both is preferred.
  • Idempotent event handling. Duplicate callbacks or repeated status checks must not cause repeated subscription activation.
  • Metadata or reference fields so the app can correlate userId, local invoiceId, and subscriptionId.
  • Test mode, sandbox, or another safe way to validate integration without real funds.
  • Merchant documentation clear enough to implement and operate without reverse engineering.
  • Fees and supported chains viable for small monthly subscription invoices.

noKYC requirement

noKYC is a hard selection criterion for the product.

For this repository, noKYC means all of the following in the normal operating path:

  • The merchant can start accepting payments without mandatory KYC or KYB review.
  • The payer can complete checkout without mandatory identity verification.
  • The provider does not require custody of merchant funds unless that is an explicit deployment choice.

Track crypto-to-crypto noKYC separately from merchant onboarding:

  • merchant noKYC asks whether nproxy can start operating without provider-side KYC or KYB.
  • crypto-to-crypto noKYC asks whether a payer can complete an on-chain crypto payment from a normal wallet without entering an identity-verification flow.

The first one is the hard gate. The second one is still valuable and should be recorded in the comparison.

Evaluation rule:

  • pass: official materials support operating without mandatory KYC in the normal path.
  • borderline: marketing or docs imply low-friction onboarding, but the provider reserves the right to require KYC, hold funds, or escalate compliance checks.
  • fail: official docs explicitly require merchant verification, or the product is clearly compliance-gated.

Comparison matrix

Provider Model Merchant noKYC Crypto-to-crypto noKYC API / webhooks Test mode Product fit Notes
BTCPay Server Self-hosted, self-custody pass pass pass pass strong Best fit for strict noKYC. Higher ops cost because the merchant runs the payment stack.
NOWPayments Hosted processor borderline borderline to pass pass unclear medium Closest hosted option. Normal crypto-to-crypto flow appears low-friction, but official support docs reserve the right to request verification and hold suspicious transactions.
Cryptomus Hosted processor fail unclear pass unclear weak Official help center says merchants need to pass KYC to use the platform. Reviewed materials did not give a clean official crypto-to-crypto noKYC promise for payers.
Coinbase Commerce / Coinbase Business Hosted processor fail unclear pass pass weak Strong API surface, but the reviewed official materials do not support a strict noKYC posture.

Provider notes

BTCPay Server

  • Official BTCPay materials describe it as self-hosted and non-custodial.
  • Official integration copy explicitly positions it as avoiding complicated KYC and keeping merchants in control of funds.
  • This is the cleanest fit if noKYC must be enforced as a hard requirement rather than a preference.
  • Tradeoff: the team must operate the service, wallet integration, backups, and chain support.

NOWPayments

  • Official API materials cover invoice creation and payment-status callbacks.
  • Official support materials say account verification is not required in general, but NOWPayments may still request KYC details and put transactions on hold in suspicious cases.
  • For the payer side, direct crypto-to-crypto checkout looks closer to noKYC than card or custodial account flows, but the official materials reviewed still leave compliance-escalation risk.
  • That means it does not cleanly satisfy a strict noKYC rule. It is only acceptable if the product can tolerate compliance escalation risk.

Cryptomus

  • Official merchant docs cover invoice APIs and callbacks.
  • Official help materials state that a merchant must pass KYC verification to use the platform.
  • That merchant-side requirement is enough to fail the current hard gate even if a payer-side crypto path is relatively low-friction.
  • This makes it a direct mismatch for the current product requirement.

Coinbase Commerce / Coinbase Business

  • Official Coinbase Commerce docs cover charges, webhooks, and test integration paths.
  • Official Coinbase legal materials state that identity verification is required for customers to use Coinbase services.
  • The reviewed official materials did not give a clean promise that external-wallet crypto-to-crypto checkout remains noKYC end to end.
  • This is operationally mature, but it is not compatible with a strict noKYC requirement.

Recommendation

  • If noKYC is truly hard, prefer BTCPay Server.
  • If a hosted processor is still desired, treat NOWPayments as the only current shortlist candidate from this review, but mark it as borderline, not pass.
  • If the team later relaxes the hard gate from merchant noKYC to only crypto-to-crypto noKYC, rerun the comparison because the shortlist may widen.
  • Do not choose Cryptomus or Coinbase while noKYC remains a hard requirement.

Merchant KYC / AML risk

This section answers the practical merchant-side risk question: can a payment path create a real loss or freeze scenario if a customer pays with suspicious or "dirty" crypto.

Short answer

  • With a hosted or custodial processor, yes, there is a real risk of payout holds, extra KYC/KYB review, delayed settlement, or account restrictions if the provider flags a payment as suspicious.
  • With a self-hosted and non-custodial path such as BTCPay Server, the processor itself does not hold your funds, so it cannot directly freeze coins that have already landed in your wallet.
  • Even with self-custody, the risk is not gone. It moves downstream to whatever exchange, custodian, OTC desk, or banking ramp you use later.

Can you lose all the money?

  • The official materials reviewed support a real hold and compliance-escalation risk for hosted processors, especially around suspicious transactions.
  • They do not, by themselves, prove guaranteed confiscation of all funds.
  • The practical risk is usually loss of access, payout freeze, account closure, or long investigation windows rather than an automatic irreversible seizure.
  • If your operating balance sits inside a custodial processor or exchange account during that event, the business impact can still feel like "losing the money" for an operationally important period.

Why this matters for provider choice

  • NOWPayments explicitly says verification may be requested and suspicious transactions may be put on hold.
  • Coinbase documents identity verification and account restrictions as part of its compliance posture.
  • BTCPay Server is self-hosted and non-custodial, so the payment processor layer is structurally less exposed to merchant-balance freezes.

Inference for this repository

This is an inference from the official sources above:

  • If minimizing merchant-side AML/KYC freeze risk is a priority, self-custody is materially safer than a hosted custodial processor.
  • Self-custody does not make tainted-funds risk disappear. It mainly removes one counterparty that could hold or block your balance before it reaches your own wallet.
  • The remaining exposure shows up when funds are consolidated, swapped, or off-ramped through third parties.

Operational mitigations

  • Prefer a non-custodial payment path.
  • Keep payment receipt wallets segregated from treasury and personal wallets.
  • Avoid commingling funds from unrelated customers before reconciliation.
  • Keep invoice-to-transaction mapping so suspicious deposits can be isolated quickly.
  • Assume any later exchange or off-ramp may apply AML screening even if the incoming payment path does not.

Implementation consequence

Before starting issue #9 or a real provider integration, keep the payment adapter contract provider-agnostic:

  • createInvoice
  • getInvoiceStatus
  • verifyWebhook
  • expireInvoice or an explicit documented fallback when provider-side expiry is passive only
  • correlation metadata round-trip

Official sources used for this review