Your checkout.
A clearer way to pay.
Turn an online order into a simple payment journey. Connect your website to NeroPay, send customers to hosted checkout and bring the result back into your business workflow.
Built for your website or application. Prefer a ready-to-share request? Explore Link Payments instead.
{
"identifier": "ORDER-1001",
"amount": 15.99,
"currency": "GBP",
"details": "Online order",
"ipn_url": "https://example.com/payments/ipn",
"success_url": "https://example.com/order/thank-you",
"cancel_url": "https://example.com/order/cancelled",
"customer_name": "Customer",
"customer_email": "customer@example.com"
}{
"success": true,
"data": {
"identifier": "ORDER-1001",
"status": "pending",
"amount": 15.99,
"currency": "GBP",
"checkout_url": "https://eu.neropay.app/initiate/payment/checkout?payment_id=..."
}
}Sell online. Keep the journey connected.
Give customers a straightforward way to pay without building a card-entry flow into your own website.
A checkout that fits your site
Keep your own basket and order experience. Create a payment page when the customer is ready, then redirect them to NeroPay.
Card entry stays in hosted checkout
Your integration sends order and customer information—not raw card details. Your secret API key remains on your server.
Bring the result back to your workflow
Use a unique order reference and your payment notification endpoint to connect the payment outcome with the order that created it.
A simple route from order to checkout.
Your site keeps the order logic. NeroPay provides the hosted payment step. Your server confirms the outcome before you fulfil.
Create the order
Save the basket total, customer details and your own unique reference. Keep the final amount controlled by your server.
Create hosted checkout
Send the request from your server to API v2 and direct the customer to the returned checkout URL.
Confirm and fulfil
Handle the server-side payment result, reconcile it with your order and process fulfilment only once.
See the next step.
Keep the basket on your website.
Your server calculates the payable amount and saves the order reference before checkout is created.
Customer pays on the payment page.
Your integration sends the customer to the returned checkout URL. A checkout being opened is not proof of payment.
Confirm the payment before fulfilment.
Match a verified payment result to the order reference and amount. Handle repeated notifications without fulfilling twice.
Your order logic.
Our hosted checkout.
Create the payment page from your server. Send the customer to the returned checkout URL, then use verified payment results to update the order.
The example uses API v2 and major currency units: 15.99 means £15.99 in GBP.
Keep the secret key on your server. Sign the exact JSON body you send using a fresh timestamp.
Persist the payload and idempotency key with your order. Reuse both only for an exact retry of that request.
Verify the payment result and match the reference, amount and currency before updating your order.
This is a server-side creation example—not a complete production integration. Add your own order persistence, verified notification handling, error handling and reconciliation.
// Server-side only · Node.js 18+
import { createHmac } from 'node:crypto';
const secret = process.env.NEROPAY_SECRET_API_KEY;
if (!secret) throw new Error('Missing API secret');
// Store this payload and key with the order before sending.
// Retry the exact same payload with the same idempotency key.
const payload = {
"identifier": "ORDER-1001",
"amount": 15.99,
"currency": "GBP",
"details": "Online order",
"ipn_url": "https://example.com/payments/ipn",
"success_url": "https://example.com/order/thank-you",
"cancel_url": "https://example.com/order/cancelled",
"customer_name": "Customer",
"customer_email": "customer@example.com"
};
const rawBody = JSON.stringify(payload);
const timestamp = String(Math.floor(Date.now() / 1000));
const signature = createHmac('sha256', secret)
.update(timestamp + '.' + rawBody)
.digest('hex');
const response = await fetch(
'https://eu.neropay.app/v2/hosted-payments',
{
method: 'POST',
headers: {
'Authorization': 'Bearer ' + secret,
'Accept': 'application/json',
'Content-Type': 'application/json',
'X-NeroPay-Timestamp': timestamp,
'X-NeroPay-Signature': signature,
'Idempotency-Key': 'hosted-order-1001-v1'
},
body: rawBody
}
);
const result = await response.json();
if (!response.ok || !result.success) {
throw new Error('Could not create checkout');
}
// Send this URL to the customer; do not mark the order paid here.
const checkoutUrl = result.data.checkout_url;
// Fulfil only after a verified server-side payment result.
Replace the example customer and URLs with your order data and endpoints. Never place your API secret in page HTML or client-side JavaScript.
More than one way to sell online.
Choose the online payment route that matches how customers order from your business.
Website orders
Use your existing basket and send customers to a hosted payment page for the final checkout step.
Bookings and deposits
Build a checkout around an agreed booking amount, and connect the payment reference with the reservation.
Bespoke customer portals
Add a payment step to a customer account, service order or business-to-business workflow.
Keep the decisions where they belong.
A reliable integration starts with a clear division of responsibility. Your website defines the order; the payment system confirms whether it was paid.
Validate the total on your server
Do not trust a browser-supplied price or customer-edited order reference.
Keep credentials out of the browser
Your secret key, request signing and payment-result checks belong on your server.
Treat a redirect as navigation—not proof
A customer landing on your thank-you page does not, by itself, confirm a successful payment.
One account. More ways to get paid.
Choose the route that matches how your customer buys—not a one-size-fits-all payment journey.
Online Payments
Build a website checkout.
You are hereLink Payments
Request a specific amount.
Explore Link Payments →Invoice Payments
Bill with itemised details.
Explore Invoice Payments →NeroForm
Let your customer choose an amount.
Explore NeroForm →Contracts
Bring agreement and payment together.
Explore Contracts →Payments are only the beginning.
Explore the NeroPay tools that fit the way your business serves customers—online, by appointment or at the counter.
NeroWeb
Online menus and orders
Bring your food ordering experience online and keep payments part of the customer journey.
NeroBooking
Reservations and customer service
Keep booking information close to the rest of your business and choose the right payment request for each service.
NeroPOS
At the counter and beyond
Connect your in-person service with the wider NeroPay experience, from orders at the till to supported card payments.
Online Payments.
The useful details.
Need help choosing the right setup for your business? Our team can talk you through the options.
Talk to NeroPay →Do I need to build my own card payment form?
No. The API creates a NeroPay-hosted payment page. Your website controls the basket and redirects the customer to checkout; card details are entered on the hosted page.
Do I need a developer to connect an existing website?
A custom API integration normally needs a developer. If you do not need a custom basket, Link Payments, Invoice Payments and NeroForm provide other ways to request payment.
Where can I find the API reference?
The NeroPay API v2 reference contains the request fields, authentication details, examples and payment-notification guidance. Use the latest reference when building your integration.
How should my site confirm that an order is paid?
Use a verified server-side payment result and match it to the order reference and amount. Do not fulfil solely because the checkout page opened or the customer returned to a success URL.
Can online and in-person payments use the same NeroPay account?
Yes. Your NeroPay account can support online payment tools alongside your enabled in-person payment setup. Available methods and account requirements depend on your business and region.
What does the amount in the API example mean?
The example uses major currency units: 15.99 means £15.99 when the currency is GBP. Always follow the endpoint’s documented amount format.
Where can I check fees and settlement details?
View current NeroPay pricing and the terms for your account. A successful customer payment and funds becoming available for payout are separate stages; do not promise instant availability from the checkout response.
Give your website a payment journey worth finishing.
Explore hosted checkout, check the API reference and choose the right online payment setup for your business.
Available features, payment methods, eligibility, fees and settlement conditions depend on your account, business and region. View current pricing · Contact us