NOWPayments Plugin

NOWPayments Plugin

Integrates NOWPayments cryptocurrency payment processing into your e-commerce store.

npm install vendure-plugin-nowpayments
Latest version0.1.14
Compatibility^3.0.0
Last publishedAug 17, 2025
Vendure Community
Vendure CommunityOpen source plugins by the Vendure community

A cryptocurrency payment gateway plugin for Vendure that integrates with NOWPayments.io, enabling your store to accept payments in Bitcoin, Ethereum, and 100+ other cryptocurrencies.

Features

  • Cryptocurrency Payments: Accept payments in Bitcoin, Ethereum, Litecoin, and 100+ other cryptocurrencies
  • Dual Payment Modes: Support for both direct payment links and invoices
  • Secure IPN Handling: Instant Payment Notification webhook processing with HMAC signature verification
  • Multiple Payment Statuses: Handle finished, partially_paid, confirming, confirmed, sending, and failed payments
  • Sandbox Mode: Test your integration safely with sandbox endpoints
  • Configurable Options: Customizable invoice prefixes, total calculations, and debug settings
  • Full IPN Storage: Complete IPN response storage with outcome_currency tracking
  • TypeScript Support: Full type definitions for excellent developer experience

Installation

Configuration

Add the plugin to your Vendure config:

NOWPayments Setup

1. Create a NOWPayments Account

  1. Sign up at nowpayments.io
  2. Complete KYC verification
  3. Get your API key from the dashboard

2. Configure IPN (Instant Payment Notification)

  1. Set your IPN URL to: https://yourdomain.com/nowpayments/ipn
  2. Get your IPN secret from the NOWPayments dashboard
  3. Ensure your server is accessible via HTTPS

3. Environment Variables

Usage

Payment Flow

  1. Customer selects NOWPayments during checkout
  2. Payment URL is generated (direct link or invoice)
  3. Customer is redirected to NOWPayments payment page
  4. Customer pays with their chosen cryptocurrency
  5. NOWPayments sends IPN to your server
  6. Order status is updated based on payment status

Payment Statuses

StatusOrder StateDescription
finishedPaymentSettledPayment completed successfully
partially_paidPaymentAuthorizedPartial payment received
confirmingPaymentAuthorizedPayment is being confirmed
confirmedPaymentAuthorizedPayment confirmed on blockchain
sendingPaymentAuthorizedPayment is being sent
waitingPaymentAuthorizedPayment is waiting for user action
expiredPaymentDeclinedPayment has expired
failedPaymentDeclinedPayment failed

Configuration Options

OptionTypeRequiredDefaultDescription
apiKeystring-Your NOWPayments.io API key
ipnSecretstring-Your NOWPayments.io IPN secret
hoststring'http://localhost:3000'Your Vendure server host
sandboxbooleanfalseEnable sandbox mode for testing
useInvoicesbooleanfalseUse invoices instead of direct payment links
invoicePrefixstring'VC-'Prefix for invoice numbers (must not end with digit)
simpleTotalbooleanfalseUse simple total calculation
allowZeroConfirmbooleantrueAllow zero confirmation payments
formSubmissionMethodbooleantrueUse form submission method
debugEmailstring-Email for debug notifications
debugPostUrlstring-URL for debug POST notifications
is_fixed_ratebooleanfalseUse fixed rate pricing for cryptocurrency conversions
is_fee_paid_by_userbooleanfalseWhether transaction fees are paid by the user

Supported Cryptocurrencies

  • Bitcoin (BTC)
  • Ethereum (ETH)
  • Litecoin (LTC)
  • Bitcoin Cash (BCH)
  • Ripple (XRP)
  • Cardano (ADA)
  • Polkadot (DOT)
  • Chainlink (LINK)
  • And 100+ more...

API Extensions

The plugin extends the Vendure GraphQL API with the following:

Payment Method

  • nowpayments - The payment method handler for NOWPayments

IPN Endpoint

  • POST /nowpayments/ipn - Webhook endpoint for NOWPayments IPN callbacks

Payment Flow URLs

The plugin automatically generates the following URLs for payment flows:

  • Success URL: {host}/checkout/confirmation/{orderCode} - Redirected to after successful payment
  • Cancel URL: {host}/checkout/cancel/{orderCode} - Redirected to if payment is cancelled
  • IPN URL: {host}/nowpayments/ipn - Webhook endpoint for payment notifications

Note: Replace {host} with your actual Vendure server URL (e.g., https://yourdomain.com).

Security Features

  • HMAC Signature Verification: All IPN requests are verified using SHA512 HMAC
  • Order Validation: Payment amounts and currencies are validated
  • Secure API Communication: All API calls use HTTPS
  • Error Logging: Comprehensive error logging for debugging

Development

Building the Plugin

Running Tests

Development Mode

Troubleshooting

Common Issues

  1. IPN not received:

    • Check your server is accessible via HTTPS
    • Verify IPN URL is correct in NOWPayments dashboard
    • Check server logs for errors
  2. Invalid signature errors:

    • Verify IPN secret is correct
    • Ensure HMAC calculation is working properly
    • Check for encoding issues
  3. Payment not settling:

    • Check payment status in NOWPayments dashboard
    • Verify order ID format matches expected pattern
    • Review server logs for processing errors
  4. Sandbox mode issues:

    • Ensure NOWPAYMENTS_SANDBOX=true is set
    • Use sandbox API keys for testing
    • Check sandbox endpoints are being used

Debug Mode

Enable debug mode by setting the environment variable:

This will log detailed information about payment processing and IPN handling.

Support

For support with this plugin:

  1. Check the Vendure documentation
  2. Review the NOWPayments documentation
  3. Check the server logs for error details
  4. Contact support with specific error messages and logs

License

This plugin is licensed under the MIT License.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Changelog

See CHANGELOG.md for a list of changes between versions.

Add Release commit