Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Build Status Coverage Status npm (scoped) npm bundle size (scoped) GitHub

Payment gateway for NANO

accept-nano-client is a JavaScript package that helps you to communicate with accept-nano for receiving NANO payments easily in your client-side applications.


via NPM

npm install @accept-nano/client

yarn add @accept-nano/client

ES Modules / TypeScript

import * as acceptNano from '@accept-nano/client'


const acceptNano = require('@accept-nano/client')

Directly in Browser, as a UMD module

After the accept-nano-client script is loaded there will be a global variable called acceptNano, which you can access via window.acceptNano

    <script src=""></script>


Creating a Payment Session

To be able to initiate the payment process, you must create a new payment session.

// 1- create a new payment session
type CreateSessionParams = {
  apiHost: string // host of your Accept NANO server, without protocol
  pollInterval?: number // time interval (ms) to re-check for verification of a payment (default: 3s)
  debug?: boolean // enables debug mode and prints some useful stuff to console

const session = acceptNano.createSession({
  apiHost: '',

// 2- register event listeners to shape-up your logic based on session events.
type PaymentSessionEvents = {
  start: () => void
  end: (error: PaymentError | null, payment: AcceptNanoPayment | null) => void

session.on('start', () => {

session.on('end', (error, payment) => {
  if (error) {
    return myApp.paymentFailed({ reason: error.reason })

  return myApp.paymentSucceeded({
    amount: payment.amount,
    state: payment.state,

Presenting the Payment Overlay

After creating your session and attaching the event listeners, you can follow one of those options to proceed with the payment flow.

Option 1: Create a Payment Through Client

If you want to create and verify an accept-nano payment in your client application, you can use this option.

After the payment is created, accept-nano-client will automatically proceed to the verification step.

type CreatePaymentParams = {
  amount: string // stringified number
  currency: 'NANO' | 'USD'
  state?: string // payload to share between your client and server, will be embedded into the payment object

  amount: '1',
  currency: 'USD',
  state: '{userId:7}',

Option 2: Verify a Payment Through Client

If you create an accept-nano payment in another context (such as your application's backend), you can use this option to perform the verification in your client application.

type VerifyPaymentParams = {
  token: string // the Accept NANO payment token created in your backend application

session.verifyPayment({ token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9' })


  • Please open an issue if you have a question or suggestion.
  • Don't create a PR before discussing it first.

Who is using accept-nano-client in production?

Please send a PR to list your site if accept-nano is helping you to receive NANO payments.



Cross-browser compatibility is tested with BrowserStack, thanks for supporting open source ❀️️


πŸ–₯ JavaScript client for Accept NANO payment gateway




No packages published