Skip to main content

UPI Payment Link Generator

NoxPay includes a free, public UPI payment link generator that anyone can use — no account, no API key, no signup required. Create shareable UPI payment links and QR codes instantly.

🔗 Try it now: nox-pay.vercel.app/upi


Overview

The UPI Link Generator is a fully client-side tool that:

  • Creates shareable links for receiving UPI payments
  • Generates scannable QR codes
  • Supports custom amounts and payment notes
  • Works with all UPI apps (Google Pay, PhonePe, Paytm, BHIM, Amazon Pay, etc.)
  • Stores zero data — everything is encoded in the URL
No Backend Required

This tool is entirely stateless. No data is saved to any database or server. The payment information lives in the URL itself. When you close the page, nothing is retained.


How It Works

Visit /upi and fill in:

FieldRequiredDescription
VPA / UPI ID✅ YesYour UPI Virtual Payment Address (e.g., name@okaxis, name@ybl)
Amount (₹)❌ OptionalPayment amount in INR. If omitted, the payer chooses the amount.
Note❌ OptionalA short description for the payment (e.g., "Coffee payment")

Click Generate Link to create your shareable URL and QR code.

Once generated, you get:

  • A copyable URL — paste it in WhatsApp, SMS, email, or anywhere
  • A QR code — screenshot or share it directly
  • A Share button — uses the device's native share dialog (mobile)

When someone opens the payment link (/upi/pay?pa=...), they see:

  • A large scannable QR code (for desktop users)
  • An "Open UPI App" button (for mobile — launches their UPI app directly)
  • Payment details: payee VPA, amount, and note

URL Parameters

Creator Page (/upi)

You can pre-fill the form by passing URL parameters:

https://nox-pay.vercel.app/upi?vpa=name@okaxis&amount=100&note=Coffee
ParameterAliasDescription
vpapaVPA / UPI ID to pre-fill
amountamAmount to pre-fill
notetnNote to pre-fill

Payment Page (/upi/pay)

The generated payment page uses these parameters:

https://nox-pay.vercel.app/upi/pay?pa=name@okaxis&am=100&tn=Coffee
ParameterRequiredDescription
pa✅ YesPayee VPA (UPI ID)
am❌ OptionalAmount in INR
tn❌ OptionalTransaction note

The payment page internally constructs a standard UPI deep link:

upi://pay?pa=name@okaxis&pn=NoxPay&am=100.0&tn=Coffee&cu=INR

This is the NPCI-standard UPI deep link format that all UPI apps support.


Examples

Basic — VPA only

https://nox-pay.vercel.app/upi/pay?pa=name@okaxis

Payer will choose their own amount.

With Amount

https://nox-pay.vercel.app/upi/pay?pa=name@okaxis&am=499

Pre-sets ₹499 as the payment amount.

With Amount + Note

https://nox-pay.vercel.app/upi/pay?pa=name@okaxis&am=199.50&tn=Monthly+Subscription

Pre-sets ₹199.50 and adds a note "Monthly Subscription".

Pre-filled Creator (for embedding)

<a href="https://nox-pay.vercel.app/upi?vpa=your-upi@ybl&amount=100&note=Donate">
Pay ₹100 via UPI
</a>

Use Cases

Use CaseExample
FreelancersSend payment links to clients after completing work
Small businessesCreate QR codes for in-store payments
Online sellersShare payment links on social media
Event organizersCollect entry fees or donations
Content creatorsAccept tips and support from followers
Friends & familySplit bills and collect money easily

Security & Privacy

  • 🔒 Zero data storage — nothing is saved to any server or database
  • 🔓 Open source — verify the code yourself on GitHub
  • 🚫 No tracking — no analytics, no cookies, no user tracking
  • 📡 Client-side only — all processing happens in your browser
  • 🔗 URL is the data — all payment info lives in the URL parameters
Disclaimer

NoxPay does not process any payments. The generated links simply open the user's existing UPI app with pre-filled details. The actual payment processing is done by the NPCI/UPI network and the respective banking apps. NoxPay has no visibility into or control over any transactions.


Integration with Your Website

You can create UPI payment links programmatically without using the NoxPay API:

function createUpiLink(vpa, amount, note) {
const params = new URLSearchParams({ pa: vpa });
if (amount) params.set('am', amount.toString());
if (note) params.set('tn', note);
return `https://nox-pay.vercel.app/upi/pay?${params.toString()}`;
}

// Usage
const link = createUpiLink('merchant@okaxis', 499, 'Order #123');
// → https://nox-pay.vercel.app/upi/pay?pa=merchant@okaxis&am=499&tn=Order+%23123

Or construct the raw UPI deep link directly (no NoxPay dependency):

function createUpiDeepLink(vpa, amount, note) {
let link = `upi://pay?pa=${encodeURIComponent(vpa)}&pn=YourApp&cu=INR`;
if (amount) link += `&am=${amount}`;
if (note) link += `&tn=${encodeURIComponent(note)}`;
return link;
}