Professional API reference for payments, platforms and merchant tools.
Build hosted payments, connected accounts, money movement, NeroDisburse, Terminal, NeroCard, NeroTrade, NeroPOS, NeroWeb, bookings, identity, compliance, proof workflows, support tickets and webhooks from one v2 API.
Quick start
Use the live v2 base URL for production. Sandbox endpoints are dry-run and do not create live payment, terminal, payout or local records.
Merchant mode
Use a merchant secret key to operate directly on that merchant account. Identity, compliance, proof, payments, support and resources are available for direct merchant integrations.
Platform mode
Use the platform key. Send NeroPay-Account to operate on a connected merchant. Keep your own customer-facing dashboard while NeroPay manages regulated flows.
Ready-to-Use Plugins
Use official NeroPay plugins when you want a faster launch without building every checkout, invoice, webhook and order status workflow manually.
NeroPay for WooCommerce
Accept card and wallet payments directly in WooCommerce, receive real-time status updates and support refunds from the store workflow. Download link is inside the section.
Open WooCommerce section →NeroPay for Wix
Install NeroPay from the official Wix marketplace, configure public keys and redirect URLs, then test with sandbox checkout.
Open Wix section →NeroPay for Odoo
Connect NeroPay to Odoo eCommerce, Website and Invoicing apps using the Odoo payment provider flow. Odoo 16, 17 and 18 app links are inside.
Open Odoo section →NeroPay for Perfex CRM
Enable invoice payments, IPN callbacks and reconciliation inside Perfex CRM without building a custom gateway. Module download is inside.
Open Perfex CRM section →NeroPay for Zapier
Create payment links and automate payment workflows between NeroPay and thousands of apps without code through Zapier.
Open Zapier section →NeroPay for WooCommerce
Use the WooCommerce plugin to add secure NeroPay checkout to a WordPress store without building the hosted-payment, order-status and webhook flow from scratch.
Download the WooCommerce ZIP package and upload it from WordPress Admin → Plugins → Add New, or upload it manually by FTP.
Key features
- Quick setup from the WordPress plugin area.
- Secure processing through NeroPay APIs.
- Real-time payment status updates through webhooks.
- Refund support from the WooCommerce workflow where enabled.
Best for
Retail stores that need a standard checkout integration, payment confirmation, order reconciliation and optional advanced API checks.
| Setting | Type | Required | Description |
|---|---|---|---|
| public_key | string | Required | Identifies the merchant account. |
| secret_key | string | Required | Server-side key used by the plugin for secure API actions. |
| webhook_url | string | Required | Receives payment success, failure or pending updates. |
| currency | enum | Required | Store currency such as GBP or EUR. |
NeroPay for Wix
Use the Wix integration for a fast marketplace-style setup. Configure keys, redirect URLs and IPN URL, then send customers to NeroPay checkout.
Install NeroPay from the official Wix marketplace link, then configure Public Key, success URL, cancel URL and IPN URL.
| Field | Type | Required | Description |
|---|---|---|---|
| public_key | string | Required | NeroPay public key configured in the Wix app. |
| success_url | string | Required | Page shown after successful payment. |
| cancel_url | string | Required | Page shown when checkout is cancelled. |
| ipn_url | string | Required | Endpoint that receives payment confirmation. |
NeroPay for Odoo
Use NeroPay with Odoo eCommerce, Website and Invoicing apps. The integration uses NeroPay payment endpoints and keeps order or invoice state inside Odoo.
Install the version that matches your Odoo branch, then enable NeroPay under Invoicing → Configuration → Payment Providers.
Supported environments
- Odoo 16
- Odoo 17
- Odoo 18
Prerequisites
- Access to Invoicing → Configuration → Payment Providers.
- Active NeroPay merchant account.
- Public and Secret API keys.
- HTTPS endpoint for IPN callbacks.
| Flow | Description |
|---|---|
| eCommerce checkout | Create a hosted payment and redirect the customer to the checkout URL. |
| Invoice payment | Use the Odoo invoice number as identifier for reconciliation. |
| Sandbox testing | Use sandbox endpoint and test credentials before live deployment. |
| Troubleshooting | Check provider visibility, IPN reachability and HMAC signature configuration. |
NeroPay for Perfex CRM
Enable NeroPay as a payment gateway inside Perfex CRM so clients can pay invoices online and Perfex can update invoice status from IPN callbacks.
Download the module ZIP, extract it into the Perfex modules directory, then enable NeroPay Payment Gateway from Setup → Payments.
Features
- Online invoice payments.
- GBP and EUR support where enabled.
- Instant Payment Notification updates.
- Success and failure redirects.
- API credentials managed inside Perfex CRM.
Prerequisites
- Running Perfex CRM instance.
- NeroPay merchant account with API credentials.
- Admin access to Perfex CRM.
NeroPay for Zapier
Automate payment workflows between NeroPay and 5,000+ apps without code. Merchants can trigger workflows when a payment is received or create payment links from tools such as Sheets and CRMs.
Use Zapier to create payment links, log transactions, notify teams and sync payment events with CRMs, spreadsheets and 5,000+ apps.
| Action field | Type | Required | Description |
|---|---|---|---|
| public_key | string | Required | NeroPay Public API key. |
| identifier | string | Required | Unique ID for the payment. |
| currency | enum | Required | Currency code such as GBP, EUR or IDR. |
| amount | decimal | Required | Payment amount. |
| details | string | Required | Description or order details. |
| ipn_url | string | Required | Instant payment notification URL. |
| customer_phone | string | Optional | Customer phone number. |
| customer_address | string | Optional | Billing address. |
Authentication
API v2 uses bearer authentication. Unsafe methods also require a timestamped HMAC signature and an idempotency key.
| Header | Type | Required | Description |
|---|---|---|---|
| Authorization | string | Required | Bearer {secret_key}. |
| Accept | string | Required | Always application/json. |
| Content-Type | string | Required | Use application/json for JSON writes or multipart/form-data for file upload endpoints. |
| X-NeroPay-Timestamp | unix timestamp | Required | Required for POST/PATCH/PUT/DELETE. |
| X-NeroPay-Signature | string | Required | HMAC SHA-256 of timestamp.raw_body using the secret key. |
| Idempotency-Key | string | Required | Required for writes that create or mutate state. |
Headers
Headers control JSON responses, connected account scoping, public/client key context and retry safety.
| Header | Type | Required | Description |
|---|---|---|---|
| NeroPay-Account | string | Optional | Connected account ID such as NPVesdTGASO23_547878. Platforms use it to act on a connected merchant. |
| X-NeroPay-Client-Key | string | Optional | Dashboard-visible account client key. If supplied, it must match the authenticated merchant or the NeroPay-Account connected account id. |
| X-NeroPay-Public-Key | string | Optional | Public key from API credentials. |
| Idempotency-Key | string | Required | Unique per business operation. Reuse only for exact retries. |
Connected account scoping works with payments, balances, identity, compliance, proof, support and resource APIs where enabled.
Pagination
List endpoints use page-based pagination when the underlying controller returns a collection.
| Query | Type | Default | Description |
|---|---|---|---|
| page | integer | 1 | Page number. |
| per_page | integer | 25 | Number of records per page. |
| q/search | string | — | Search by supported columns. |
| status | enum | — | Filter by status where supported. |
| from / to | date/datetime | — | Filter by created date where supported. |
| sort | string | -id | Use leading minus for descending order where supported. |
Pagination appears inside meta.pagination. Some single-object APIs return only data.
Errors
Errors return a consistent JSON object with an application code and human-readable message.
| HTTP | Code | Meaning |
|---|---|---|
| 400 | bad_request | Malformed request. |
| 400 | missing_idempotency_key | A required Idempotency-Key header is missing. |
| 401 | unauthenticated | Missing or invalid API key. |
| 401 | invalid_signature | Write request signature verification failed. |
| 403 | forbidden | The authenticated account cannot access the resource. |
| 404 | endpoint_not_found / not_found | Route or object was not found. |
| 405 | resource_read_only | Resource exists but the requested write method is not enabled. |
| 409 | idempotency_conflict | The same idempotency key was reused with a different body. |
| 409 | connected_account_duplicate | A connected account with the same email or username already exists. |
| 409 | duplicate_resource | A resource with the same unique fields already exists for this account. |
| 422 | validation_error | Invalid fields. |
| 429 | rate_limited | Too many requests. |
| 500 | resource_scope_misconfigured | The resource is not safely account-scoped on this installation. |
Authentication and account scope errors
| HTTP | Code | Meaning |
|---|---|---|
| 401 | missing_credentials | No secret key was supplied. |
| 401 | invalid_credentials | The secret key was not recognised. |
| 401 | account_key_mismatch | The supplied public key, client key or account id does not match the authenticated account context. |
| 401 | invalid_signature | The HMAC signature is missing, malformed or invalid. |
| 403 | account_not_allowed | The authenticated account cannot access the supplied connected account. |
| 403 | account_inactive | The merchant account is not active. |
| 403 | neroconnect_not_enabled | NeroConnect platform access is not enabled for this account. |
| 404 | account_not_found | The connected account id was not found for this platform. |
| 422 | invalid_account_id | Use the full NeroPay account id format, for example NPVesdTGASO23_547878. |
Connected account errors
| HTTP | Code | Meaning |
|---|---|---|
| 409 | connected_account_duplicate | A connected account with the same email or username already exists. |
| 422 | connected_account_create_failed | The connected account could not be created. |
| 422 | invalid_idempotency_key | The supplied idempotency key has an invalid format. |
| 409 | duplicate_request | A request with the same idempotency key is still being processed. |
Payment and transaction errors
| HTTP | Code | Meaning |
|---|---|---|
| 403 | account_banned | The account cannot process the requested operation. |
| 403 | payments_paused | The account cannot accept payments right now. |
| 422 | currency_not_supported | The requested currency is not enabled or supported. |
| 422 | invalid_connect_application_fee | The platform fee is invalid or exceeds the transaction amount. |
| 422 | not_cancelable | The transaction can no longer be cancelled. |
| 422 | not_refundable | The transaction is not eligible for refund. |
| 422 | invalid_refund_amount | The refund amount must be greater than zero. |
| 422 | refund_exceeds_transaction | The requested refund exceeds the original transaction amount. |
| 422 | insufficient_balance | The wallet balance is not enough to complete the operation. |
| 422 | provider_reference_missing | The provider payment reference is missing. |
| 422 | cancel_failed / refund_failed | The cancellation or refund could not be processed. |
NeroTrade errors
| HTTP | Code | Meaning |
|---|---|---|
| 402 | nerotrade_subscription_required | NeroTrade is not active for this account. Activate the NeroTrade plan before calling NeroTrade endpoints. |
| 404 | endpoint_not_found | The requested NeroTrade API path under https://eu.neropay.app/v2/nerotrade was not found. |
| 404 | unknown_nerotrade_resource | The requested NeroTrade resource name is not recognised. |
| 404 | resource_unavailable | The requested NeroTrade table or resource is not available on this installation. |
| 404 | not_found | The requested NeroTrade record was not found for this merchant. |
| 404 | customer_not_found | The trade account supplied for an invoice, delivery, payment or statement could not be found. |
| 404 | invoice_not_found | The invoice supplied for a payment could not be found. |
| 405 | use_products | Inventory records should be created as products first, then stock can be updated through the inventory endpoint. |
| 422 | empty_payload | No writable NeroTrade fields were supplied for an update request. |
| 422 | validation_error | A required field is missing or a supplied field is invalid. |
| 503 | nerotrade_schema_missing | NeroTrade database tables are not installed or the NeroTrade SQL update has not been applied. |
Terminal errors
| HTTP | Code | Meaning |
|---|---|---|
| 404 | location_not_found | The location was not found for this account. |
| 422 | location_required | A location id is required. |
| 422 | location_bridge_missing | The location is not ready for terminal reader registration. |
| 409 | reader_already_registered | The location already has a linked reader. |
| 422 | reader_limit_reached | The account has reached its reader limit. |
| 422 | invalid_registration_code | The reader registration code is missing or invalid. |
| 404 | reader_not_found | The reader does not belong to this account. |
| 422 | reader_register_failed | The reader could not be registered. |
| 422 | terminal_payment_failed | The terminal payment could not be created. |
| 422 | reader_cancel_failed | The reader action could not be cancelled. |
| 500 | provider_not_configured | The NeroPay payment bridge is not configured. |
Payout and NeroDisburse errors
| HTTP | Code | Meaning |
|---|---|---|
| 403 | payouts_paused | Transfers are paused for this account. |
| 403 | kyc_required | KYC verification is required before transfers. |
| 404 | bank_account_not_found | The bank account was not found for this merchant. |
| 422 | bank_account_required | A bank account id is required. |
| 422 | bank_account_disabled | The bank account is disabled. |
| 409 | duplicate_bank_account | The bank account is already linked to this merchant. |
| 422 | bank_account_create_failed | The bank account could not be created. |
| 404 | payout_not_found | The payout was not found for this account. |
Idempotency
Use an idempotency key for each write operation that creates or changes financial state. All write requests must also include a valid HMAC signature.
Good
order_1001_payment_attempt_1 reused only when retrying the same body.
Avoid
Do not reuse one key for different payments, payouts, refunds or proof submissions.
Account API
Retrieve the authenticated merchant account, create connected merchants and manage core NeroConnect onboarding state.
/accountReturns the authenticated merchant or the connected merchant when NeroPay-Account is supplied.
/connected-accountsLists connected merchants for a NeroConnect platform.
GET response attributes
| Attribute | Type | Required | Description |
|---|---|---|---|
| account_id | string | Read-only | Public API account ID. |
| business_company_name | string | Optional | Company or trading name. |
| string | Required | Primary merchant email. | |
| status | enum | Read-only | active, pending, banned or review state. |
| kyc_status | enum | Read-only | pending, verified or rejected. |
| neroconnect_email_sms_handle | enum | Optional | neropay or platform. Controls merchant-facing notification delegation. |
| neroconnect | object | Read-only | Returned for NeroConnect platform responses. Includes fee payer, platform safety limit, merchant pricing and default connect application fee context. |
| neroconnect.fee_payer | enum | Read-only | connected_account or platform. Controls where NeroPay processing fees are charged for connected account payments. |
| neroconnect.platform_safety_limit | object|null | Read-only | Returned when the fee payer is platform balance. null when the connected account pays NeroPay processing fees. |
| neroconnect.merchant_pricing | object | Read-only | Shows API, card and keyed/manual fee rates that apply to the connected merchant. In platform balance mode, platforms may manage merchant-specific pricing in the dashboard. |
/connected-accountsCreates a connected merchant. Terms acceptance, authorised legal name and the supported-country fields are required before the account is created.
POST /connected-accounts request attributes
| Field | Type | Required | Description |
|---|---|---|---|
business_company_name | string | Required | Company or trading name for the connected merchant. |
firstname | string | Required | Authorised representative first name. |
lastname | string | Required | Authorised representative last name. |
email | Required | Primary email for the connected merchant. | |
country_code | enum | Required | Supported NeroPay country code such as GB. Must be selected from the supported-country list, not typed freely. |
mobile_code | string | Required | Dial code for the selected country, for example 44 for GB. Should be supplied from the supported-country list. |
mobile | string | Required | Representative or merchant contact mobile number. |
business_type | enum | Required | Business structure such as company, individual or sole_trader where supported. |
nationality | enum | Required | Representative nationality country code from the supported-country list. |
company_registration_number | string | Required for companies | Company registration number where the business type requires it. |
representative_job_title | string | Required | Role/title of the authorised representative, for example Director. |
rep_is_director | boolean | Required | Confirms whether the representative is a company director. |
rep_is_executive | boolean | Required | Confirms whether the representative is an executive/control person. |
rep_is_owner | boolean | Required | Confirms whether the representative is an owner. |
rep_ownership_percent | number | Required when owner | Ownership percentage, for example 100. |
company_declaration | boolean | Required | Confirms the company declaration has been accepted. |
address | string | Required | Registered or trading address line. |
city | string | Required | City/town. |
postcode | string | Required | Postcode. |
dob | date | Required | Representative date of birth in YYYY-MM-DD format. |
industry | string | Required | Industry/MCC-style code accepted by NeroPay onboarding. |
merchant_website_or_product_description | text | Required | Website URL or clear description of the products/services sold. |
terms_accepted | boolean | Required | Must be true. API-created connected accounts are not created without terms acceptance. |
terms_accepted_at | datetime | Required | Time the connected merchant/authorised person accepted the terms. |
terms_ip | ip | Required | IP address captured when terms were accepted. |
legal_name | string | Required | Authorised legal name used to generate the stored electronic signature when a PNG signature is not supplied. |
signature_png_base64 | string|null | Optional | Base64 PNG signature. If omitted, NeroPay stores a generated typed-signature image from legal_name. |
neroconnect_email_sms_handle | enum | Optional | neropay or platform. Controls who handles merchant-facing email/SMS communication. |
metadata | object | Optional | Platform reference data, external IDs or onboarding notes. |
terms_accepted is not true, or the legal acceptance data is missing, the account is not created./connected-accounts/{account_id}Retrieves one connected merchant.
/connected-accounts/{account_id}Updates connected account fields and can trigger account.update webhooks.
PATCH /connected-accounts request attributes
| Field | Type | Required | Description |
|---|---|---|---|
business_company_name | string | Optional | Updates the connected merchant company/trading name. |
mobile | string | Optional | Updates the connected merchant mobile number where allowed. |
neroconnect_email_sms_handle | enum | Optional | neropay or platform. |
neroconnect_status | enum | Optional | Dashboard/API operational status such as active, paused or review where enabled. |
metadata | object | Optional | Platform reference data or internal notes. |
NeroConnect connected accounts
Platforms can create merchants, view balances, manage default platform fees and operate by sending the connected account header.
| Concept | Type | Description |
|---|---|---|
| Connected account ID | string | Format is unique_account_id + underscore + merchant_id. |
| NeroPay-Account header | string | Scopes API calls to a connected merchant. |
| Notification handling | enum | neropay means NeroPay sends email/SMS; platform means platform handles merchant-facing notifications from webhooks. |
| KYC, bank & compliance | workflow | Must be completed after create account. Use the Identity API to create verification links, ensure a business bank account is added, and use Compliance Proof API plus webhooks for proof/document requests. |
Fee payer and pricing context
| Mode | NeroPay processing fee payer | Platform safety limit | Notes |
|---|---|---|---|
connected_account | The connected merchant pays NeroPay processing fees. | Not shown. platform_safety_limit returns null. | This is the default mode. Platform balance is not debited for NeroPay processing fees. |
platform | The platform balance pays NeroPay processing fees. | Shown in the API response and dashboard. | The connected merchant sees NeroPay processing fee as zero. If the platform balance or outstanding debt reaches the safety threshold, restricted platform actions may be blocked until the balance is restored. |
connect_application_fee. The fee payer setting controls who pays NeroPay processing fees. connect_application_fee is your platform's own application fee and can still be supplied per payment or configured as a dashboard default.POST /connected-accounts is idempotent when an Idempotency-Key is supplied. Reusing the same key with the same payload returns the original result. Reusing the same key with a different payload returns 409 idempotency_conflict. A platform cannot create another connected account with an email or username that already exists; duplicate requests return 409 connected_account_duplicate.NeroConnect settings, reports and account operations
API-integrated resellers use the same API v2 key. NeroConnect endpoints expose platform settings, connected account lists and operational reporting without giving access to unrelated merchants.
/neroconnect/settingsReturns platform notification handling, default application fee context and supported settings.
/neroconnect/settingsUpdates safe platform settings such as notification handling and default application fee values.
/neroconnect/accountsLists only connected accounts assigned to the authenticated NeroConnect platform.
/neroconnect/accounts/{account_id}Returns one connected account assigned to the platform.
/neroconnect/reports/overviewReturns account counts and transaction totals for the platform’s own connected merchants.
PATCH /neroconnect/settings attributes
| Field | Type | Required | Description |
|---|---|---|---|
notification_handle | enum | Optional | neropay or platform. Controls merchant-facing email/SMS handling where enabled. |
connect_application_fee_defaults.fixed | decimal | Optional | Default fixed platform application fee in major currency units. |
connect_application_fee_defaults.percent | decimal | Optional | Default platform application fee percentage. |
NeroPay Store API checkout links
Create a secure NeroPay Store checkout link for terminal, EPOS, scanner, scale and accessory orders. The API creates a pending hardware order and returns a hosted checkout URL; card details are collected only on NeroPay-hosted checkout.
/neropay-store/productsLists available NeroPay Store hardware product slugs and prices.
/neropay-store/checkout-linksCreates a hosted checkout link for the authenticated merchant or a connected account.
/neropay-store/orders/{id}Reads a NeroPay Store order created for the authenticated account context.
NeroPay-Account or account_id only for connected accounts assigned to your platform.GET /neropay-store/products response attributes
| Field | Type | Description |
|---|---|---|
slug | string | Stable catalogue slug used for ordering. |
product_code | string | Ordering code for API integrations. This is currently the same value as slug. |
code | string | Short alias for product_code. |
name | string | Product name displayed on the hosted checkout. |
price | decimal | Server-side NeroPay Store catalogue price. Resellers cannot override this in API requests. |
category | string | Hardware, terminal, EPOS, scale, printer or accessory grouping. |
GET /neropay-store/products for the live catalogue. Send the returned product_code in items[].product_code. Current public codes are shown below.| product_code | Name | Category | Base price | Optional checkout options |
|---|---|---|---|---|
pro-plus | Card Terminal PRO+ | terminal | £295.00 | None |
ccd-tablet | Card Terminal CCD | terminal | £135.00 | options.device: no_device, fire8, ipadair11 |
epos | NeroPay EPOS Kit | epos | £799.95 | None |
nerokiosk | NeroPay Self-Service Kiosk | kiosk | £800.00 | options.size: 21_5, 23_6, 32; optional floor_standing, ads=ad_free |
nerokds | NeroKDS | kds | £450.00 | options.size: 21_5, 24 |
pro-plus-charging-dock | PRO+ Charging Dock | accessory | £60.00 | None |
ccd-charging-dock | CCD Charging Dock | accessory | £60.00 | None |
charger | Additional Charger | accessory | £20.00 | None |
caller-id-unit | NeroPay Caller ID Unit | accessory | £110.00 | None |
neroscale1 | NeroPay Manual Scale | accessory | £75.00 | None |
neroscalepro | NeroPay Barcode Scale Pro | accessory | £375.00 | None |
neroscan1 | NeroPay Wireless 1D/2D Barcode Scanner | accessory | £65.00 | None |
neroscanpro | NeroPay Desktop Barcode Scanner Pro | accessory | £95.00 | None |
neromini | NeroPay Mini Bluetooth Barcode Scanner | accessory | £45.00 | None |
receipt-printer-80mm | 80mm Thermal Receipt Printer | accessory | £155.00 | options.connection: usb, lan, wifi, bluetooth |
cash-drawer-rj11 | Cash Drawer Base with RJ11 Connector | accessory | £55.00 | None |
thermal-paper-rolls | Thermal Paper Rolls | accessory | £20.00 | options.pack: 5, 10, 20; options.roll_size: 58x58, 80x80 |
POST /neropay-store/checkout-links attributes
| Field | Type | Required | Description |
|---|---|---|---|
account_id | string | Platform only | Connected merchant account. You may also send NeroPay-Account. |
items[].product_code | string | Required* | Product code returned by GET /neropay-store/products. You may send items[].slug or items[].code instead. |
items[].slug | string | Alias | Catalogue slug returned by the products endpoint. |
items[].quantity | integer | Optional | Quantity, 1 to 99. Defaults to 1. |
billing | object | Required | Billing contact and billing address. Required keys: name, email, phone, line1, city, postcode, country. Optional keys: line2, county. |
shipping | object | Required | Delivery contact and shipping address. Required keys: name, phone, line1, city, postcode, country. Optional keys: email, line2, county. |
reference | string | Optional | Your reseller/order reference stored in metadata. |
billing and shipping are supplied. NeroPay Store API v2 does not fall back to the merchant profile address for hardware checkout links.GET /neropay-store/orders/{id} only returns an order when the order belongs to the authenticated merchant or the connected merchant supplied with NeroPay-Account/account_id. It does not list all orders or expose another merchant’s orders.Payments
Recommended for online checkout, online ordering and website payments. Create a NeroPay-hosted checkout URL and redirect the customer there. Card details are collected by NeroPay-hosted checkout and are never submitted through your API payload.
/hosted-paymentsCreates a hosted checkout URL for an order or invoice.
/payment-linksCreates a simple LinkPay checkout link when you only need a payment URL.
/terminal/paymentsSends an in-person card-present payment action to a terminal reader.
POST payment request attributes
| Field | Type | Required | Description |
|---|---|---|---|
| identifier | string | Required | Your unique order, invoice or checkout reference. |
| amount | decimal | Required | Payment amount in major units, e.g. 15.99. |
| currency | enum | Required | Currency such as GBP or EUR. |
| details | text | Required | Customer-facing or internal checkout description. |
| ipn_url | url | Required | Receives payment success, failure or pending updates. |
| success_url | url | Required | Where the customer is returned after a successful payment. |
| cancel_url | url | Required | Where the customer is returned after cancellation. |
| customer_name | string | Required | Customer name shown on the checkout record. |
| customer_email | Required | Customer email shown on the checkout record. | |
| customer_phone | string | Optional | Customer phone number, if collected. |
| account_id | string | Platform only | Connected merchant account for NeroConnect routing. You may also send the NeroPay-Account header. |
| connect_application_fee | decimal | Optional | Platform fee charged for a connected account payment. |
| metadata | object | Optional | Additional key/value data returned in responses and webhooks where supported. |
NeroPay-Account or account_id with that connected merchant account on every request./v2/hosted-payments for online checkout or /v2/payment-links for a simple payment link.Payment Links / LinkPay
Create and inspect LinkPay checkout links. LinkPay records are separated from generic API payments.
/payment-linksLists LinkPay records.
/payment-linksCreates a payment link.
/payment-links/{id}Retrieves one payment link.
POST /payment-links request attributes
| Field | Type | Required | Description |
|---|---|---|---|
| currency | enum | Required | Payment currency. |
| amount | decimal | Required | Amount in major units. |
| details | text | Required | Description shown to the buyer. |
| customer_name | string | Optional | Pre-filled customer name. |
| customer_email | string | Optional | Pre-filled customer email. |
| success_url | string | Optional | Redirect URL after success. |
| cancel_url | string | Optional | Redirect URL after cancellation. |
| ipn_url | string | Optional | Webhook/IPN URL for this payment link. |
Contracts API
Create merchant contracts, store contract rules, require full or deposit payments and send customers to a secure NeroPay contract review page.
/contractsLists contracts for the authenticated merchant or connected merchant when NeroPay-Account is supplied.
/contractsCreates a contract with customer details, formatted content, signature rules and optional full or upfront payment.
/contracts/{id}Retrieves one contract by internal ID or public contract reference where supported.
/contracts/{id}Updates contract fields, customer details, signature rules, status or payment settings.
/contracts/{id}Deletes an unpaid draft/sent contract where the merchant account is allowed to do so.
/contracts/{id}/payment-linkCreates a secure NeroPay checkout link for the required contract payment.
/contracts/{id}/formReturns the contract intake/customer form definition.
/contracts/{id}/form-submissionsLists customer form submissions for the scoped contract.
/contracts/{id}/form-submissionsStores a validated form submission against the scoped contract.
GET /contracts query attributes
| Field | Type | Required | Description |
|---|---|---|---|
| status | enum | Optional | Filter by draft, sent, signed, completed, cancelled or expired. |
| payment_status | enum | Optional | Filter by not_required, unpaid, partially_paid, paid or failed. |
| q | string | Optional | Search contract reference, title, customer name or customer email. |
| page | integer | Optional | Pagination page number. |
| per_page | integer | Optional | Items per page. Keep this sensible for dashboard performance. |
GET /contracts response attributes
| Field | Type | Description |
|---|---|---|
| id | integer | Internal contract ID. |
| contract_ref | string | Merchant-facing reference such as CTR-260612-ABC123. |
| public_url | url | Secure customer review/sign/payment page. |
| title, summary, content_html | string/html | Contract title, customer-facing summary and formatted contract content. |
| customer_* fields | string | Customer name, email, phone and address snapshot. |
| contract_amount | decimal | Total contract value. |
| payment_amount | decimal | Amount due now if online payment is required. |
| status | enum | Current lifecycle status. |
| payment_status | enum | Current payment status. |
| signature_required | boolean | Whether the customer must provide an electronic signature. |
| signed_at | datetime | Set when the customer signs/accepts the contract. |
| cc_emails | array | Optional CC recipients used for contract communications. |
| fee_items | array | Optional fee breakdown shown in the contract summary. |
| intake_form | object | Customer form definition, including enabled status and field list. |
| intake_form_submissions_count | integer | Number of saved form submissions for this contract. |
POST /contracts request attributes
| Field | Type | Required | Description |
|---|---|---|---|
| title | string | Required | Contract title shown to the customer. |
| customer_name | string | Required | Customer or business name. |
| customer_email | Required | Customer email address used for send/resend. | |
| customer_phone | string | Optional | Customer phone number. |
| customer_address | string | Optional | Billing/service address snapshot. |
| currency | enum | Required | Currency code such as GBP or EUR. You may also send currency_id. |
| contract_amount | decimal | Optional | Total contract value. Required if payment_mode=full. |
| show_contract_amount | boolean | Optional | Controls whether the total amount is shown in the public summary. If payment is required, the amount due now is always shown. |
| payment_required | boolean | Optional | When true, the public contract page can show a Pay button. |
| payment_mode | enum | Optional | none, full, deposit or custom. full collects the contract amount; deposit/custom collects deposit_amount. |
| deposit_amount | decimal | Optional | Upfront amount due now when using deposit or custom. |
| signature_required | boolean | Optional | Require customer electronic signature before the contract is treated as signed. |
| customer_details_editable | boolean | Optional | Allow the customer to correct their name, email, phone or address before signing. |
| content_html | html | Required | Main contract body. Script tags and inline event handlers are removed server-side. |
| summary | string | Optional | Short customer-facing summary for the contract list and email. |
| cc_emails[] | email[] | Optional | Up to five CC recipients. Customer email is not duplicated. |
| fee_items[] | array | Optional | Up to eight fee rows with label, fee_type, amount and notes. |
| intake_form.enabled | boolean | Optional | Enable customer form before signing. |
| intake_form.fields[] | array | Optional | Up to 20 questions. Types: text, date, textarea, dropdown, radio, checkbox. |
| intake_form.fields[].condition | object | Optional | Optional show/hide rule using field, operator, value and action. |
| expires_at | datetime | Optional | Optional expiry date/time for the public review link. |
| send_email | boolean | Optional | Send the contract email immediately after saving. Resend is rate-limited. |
| account_id | string | Platform only | Connected merchant account for NeroConnect routing. You may also send the NeroPay-Account header. |
PATCH /contracts/{id} request attributes
| Field | Type | Description |
|---|---|---|
| title, summary, content_html | string/html | Update contract content while the contract is not completed/cancelled. |
| customer_name, customer_email, customer_phone, customer_address | string | Update customer details snapshot. |
| contract_amount, payment_required, payment_mode, deposit_amount | decimal/boolean/enum | Update payment rules. Paid contracts cannot be changed in a way that breaks payment history. |
| signature_required, customer_details_editable, show_contract_amount | boolean | Update customer signing and display rules. |
| status | enum | draft, sent, signed, completed, cancelled or expired. |
Contract form endpoints
| Endpoint | Purpose | Security |
|---|---|---|
GET /contracts/{id}/form | Read the public/customer form definition for a scoped contract. | Account-scoped; other merchants’ contracts return contract_not_found. |
GET /contracts/{id}/form-submissions | Read saved customer form submissions. | Account-scoped and never searchable across all merchants. |
POST /contracts/{id}/form-submissions | Save answers against the contract form using an answers object keyed by field key. | Requires signed write security and validates required/conditional fields server-side. |
meta_json. API v2 strips scripts/unsafe HTML, limits questions/options/submissions and rejects raw card, PIN, password or bank-account fields.POST /contracts/{id}/payment-link request attributes
| Field | Type | Required | Description |
|---|---|---|---|
| success_url | url | Optional | Where the customer is returned after payment. Defaults to the public contract page. |
| cancel_url | url | Optional | Where the customer is returned after cancelling checkout. |
| metadata | object | Optional | Extra reference data stored against the payment request. |
POST /contracts/{id}/payment-link creates a NeroPay hosted checkout using the merchant account. This is separate from generic LinkPay links and is tied back to the contract payment status.NeroGYM overview
NeroGYM API v2 exposes gym operations in the same menu-led style as NeroTrade: settings, clients, plans, memberships, sessions, classes, staff, programmes, check-ins and payment records.
NeroPay-Account or account_id for an allowed connected merchant only. Write calls require HMAC signing and an Idempotency-Key./nerogym/overviewReturns dashboard-safe totals and recent activity for the scoped gym account.
GET /nerogym/overview query attributes
| Field | Type | Required | Description |
|---|---|---|---|
account_id | string | Platform only | Connected merchant account. You may also send NeroPay-Account. |
date_from / date_to | date | Optional | Optional reporting window for revenue, attendance and session counts. |
GET /nerogym/overview response attributes
| Field | Type | Description |
|---|---|---|
account_id | string | Scoped merchant account. |
settings_enabled | boolean | Whether NeroGYM is enabled for the merchant. |
stats.clients | integer | Total active/known clients. |
stats.memberships | integer | Active membership count. |
stats.sessions | integer | Sessions in the selected period. |
stats.classes | integer | Classes in the selected period. |
stats.checkins | integer | Check-ins in the selected period. |
stats.revenue | decimal | Payment records total for the selected period. |
recent_activity[] | array | Recent sessions, check-ins or payments with safe public fields. |
Settings
Read and update safe NeroGYM portal, billing and booking settings for a merchant.
/nerogym/settingsReads NeroGYM settings.
/nerogym/settingsUpdates supported settings only.
GET /nerogym/settings query attributes
| Field | Type | Required | Description |
|---|---|---|---|
account_id | string | Platform only | Connected merchant account. You may also send NeroPay-Account. |
GET /nerogym/settings response attributes
| Field | Type | Description |
|---|---|---|
enabled | boolean | NeroGYM feature status. |
portal_url | url | Merchant public NeroGYM portal URL. |
booking_enabled | boolean | Allows clients to book available sessions/classes online. |
member_portal_enabled | boolean | Allows member portal access. |
parq_required | boolean | Whether PAR-Q/health form is required during onboarding. |
currency | string | Currency used for plans and payment records. |
timezone | string | Timezone used for calendar/session rendering. |
PATCH /nerogym/settings request attributes
| Field | Type | Required | Description |
|---|---|---|---|
account_id | string | Platform only | Connected merchant account. You may also send NeroPay-Account. |
enabled | boolean | Optional | Enable or disable NeroGYM. |
booking_enabled | boolean | Optional | Enable online booking. |
member_portal_enabled | boolean | Optional | Enable member portal access. |
parq_required | boolean | Optional | Require health/PAR-Q form before training. |
timezone | string | Optional | IANA timezone, for example Europe/London. |
Clients
Create and manage gym clients. Client IDs are always scoped to the authenticated merchant.
/nerogym/clientsLists clients.
/nerogym/clients/{id}Retrieves one client.
/nerogym/clientsCreates a client.
/nerogym/clients/{id}Updates a client.
/nerogym/clients/{id}Deletes or deactivates a client where allowed.
GET /nerogym/clients query attributes
| Field | Type | Required | Description |
|---|---|---|---|
account_id | string | Platform only | Connected merchant account. |
q | string | Optional | Search name, email or phone. |
status | enum | Optional | Filter by active, inactive, blocked or local configured status. |
page / per_page | integer | Optional | Pagination controls. |
GET /nerogym/clients response attributes
| Field | Type | Description |
|---|---|---|
id | integer | Client ID. |
name | string | Client full name. |
email | Client email address. | |
phone | string | Client phone number. |
status | enum | Current client status. |
notes | text | Internal notes where available. |
created_at, updated_at | datetime | Record timestamps. |
POST /nerogym/clients request attributes
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Required | Client full name. |
email | Optional | Unique email for this merchant where provided. | |
phone | string | Optional | Client phone number. |
status | enum | Optional | Defaults to active. |
notes | text | Optional | Internal client note. |
PATCH /nerogym/clients/{id} request attributes
| Field | Type | Description |
|---|---|---|
name, email, phone, status, notes | mixed | Only supplied fields are updated. Client must belong to the scoped merchant. |
DELETE /nerogym/clients/{id} response attributes
| Field | Type | Description |
|---|---|---|
deleted | boolean | True when the record was deleted/deactivated. |
Plans
Create and maintain membership packages, one-off session packs and public plan terms.
/nerogym/plansLists plans.
/nerogym/plans/{id}Retrieves one plan.
/nerogym/plansCreates a plan.
/nerogym/plans/{id}Updates a plan.
/nerogym/plans/{id}Deletes/deactivates a plan where no active dependencies block removal.
GET /nerogym/plans query attributes
| Field | Type | Required | Description |
|---|---|---|---|
q | string | Optional | Search plan name. |
status | enum | Optional | Filter active/inactive plans. |
page / per_page | integer | Optional | Pagination controls. |
GET /nerogym/plans response attributes
| Field | Type | Description |
|---|---|---|
id | integer | Plan ID. |
name | string | Plan name. |
price | decimal | Plan price. |
billing_cycle | enum | monthly, weekly, one_off or local cycle. |
session_limit | integer/null | Included session limit if configured. |
general_terms | html/text | Customer-facing plan terms. |
status | enum | Plan status. |
POST /nerogym/plans request attributes
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Required | Plan name. |
price | decimal | Required | Plan price, server validated as a non-negative amount. |
billing_cycle | enum | Required | monthly, weekly, one_off or supported cycle. |
session_limit | integer | Optional | Included session allowance. |
general_terms | text/html | Optional | Plan terms shown to customers before checkout/acceptance. |
status | enum | Optional | Defaults to active. |
PATCH /nerogym/plans/{id} request attributes
| Field | Type | Description |
|---|---|---|
name, price, billing_cycle, session_limit, general_terms, status | mixed | Only supplied fields are updated. Plan must belong to the scoped merchant. |
Memberships
Link clients to plans and manage membership lifecycle. Cross-merchant client_id or plan_id values are rejected.
/nerogym/membershipsLists memberships.
/nerogym/memberships/{id}Retrieves one membership.
/nerogym/membershipsCreates a membership.
/nerogym/memberships/{id}Updates a membership.
/nerogym/memberships/{id}Cancels/deletes a membership where allowed.
GET /nerogym/memberships query attributes
| Field | Type | Required | Description |
|---|---|---|---|
client_id | integer | Optional | Filter by client belonging to the scoped merchant. |
plan_id | integer | Optional | Filter by plan belonging to the scoped merchant. |
status | enum | Optional | active, paused, cancelled, expired or local status. |
page / per_page | integer | Optional | Pagination controls. |
GET /nerogym/memberships response attributes
| Field | Type | Description |
|---|---|---|
id | integer | Membership ID. |
client_id, client | integer/object | Linked client ID and safe client summary. |
plan_id, plan | integer/object | Linked plan ID and safe plan summary. |
status | enum | Membership status. |
starts_at, ends_at | date | Membership date range. |
next_payment_at | date/null | Next expected payment date when used. |
POST /nerogym/memberships request attributes
| Field | Type | Required | Description |
|---|---|---|---|
client_id | integer | Required | Client ID from the same scoped merchant. |
plan_id | integer | Required | Plan ID from the same scoped merchant. |
status | enum | Optional | Defaults to active. |
starts_at | date | Required | Membership start date. |
ends_at | date | Optional | Membership end date. |
next_payment_at | date | Optional | Next expected billing/payment date. |
PATCH /nerogym/memberships/{id} request attributes
| Field | Type | Description |
|---|---|---|
plan_id, status, starts_at, ends_at, next_payment_at | mixed | Only supplied fields are updated. Linked IDs must belong to the same merchant. |
Sessions & classes
Manage one-to-one sessions and group classes. Staff and client references are validated against the scoped merchant.
/nerogym/sessionsLists PT sessions.
/nerogym/sessionsCreates a PT session.
/nerogym/sessions/{id}Updates a PT session.
/nerogym/sessions/{id}Deletes/cancels a session where allowed.
/nerogym/classesLists group classes.
/nerogym/classesCreates a group class.
/nerogym/classes/{id}Updates a group class.
/nerogym/classes/{id}Deletes/cancels a class where allowed.
GET /nerogym/sessions or /classes query attributes
| Field | Type | Required | Description |
|---|---|---|---|
client_id | integer | Sessions optional | Filter sessions by client. ID must belong to the scoped merchant. |
staff_id | integer | Optional | Filter by trainer/staff member. |
date_from / date_to | date | Optional | Calendar window filter. |
status | enum | Optional | scheduled, completed, cancelled or local status. |
GET response attributes
| Field | Type | Description |
|---|---|---|
id | integer | Session/class ID. |
name | string | Class name or generated session title. |
client_id | integer/null | Client for PT sessions. |
staff_id | integer/null | Assigned trainer/staff member. |
starts_at | datetime | Start date/time. |
duration_minutes | integer | Duration in minutes. |
capacity | integer/null | Class capacity where applicable. |
status | enum | Current status. |
POST /nerogym/sessions request attributes
| Field | Type | Required | Description |
|---|---|---|---|
client_id | integer | Required | Client ID from the scoped merchant. |
staff_id | integer | Optional | Trainer/staff ID from the scoped merchant. |
starts_at | datetime | Required | Session start date/time. |
duration_minutes | integer | Optional | Defaults to merchant/session setting. |
status | enum | Optional | Defaults to scheduled. |
POST /nerogym/classes request attributes
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Required | Class name. |
staff_id | integer | Optional | Trainer/staff ID from the scoped merchant. |
starts_at | datetime | Required | Class start date/time. |
duration_minutes | integer | Optional | Class duration. |
capacity | integer | Optional | Max attendees. |
status | enum | Optional | Defaults to scheduled/active. |
PATCH /nerogym/sessions/{id} or /classes/{id} request attributes
| Field | Type | Description |
|---|---|---|
client_id, staff_id, name, starts_at, duration_minutes, capacity, status | mixed | Only supplied fields are updated. Linked IDs must belong to the same merchant. |
Staff & programmes
Manage trainers/staff records and client training programmes. The API accepts both programmes and programs as resource aliases.
/nerogym/staffLists gym staff.
/nerogym/staffCreates gym staff.
/nerogym/staff/{id}Updates gym staff.
/nerogym/staff/{id}Deletes/deactivates gym staff where allowed.
/nerogym/programmesLists training programmes.
/nerogym/programmesCreates a programme.
/nerogym/programmes/{id}Updates a programme.
/nerogym/programmes/{id}Deletes/deactivates a programme where allowed.
GET query attributes
| Field | Type | Required | Description |
|---|---|---|---|
q | string | Optional | Search staff/programme name and supported text fields. |
client_id | integer | Programmes optional | Filter programmes by client. |
status | enum | Optional | Filter active/inactive/status values. |
page / per_page | integer | Optional | Pagination controls. |
GET response attributes
| Field | Type | Description |
|---|---|---|
id | integer | Record ID. |
name | string | Staff/programme name. |
email, phone | string | Staff contact details where applicable. |
role | string | Staff role where applicable. |
client_id | integer/null | Programme client where applicable. |
starts_at, ends_at | date | Programme date range where applicable. |
status, is_active | enum/boolean | Current active/status value. |
POST /nerogym/staff request attributes
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Required | Staff full name. |
email | Optional | Staff email address. | |
phone | string | Optional | Staff phone number. |
role | string | Optional | Trainer, coach, manager or local role. |
is_active | boolean | Optional | Defaults to true. |
POST /nerogym/programmes request attributes
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Required | Programme name. |
client_id | integer | Optional | Client ID from the scoped merchant. |
description | text | Optional | Programme details. |
starts_at, ends_at | date | Optional | Programme start/end dates. |
status | enum | Optional | Programme status. |
PATCH request attributes
| Field | Type | Description |
|---|---|---|
name, email, phone, role, is_active, client_id, description, starts_at, ends_at, status | mixed | Only supplied fields are updated. Linked IDs must belong to the same merchant. |
Check-ins & payments
Record attendance and gym payment ledger events. Check-in/payment audit records are intentionally protected from API delete.
/nerogym/checkinsLists check-ins.
/nerogym/checkinsCreates a check-in.
/nerogym/checkins/{id}Updates a safe check-in field where allowed.
/nerogym/paymentsLists gym payment records.
/nerogym/paymentsCreates a manual gym payment record. Raw card details are not accepted.
/nerogym/payments/{id}Updates safe payment metadata/status only.
GET query attributes
| Field | Type | Required | Description |
|---|---|---|---|
client_id | integer | Optional | Filter by client from the scoped merchant. |
membership_id | integer | Optional | Filter by membership from the scoped merchant. |
date_from / date_to | date | Optional | Filter by checked-in or paid date. |
status | enum | Payments optional | Filter payment status. |
page / per_page | integer | Optional | Pagination controls. |
GET response attributes
| Field | Type | Description |
|---|---|---|
id | integer | Record ID. |
client_id, membership_id | integer/null | Linked client and membership IDs. |
checked_in_at | datetime | Check-in timestamp for check-in records. |
source | enum | Check-in source such as manual, qr or api. |
amount, currency | decimal/string | Payment amount and currency for payment records. |
method | enum | Payment method such as cash, bank, card, link or manual. |
paid_at | datetime | Payment timestamp. |
status | enum | Payment status where applicable. |
POST /nerogym/checkins request attributes
| Field | Type | Required | Description |
|---|---|---|---|
client_id | integer | Required | Client ID from the scoped merchant. |
membership_id | integer | Optional | Membership ID from the scoped merchant. |
checked_in_at | datetime | Optional | Defaults to now. |
source | enum | Optional | Defaults to api. |
POST /nerogym/payments request attributes
| Field | Type | Required | Description |
|---|---|---|---|
client_id | integer | Required | Client ID from the scoped merchant. |
membership_id | integer | Optional | Membership ID from the scoped merchant. |
amount | decimal | Required | Manual payment amount. |
currency | string | Optional | Defaults to merchant currency. |
method | enum | Required | cash, bank, card, link or manual. Raw card data is rejected. |
paid_at | datetime | Optional | Defaults to now. |
status | enum | Optional | Defaults to paid/recorded. |
reference | string | Optional | Your integration payment reference. |
PATCH request attributes
| Field | Type | Description |
|---|---|---|
checked_in_at, source, status, reference, notes | mixed | Only safe metadata/status fields are updated. Audit deletes are not exposed in API v2. |
Invoices API
Create professional merchant invoices with customer details, VAT lines, discounts, due dates and a secure NeroPay payment page.
/invoicesLists invoices for the merchant or connected merchant account.
/invoicesCreates a professional invoice and returns the public payment/review URL.
/invoices/{id}Retrieves one invoice with line items.
/invoices/{id}Updates an unpaid invoice. Paid/refunded invoices are locked.
/invoices/{id}Deletes a draft/unpaid invoice where no payment has been recorded.
GET /invoices query attributes
| Field | Type | Required | Description |
|---|---|---|---|
| status | enum | Optional | Filter by draft, unpaid, paid, cancelled, refunded or your configured invoice status. |
| q | string | Optional | Search invoice number, customer name, email or reference. |
| date_from / date_to | date | Optional | Limit by invoice creation date or issue date. |
| page / per_page | integer | Optional | Pagination controls. |
GET /invoices response attributes
| Field | Type | Description |
|---|---|---|
| id | integer | Internal invoice ID. |
| invoice_number | string | Merchant/customer-facing invoice number. |
| public_url | url | Public invoice review and payment page. |
| invoice_to, email, address | string | Customer billing details. |
| items[] | array | Invoice line items with name, quantity, unit amount, VAT and row total. |
| subtotal_amount, vat_amount, discount_amount, shipping_amount, total_amount | decimal | Calculated invoice totals. |
| payment_required, partial_payment_allowed, deposit_amount | boolean/decimal | Payment collection settings. |
| status, paid_at | enum/datetime | Current invoice status and payment timestamp when available. |
POST /invoices request attributes
| Field | Type | Required | Description |
|---|---|---|---|
| invoice_to | string | Required | Customer or company name. |
| Required | Customer email address. | ||
| address | string | Required | Customer billing address. |
| invoice_title | string | Optional | Short title/subject for the invoice. |
| reference | string | Optional | Your internal reference. |
| po_number | string | Optional | Customer purchase order number. |
| currency | string | Optional | Currency code such as GBP. You may send currency_id instead. |
| items[] | array | Required | Each item requires name and unit_amount. qty, description and vat_rate are optional. |
| discount_amount | decimal | Optional | Flat invoice discount. |
| shipping_amount | decimal | Optional | Shipping, delivery or service amount added to the invoice. |
| due_date | date | Optional | Invoice due date. |
| payment_required | boolean | Optional | When true, the public invoice includes NeroPay checkout. |
| partial_payment_allowed | boolean | Optional | Allows the customer to pay a deposit/partial amount first. |
| deposit_amount | decimal | Optional | Deposit or upfront amount when partial payments are allowed. |
| invoice_note | text | Optional | Customer-facing invoice note. |
| footer_note | text | Optional | Optional footer shown on the invoice. |
| send_email | boolean | Optional | Send the invoice email after creation. |
| account_id | string | Platform only | Connected merchant account for NeroConnect routing. |
PATCH /invoices/{id} request attributes
| Field | Type | Description |
|---|---|---|
| invoice_to, email, address, invoice_title, reference, po_number | string | Update customer and reference details. |
| items[] | array | Replace line items and recalculate totals. Paid/refunded invoices are locked. |
| discount_amount, shipping_amount, due_date | decimal/date | Update invoice totals and due date. |
| payment_required, partial_payment_allowed, deposit_amount | boolean/decimal | Update payment collection rules before payment is recorded. |
| status | enum | Update status only where allowed by the invoice lifecycle. |
Subscriptions API
Create recurring customer subscription checkout links from API v2, using an existing subscription price or a supplied amount, currency and interval.
/subscriptionsLists subscriptions created for the merchant account.
/subscriptionsCreates a subscription request and returns checkout and portal URLs.
/subscriptions/{id}Retrieves one subscription.
/subscriptions/{id}Updates customer snapshot or status where the subscription is not cancelled/expired.
/subscriptions/{id}Cancels or removes a subscription request where allowed.
GET /subscriptions query attributes
| Field | Type | Required | Description |
|---|---|---|---|
| status | enum | Optional | Filter by pending, active, past_due, cancelled or expired. |
| q | string | Optional | Search customer name, email, subscription reference or product name. |
| page / per_page | integer | Optional | Pagination controls. |
GET /subscriptions response attributes
| Field | Type | Description |
|---|---|---|
| id | integer/string | Subscription ID or reference. |
| customer_name, customer_email | string | Customer snapshot. |
| product_name | string | Subscription product/service name. |
| amount, currency, interval, quantity | decimal/string | Recurring charge details. |
| trial_days | integer | Trial period before the first charge. |
| checkout_url | url | Customer checkout/start URL. |
| portal_url | url | Customer management/cancellation URL where available. |
| status | enum | Current subscription status. |
POST /subscriptions request attributes
| Field | Type | Required | Description |
|---|---|---|---|
| customer_name | string | Required | Customer name. |
| customer_email | Required | Customer email address. | |
| customer_phone | string | Optional | Customer phone number. |
| product_name | string | Required without price_id | Name shown to the customer and on subscription records. |
| price_id | string | Optional | Existing merchant subscription price ID. |
| amount | decimal | Required without price_id | Recurring amount when creating from API payload. |
| currency | string | Required without price_id | Currency code such as GBP. |
| interval | enum | Required without price_id | day, week, month or year. |
| quantity | integer | Optional | Subscription quantity. Defaults to 1. |
| trial_days | integer | Optional | Trial period before first charge. |
| start_date | date | Optional | Requested subscription start date where supported. |
| metadata | object | Optional | Your own reference data. |
| account_id | string | Platform only | Connected merchant account for NeroConnect routing. |
PATCH /subscriptions/{id} request attributes
| Field | Type | Description |
|---|---|---|
| customer_name, customer_email, customer_phone | string | Update customer snapshot where the subscription can still be edited. |
| status | enum | Update/cancel where allowed by lifecycle rules. |
| metadata | object | Replace or update stored metadata. |
Transactions
List, retrieve, refund and cancel transactions. High-risk transactions can expose proof and reserve state, so check transaction state before treating funds as fully available.
/transactionsLegacy alias for creating hosted/API transaction where enabled.
POST /hosted-payments or POST /payment-links. The transaction table below describes transaction records returned by list/retrieve/refund/cancel flows./transactionsLists transactions.
/transactions/{id}Retrieves one transaction.
/transactions/{id}/refundRefunds a transaction.
/transactions/{id}/cancelCancels a pending transaction.
Transaction response attributes
| Field | Type | Description |
|---|---|---|
| id | integer | Internal transaction ID. |
| account_id | string | Merchant or connected account ID. |
| reference | string | NeroPay or merchant reference. |
| np_main_trx | string | Processor/payment identifier where available. |
| status | enum | pending, succeeded, failed, cancelled, refunded. |
| is_reserve | boolean | Whether funds are currently held in reserve. |
| reserve_amount | decimal | Amount held from available balance. |
| proof_status | enum | requested, submitted, approved, rejected or null. |
Transaction Proof API
Submit proof files and buyer/shipping details when a transaction is flagged by high-value or risk logic. This API is available for merchants and connected accounts.
/transactions/{id}/proofReturns proof request and transaction reserve state.
/transactions/{id}/proofSubmits proof details and invoice/shipping file.
POST proof upload request attributes
| Field | Type | Required | Description |
|---|---|---|---|
| invoice_file | file | Optional | JPG, PNG, PDF or WEBP. Required when staff/platform requested an invoice file. |
| courier_company | string | Optional | Shipping courier. |
| tracking_number | string | Optional | Tracking number. |
| buyer_firstname | string | Optional | Buyer first name. |
| buyer_lastname | string | Optional | Buyer last name. |
| buyer_phone | string | Optional | Buyer phone number. |
| buyer_email | string | Optional | Buyer email. |
| merchant_notes | text | Optional | Merchant notes for the review team. |
transaction.proof_submitted. Staff approval/rejection publishes transaction.proof_approved or transaction.proof_rejected. Approved reserve releases can publish balance.reserve_released.Balances
Read available, pending, instant, standard and reserve balances. Reserve balance is important for high-risk and proof-held funds.
/balancesReturns wallet balances.
/balanceAlias of /balances.
Balance response attributes
| Field | Type | Description |
|---|---|---|
| available_balance | decimal | Funds available for use. |
| instant_available | decimal | Instant payout availability. |
| standard_available | decimal | Standard payout availability. |
| reserve_balance | decimal | Funds held in reserve due to proof/risk/compliance. |
| currency | enum | Wallet currency. |
Wallet Transactions
Audit wallet movement separately from payment transactions. Use this for balance ledger reconciliation.
/wallet-transactionsLists wallet balance transactions.
/wallet-transactions/{id}Retrieves one wallet ledger row.
Wallet ledger response attributes
| Field | Type | Description |
|---|---|---|
| txn_id | string | Ledger transaction ID. |
| type | enum | credit/debit/hold/release depending on implementation. |
| amount | decimal | Amount moved. |
| balance_before | decimal | Balance before movement where available. |
| balance_after | decimal | Balance after movement where available. |
| notes | text | Internal or merchant-facing notes. |
Payouts & Schedule
Create and inspect payout requests and manage payout schedule. Payout creation can trigger proof/risk checks and Perfex review tasks.
/payoutsLists payouts.
/payoutsCreates a payout request.
/payouts/requestLegacy alias for create payout.
/payouts/{id}Retrieves one payout.
/payout-scheduleGets payout schedule.
/payout-scheduleUpdates payout schedule.
/transfer-scheduleLegacy alias of payout schedule.
/transfer-scheduleLegacy alias of update payout schedule.
POST/PATCH payout request attributes
| Field | Type | Required | Description |
|---|---|---|---|
| amount | decimal | Required | Payout amount. |
| currency | enum | Required | Currency. |
| transfer_speed | enum | Optional | instant or standard. |
| bank_account_id | string | Optional | Destination bank reference. |
| reference | string | Optional | Statement or internal reference. |
Disputes
Disputes belong under Money Movement because they affect payment risk, settlement and operational review.
/disputesLists disputes.
/disputes/{id}Retrieves one dispute.
Dispute response attributes
| Field | Type | Description |
|---|---|---|
| trx_number | string | Related transaction reference. |
| payment_number | string | Payment identifier. |
| dispute_reason | string | Reason code or description. |
| dispute_status | enum | open, won, lost, under_review etc. |
| customer_email | string | Customer email when available. |
Disputes are read-only in API v2. Use dashboards or operational flows for evidence submission if enabled.
Loans
Loans and financing records are grouped under Money Movement and are read-only through API v2.
/loansLists loan/financing records.
/loans/{id}Retrieves one loan record.
Loan response attributes
| Field | Type | Description |
|---|---|---|
| offer_id | string | Financing offer identifier. |
| status | enum | offer, active, paid, declined etc. |
| campaign_type | string | Campaign/category. |
| financing_type | string | Financing type. |
| created_at | datetime | Record creation time. |
NeroDisburse Bank Accounts
Bank accounts are documented under NeroDisburse. API responses never expose full account numbers, sort codes, IBANs or routing numbers.
/bank-accountsLists safe payout bank references.
/bank-accountsAdds a payout bank account through the NeroDisburse bridge.
/nerodisburse/bank-accountsLists NeroDisburse bank accounts.
/nerodisburse/bank-accountsCreates a NeroDisburse bank account.
POST bank-account request attributes
| Field | Type | Required | Description |
|---|---|---|---|
| account_name | string | Required | Display name for the destination. |
| bank_name | string | Optional | Bank name. |
| sort_code | string | Optional | GB sort code for GB bank accounts. |
| account_number | string | Optional | GB account number for GB bank accounts. |
| iban | string | Optional | IBAN for supported international accounts. |
| currency | enum | Required | Currency. |
| use_for | enum | Optional | supplier, payout, merchant etc. |
| is_default | boolean | Optional | Set as default destination. |
NeroDisburse Payouts
Create supplier or connected disbursement payouts using saved bank accounts.
/nerodisburse/payoutsLists NeroDisburse payouts.
/nerodisburse/payoutsCreates pending NeroDisburse payout.
/nerodisburse/payouts/{id}Retrieves one NeroDisburse payout.
POST payout request attributes
| Field | Type | Required | Description |
|---|---|---|---|
| amount | decimal | Required | Amount. |
| currency | enum | Required | Currency. |
| transfer_speed | enum | Optional | instant or standard. |
| bank_account_id | string | Required | Saved bank account reference. |
| reference | string | Optional | Payout reference. |
| note | text | Optional | Supplier payout note. |
NeroDisburse Payments
Create disbursement payment records where enabled by the NeroDisburse controller.
/nerodisburse/paymentsCreates a NeroDisburse payment/disbursement request.
Use this endpoint where your integration needs NeroDisburse payment creation rather than a standard payout request. Risk and payout availability rules still apply.
Terminal Payments
Send in-person payment actions to a registered terminal reader.
/terminal/paymentsCreates and sends a terminal payment action.
/terminal/readers/{reader_id}/cancel-actionCancels the current reader action.
POST terminal payment request attributes
| Field | Type | Required | Description |
|---|---|---|---|
| amount | decimal | Required | Amount. |
| currency | enum | Required | Currency. |
| reader_id | string | Required | Terminal reader ID. |
| location_id | string | Required | Terminal location ID. |
| description | text | Optional | Payment description. |
| reference | string | Optional | Reference shown in transaction history. |
Terminal Locations
Create, list and manage terminal locations. Location creation uses the terminal bridge route.
/locationsLists terminal/NeroPOS locations.
/locationsLegacy alias to create terminal location.
/terminal/locationsLists terminal locations.
/terminal/locationsCreates a terminal location.
/locations/{id}Retrieves one location.
/locations/{id}Updates a location.
/locations/{id}Deletes where enabled.
POST/PATCH location request attributes
| Field | Type | Required | Description |
|---|---|---|---|
| display_name | string | Required | Location display name. |
| line1 | string | Required | Address line 1. |
| city | string | Required | City. |
| postal_code | string | Required | Postal code. |
| country | enum | Required | ISO country code. |
| is_default | boolean | Optional | Set default location. |
| tipping_enabled | boolean | Optional | Enable tipping for terminal/POS flows. |
Terminal Readers
Register, list and remove terminal readers.
/readersLists readers.
/readersLegacy alias to register reader.
/terminal/readersLists terminal readers.
/terminal/readersRegisters a reader.
/terminal/readers/{id}Deletes/unlinks a reader.
POST reader registration request attributes
| Field | Type | Required | Description |
|---|---|---|---|
| label | string | Required | Reader label. |
| location_id | string | Required | Location ID. |
| registration_code | string | Required | Pairing/registration code from device. |
| reader_serial_number | string | Read-only | Device serial where available. |
| reader_status | enum | Read-only | online/offline/unknown. |
Devices
Read-only terminal/device records for fleet visibility.
/devicesLists device rows.
/devices/{id}Retrieves one device.
Device response attributes
| Field | Type | Description |
|---|---|---|
| device_id | string | Internal device ID. |
| reader_id | string | Linked reader ID. |
| reader_serial | string | Serial number. |
| reader_label | string | Display label. |
| status | enum | Device status. |
NeroCard Cards
NeroCard card records are read-only in API v2 and are separate from payment cards.
/nerocardsLists NeroCard cards.
/nerocards/{id}Retrieves one NeroCard card.
Card response attributes
| Field | Type | Description |
|---|---|---|
| cardholder_name | string | Cardholder name. |
| brand | string | Card brand. |
| last4 | string | Last four digits. |
| status | enum | active, inactive, cancelled, blocked etc. |
| card_pin | hidden | Never returned. |
NeroCard Cardholders
Read NeroCard cardholder records.
/nerocardholdersLists cardholders.
/nerocardholders/{id}Retrieves one cardholder.
Cardholder response attributes
| Field | Type | Description |
|---|---|---|
| name | string | Cardholder name. |
| string | Email. | |
| phone | string | Phone. |
| neropay_cardholder_id | string | NeroPay cardholder identifier when present. |
| created_at | datetime | Creation time. |
NeroCard Transactions
Read NeroCard issuing transactions separately from wallet and payment transactions.
/nerocard-transactionsLists issuing/NeroCard transactions.
/nerocard-transactions/{id}Retrieves one NeroCard transaction.
NeroCard transaction response attributes
| Field | Type | Description |
|---|---|---|
| neropay_issuing_transaction_id | string | NeroPay issuing transaction ID. |
| merchant_name | string | Merchant name on the card transaction. |
| amount | decimal | Transaction amount. |
| merchant_amount | decimal | Original merchant amount where different. |
| platform_fee_amount | decimal | Platform fee amount if applied. |
| net_amount | decimal | Net ledger amount. |
| status | enum | pending, posted, reversed etc. |
| type | enum | purchase, refund, adjustment etc. |
NeroTrade API
NeroTrade API v2 lets eligible merchants create, retrieve, list and update wholesale trade records from their own systems.
402 nerotrade_subscription_required when the plan is not active for the merchant.Records covered
Trade accounts, product categories, products, inventory stock fields, drivers, deliveries, invoices, collections, statement views, campaign records, route plans and driver check-ins.
Response envelope
Successful calls return { success: true, data: ... }. List calls also include pagination meta. Failed calls return { success: false, error: { code, message } }.
/nerotrade/dashboardReturns NeroTrade summary, subscription status, stock alerts and operational totals.
/nerotrade/{resource}Lists supported NeroTrade records for the authenticated merchant.
/nerotrade/{resource}Creates a supported NeroTrade record where the resource supports creation.
/nerotrade/{resource}/{id}Retrieves one supported NeroTrade record.
/nerotrade/{resource}/{id}Updates one supported NeroTrade record.
NeroTrade Trade Accounts
Create and maintain wholesale customer accounts, credit terms, collection preferences and account risk status.
/nerotrade/trade-accountsLists trade accounts. Alias: /nerotrade/customers.
/nerotrade/trade-accountsCreates a trade account.
/nerotrade/trade-accounts/{id}Retrieves one trade account.
/nerotrade/trade-accounts/{id}Updates account details, limits, terms, collection method or supply status.
POST/PATCH trade account request attributes
| Field | Type | Description |
|---|---|---|
| business_name | string | Required on create. Trade customer business name. |
| contact_name | string | Main contact name. |
| string | Billing or account email. | |
| phone | string | Contact phone number. |
| billing_address | string | Billing address. |
| delivery_address | string | Default delivery address. |
| payment_terms | enum | cod, 7_days, 14_days, 30_days, weekly or monthly. |
| credit_limit | decimal | Approved trade account credit limit. |
| opening_balance | decimal | Optional opening balance on create. |
| collection_method | enum | Collection preference such as payment_link or bank_transfer. |
| risk_status | string | Internal account risk label, for example good or watch. |
| stop_supply | boolean | Stops supply for the account when true. |
NeroTrade Products & Pricing
Manage trade product categories, SKUs, wholesale pricing, VAT settings and stock-tracked product records.
/nerotrade/product-categoriesLists trade product categories. Alias: /nerotrade/categories.
/nerotrade/product-categoriesCreates a product category.
/nerotrade/product-categories/{id}Updates a product category.
/nerotrade/productsLists trade products and pricing.
/nerotrade/productsCreates a trade product.
/nerotrade/products/{id}Retrieves one trade product.
/nerotrade/products/{id}Updates product details, stock settings or pricing.
POST/PATCH product and pricing request attributes
| Field | Type | Description |
|---|---|---|
| name | string | Required product name. |
| base_unit | string | Required unit such as pcs, box, case or pallet. |
| unit_price | decimal | Required default trade unit price. |
| category_id | integer | Linked NeroTrade product category. |
| category_name | string | Creates or links a category by name when supplied. |
| sku | string | Stock keeping unit. |
| description | string | Product description. |
| vat_rate | decimal | VAT rate applied to the product. |
| vat_included | boolean | Whether price includes VAT. |
| track_stock | boolean | Enables inventory tracking for the product. |
| stock_qty | decimal | Current available stock. |
| reorder_level | decimal | Manual reorder threshold. |
| preferred_supplier | string | Supplier reference. |
NeroTrade Inventory
Read stock-tracked products and update stock quantity, reorder level, supplier and active status.
/nerotrade/inventoryLists products where stock tracking is enabled.
/nerotrade/inventory/{id}Retrieves one stock-tracked product.
/nerotrade/inventory/{id}Updates stock quantity, reorder level, preferred supplier or active status.
track_stock enabled. Stock fields can then be updated through the inventory endpoint.PATCH inventory request attributes
| Field | Type | Description |
|---|---|---|
| track_stock | boolean | Enables stock tracking. |
| stock_qty | decimal | Current stock quantity. |
| reorder_level | decimal | Manual reorder threshold. |
| preferred_supplier | string | Supplier reference. |
| active | boolean | Whether the product is active. |
NeroTrade Drivers & Deliveries
Manage driver records and delivery note workflows for trade orders. Delivery creation supports line items and can optionally create a linked invoice.
/nerotrade/driversLists delivery drivers.
/nerotrade/driversCreates a driver record.
/nerotrade/drivers/{id}Retrieves one driver record.
/nerotrade/drivers/{id}Updates driver details or active status.
/nerotrade/deliveriesLists deliveries and delivery notes.
/nerotrade/deliveriesCreates a delivery record.
/nerotrade/deliveries/{id}Retrieves one delivery record with items.
/nerotrade/deliveries/{id}Updates delivery status, driver, proof name, notes or line items.
POST/PATCH driver and delivery request attributes
| Field | Type | Description |
|---|---|---|
| customer_id | integer | Required linked trade account. |
| driver_id | integer | Assigned driver. |
| delivery_number | string | Optional delivery reference. Generated if omitted. |
| status | enum | scheduled, delivered, invoiced, failed or cancelled. |
| delivered_at | datetime | Delivery timestamp. |
| proof_name | string | Recipient name for proof of delivery. |
| create_invoice | boolean | Creates an invoice from the delivery items when true. |
| items | array | Line items with item_name, quantity, unit, unit_price, vat_rate and optional product_id. |
NeroTrade Invoices & Collections
Create trade invoices, record payment collections and keep outstanding trade account balances in sync.
/nerotrade/invoicesLists trade invoices.
/nerotrade/invoicesCreates a trade invoice with line items.
/nerotrade/invoices/{id}Retrieves one trade invoice with items and payments.
/nerotrade/invoices/{id}Updates invoice status, dates, terms, collection method, notes or items.
/nerotrade/collectionsLists collection/payment records. Alias: /nerotrade/payments.
/nerotrade/collectionsCreates a collection/payment record.
/nerotrade/collections/{id}Updates collection amount, method, invoice link, paid date or reference.
POST/PATCH invoice and collection request attributes
| Field | Type | Description |
|---|---|---|
| customer_id | integer | Required linked trade account. |
| invoice_number | string | Optional merchant invoice reference. Generated if omitted. |
| status | enum | sent, part_paid, paid, overdue or collection_failed. |
| issue_date | date | Invoice issue date. |
| due_date | date | Invoice due date. Calculated from terms if omitted. |
| payment_terms | enum | cod, 7_days, 14_days, 30_days, weekly or monthly. |
| collection_method | string | Collection preference. |
| items | array | Line items with item_name, quantity, unit, unit_price, vat_rate and optional product_id. |
| amount | decimal | Required collection amount. |
| method | string | Required payment method for collections. |
| reference | string | External collection reference. |
| paid_at | datetime | Payment received timestamp. |
NeroTrade Statements
Read statement-style account summaries, outstanding balances, invoices and payments for trade accounts.
/nerotrade/statementsLists trade accounts in statement format. Use outstanding_only=1 to return accounts with balance due.
/nerotrade/statements/{customer_id}Retrieves one trade account statement with invoices and payments.
Statement response attributes
| Query / Field | Type | Description |
|---|---|---|
| outstanding_only | boolean | Only return trade accounts with outstanding balances. |
| limit | integer | Number of records to return. Maximum 100 for the list endpoint and 200 for invoice/payment lines. |
| customer | object | Trade account details. |
| summary | object | Current balance, overdue balance, invoice count and payment count. |
| invoices | array | Recent invoices for the trade account. |
| payments | array | Recent payment/collection records. |
NeroTrade Sales & Marketing
Manage campaign records linked to trade accounts for merchant-supplied sales and marketing workflows.
/nerotrade/campaignsLists sales and marketing campaign records.
/nerotrade/campaignsCreates a campaign record.
/nerotrade/campaigns/{id}Retrieves one campaign record.
/nerotrade/campaigns/{id}Updates campaign details, schedule or status.
POST/PATCH campaign request attributes
| Field | Type | Description |
|---|---|---|
| name | string | Required campaign name. |
| campaign_type | string | Required campaign type, for example promotion or retention. |
| channel | enum | Required channel such as email, sms, phone, field_sales or manual. |
| target_segment | string | Target segment. Defaults to all_trade_accounts. |
| status | enum | draft, scheduled, active, completed or cancelled. |
| message | string | Merchant-supplied campaign message or note. |
| scheduled_at | datetime | Optional scheduled time. |
NeroTrade Routes & Tracking
Create delivery route plans and update driver check-in records.
/nerotrade/route-plansLists planned routes. Alias: /nerotrade/routes.
/nerotrade/route-plansCreates a route plan.
/nerotrade/route-plans/{id}Retrieves one route plan.
/nerotrade/route-plans/{id}Updates route name, date, status, driver, vehicle or notes.
/nerotrade/driver-checkinsLists driver tracking/check-in records.
/nerotrade/driver-checkinsCreates a driver check-in record.
/nerotrade/driver-checkins/{id}Updates a driver check-in record.
POST/PATCH route request attributes
| Field | Type | Description |
|---|---|---|
| route_name | string | Required route name. |
| driver_id | integer | Assigned driver. |
| route_date | date | Route date. Defaults to today when omitted. |
| status | enum | planned, in_progress, completed or cancelled. |
| vehicle_registration | string | Vehicle registration. |
| start_area | string | Route start area. |
| end_area | string | Route end area. |
| estimated_stops | integer | Estimated stop count. |
| estimated_value | decimal | Estimated route value. |
| checkin_type | enum | Required check-in type such as start_route, delivery_stop, issue or end_route. |
| latitude / longitude | decimal | Optional GPS coordinates. |
Customers
Create and manage NeroPOS/NeroPay customer records.
/customersLists customers.
/customersCreates a customer.
/customers/{id}Retrieves one customer.
/customers/{id}Updates a customer.
POST/PATCH customer request attributes
| Field | Type | Required | Description |
|---|---|---|---|
| name | string | Required | Customer name. |
| string | Optional | Email. | |
| phone | string | Optional | Phone. |
| postcode | string | Optional | Postcode. |
| address1/address2 | string | Optional | Address lines. |
| city | string | Optional | City. |
| instructions | text | Optional | Delivery or customer notes. |
Categories & Products
Keep product catalogue data in sync for NeroPOS and NeroWeb menus.
/categoriesLists categories.
/categoriesCreates category.
/categories/{id}Updates category.
/categories/{id}Deletes category where enabled.
/productsLists products.
/productsCreates product.
/products/{id}Updates product.
/products/{id}Deletes product where enabled.
POST/PATCH category and product request attributes
| Product field | Type | Required | Description |
|---|---|---|---|
| category_id | integer | Optional | Category ID. |
| name | string | Required | Product name. |
| sku | string | Optional | SKU. |
| price | decimal | Required | Product price. |
| vat_rate | decimal | Optional | VAT rate. |
| image_url | string | Optional | Image URL. |
| stock_qty | integer | Optional | Stock quantity. |
| description | text | Optional | Product description. |
Product Options & Rules
Manage product-specific options and global option groups for POS and online ordering.
/product-option-groupsLists product option groups.
/product-option-groupsCreates product option group.
/product-optionsLists product options.
/product-optionsCreates product option.
/global-option-groupsLists global option groups.
/global-option-groupsCreates global option group.
/global-option-itemsLists global option items.
/global-option-itemsCreates global option item.
/global-option-assignmentsLists assignments.
/global-option-assignmentsCreates assignment.
/product-option-rulesAlias for assignments/rules.
POST/PATCH option request attributes
| Field | Type | Description |
|---|---|---|
| name | string | Option or group name. |
| required | boolean | Require selection. |
| min_select / max_select | integer | Selection limits. |
| price_delta | decimal | Price change for selected item. |
| rules_json | object | Rule configuration. |
| scope / scope_id | enum/integer | Where a global option applies. |
Tables & Areas
Manage table maps, areas and table status for dine-in flows.
/table-areasLists table areas.
/table-areasCreates table area.
/tablesLists tables.
/tablesCreates table.
/tables/{id}Updates table.
/tables/{id}Deletes table where enabled.
POST/PATCH table and area request attributes
| Field | Type | Description |
|---|---|---|
| area_id | integer | Area ID. |
| name / label | string | Display name. |
| seats | integer | Seat count. |
| status | enum | available, occupied, reserved etc. |
| x,y,w,h,rotation | decimal/integer | Table-map coordinates. |
Cashiers, Registers & Staff
Manage POS cashiers, registers, POS staff and team members.
/cashiersLists cashiers.
/cashiersCreates cashier.
/registersLists registers.
/registersCreates register.
/pos-staffsLists POS staff.
/pos-staffsCreates POS staff.
/team-membersLists merchant team members.
/team-membersCreates team member.
POST/PATCH staff request attributes
| Field | Type | Description |
|---|---|---|
| name | string | Staff/cashier name. |
| email / username | string | Login identifier. |
| password / new_password | string | Accepted on create/update but never returned. |
| role | enum | Role/register type. |
| permissions | object/array | Permission payload. |
| location_ids / till_ids | array | Allowed locations or tills. |
Invoices
Create and manage merchant invoices and invoice line items.
/invoicesLists invoices.
/invoicesCreates invoice.
/invoices/{id}Retrieves invoice.
/invoices/{id}Updates invoice.
/invoice-itemsLists invoice items.
/invoice-itemsCreates invoice item.
POST/PATCH invoice request attributes
| Field | Type | Description |
|---|---|---|
| invoice_number | string | Invoice number. |
| invoice_to | string | Recipient name. |
| invoice_email | string | Recipient email. |
| currency_id | integer | Currency ID. |
| sub_total / total_amount | decimal | Amounts. |
| items_json | object/array | Line items payload. |
| due_date | date | Due date. |
| status | enum | draft, sent, paid etc. |
NeroPOS Orders
NeroPOS order APIs are separate from NeroWeb orders and generic store orders.
/neropos-ordersLists NeroPOS orders.
/neropos-ordersCreates NeroPOS order.
/neropos-orders/{id}Retrieves order.
/neropos-orders/{id}Updates order.
/neropos-order-itemsLists order items.
/neropos-order-itemsCreates order item.
/ordersGeneric orders resource.
/store-ordersRead-only NeroPay Store orders.
POST/PATCH order request attributes
| Field | Type | Description |
|---|---|---|
| order_number / order_ref | string | Order reference. |
| status | enum | Order status. |
| fulfilment_type | enum | dine_in, takeaway, delivery etc. |
| payment_method / payment_status | enum | Payment fields. |
| customer_* | string | Customer details. |
| subtotal, total, tip_fee | decimal | Money fields. |
| location_id / table_id / staff_id | integer | Operational links. |
| meta_json | object | Extra order metadata. |
NeroPOS Payment Settings
Manage POS payment, tax, service fee, cashiers, tables and receipt defaults.
/payment-settingsLists POS payment settings.
/payment-settingsCreates settings where no row exists.
/payment-settings/{id}Retrieves settings.
/payment-settings/{id}Updates settings.
POST/PATCH payment settings request attributes
| Field | Type | Description |
|---|---|---|
| default_tax_fee | decimal | Default tax fee. |
| default_service_fee | decimal | Default service fee. |
| default_tip_fee | decimal | Default tip fee. |
| pos_mode / default_channel | enum | POS operating mode. |
| enable_tables / enable_cashiers | boolean | Feature toggles. |
| receipt_footer / receipt_logo_url | text/string | Receipt branding. Use receipt_logo_url for the logo image URL. |
| min_card_charge | decimal | Minimum card charge. |
NeroWeb Settings
Configure online ordering storefront settings separately from POS resources.
/neroweb-settingsLists NeroWeb settings.
/neroweb-settingsCreates settings.
/neroweb-settings/{id}Retrieves settings.
/neroweb-settings/{id}Updates settings.
POST/PATCH NeroWeb settings request attributes
| Field | Type | Description |
|---|---|---|
| store_name | string | Online store name. |
| slug | string | Store slug. |
| is_active | boolean | Enable store. |
| disable_delivery / disable_collect | boolean | Fulfilment toggles. |
| enable_card / enable_cash | boolean | Payment toggles. |
| working_hours_json | object | Working hours. |
| delivery_bands_json | object | Delivery pricing/areas. |
| theme_json | object | Brand/theme settings, including logo_url. |
NeroWeb Pages
Manage public pages used by the NeroWeb storefront builder.
/neroweb-pagesLists pages.
/neroweb-pagesCreates page.
/neroweb-pages/{id}Retrieves page.
/neroweb-pages/{id}Updates page.
/nerowebpagesLegacy alias for pages.
POST/PATCH NeroWeb page request attributes
| Field | Type | Description |
|---|---|---|
| title | string | Page title. |
| slug | string | URL slug. |
| page_type | enum | home, content, legal etc. |
| is_home / is_published / show_in_nav | boolean | Page flags. |
| nav_label / nav_order | string/integer | Navigation settings. |
| html_content / content / css_content | text | Page content. |
| builder_json | object | Builder state. |
| meta_title / meta_description | string/text | SEO metadata. |
NeroWeb Orders
NeroWeb orders are separate from NeroPOS orders and store orders.
/neroweb-ordersLists NeroWeb orders.
/neroweb-ordersCreates NeroWeb order.
/neroweb-orders/{id}Retrieves order.
/neroweb-orders/{id}Updates order.
/neroweb-order-itemsLists order items.
/neroweb-order-itemsCreates order item.
POST/PATCH NeroWeb order request attributes
| Field | Type | Description |
|---|---|---|
| order_ref | string | Order reference. |
| status | enum | Order status. |
| fulfilment_type | enum | delivery, collect etc. |
| payment_method / payment_status | enum | Payment fields. |
| subtotal_pence / total_pence | integer/decimal | Money fields. |
| customer_name / email / phone | string | Customer fields. |
| meta_json | object | Extra metadata. |
Booking Settings
Booking settings are separate from booking transactions and should appear under the Booking menu.
/booking-settingsLists booking settings.
/booking-settingsCreates booking settings.
/booking-settings/{id}Retrieves booking settings.
/booking-settings/{id}Updates booking settings.
POST/PATCH booking settings request attributes
| Field | Type | Description |
|---|---|---|
| booking_company_name | string | Booking brand/company name. |
| booking_type | enum | Booking mode/type. |
| weekly_hours | object | Weekly opening hours. |
| auto_approve_booking | boolean | Auto approve bookings. |
| slot_duration | integer | Minutes per slot. |
| max_bookings_per_slot / max_guests | integer | Capacity. |
| services | object/array | Bookable services. |
| holiday_days | array | Closed dates. |
| staff_enabled / staff | boolean/object | Staff booking assignment. |
Bookings
Create and manage booking transactions.
/bookingsLists bookings.
/bookingsCreates booking.
/bookings/{id}Retrieves booking.
/bookings/{id}Updates booking.
POST/PATCH booking request attributes
| Field | Type | Required | Description |
|---|---|---|---|
| booking_date | date | Required | Booking date. |
| booking_time | time | Required | Booking time. |
| guest_count | integer | Optional | Guests. |
| service | string | Optional | Service name. |
| amount | decimal | Optional | Booking amount. |
| staff_id / staff_name | integer/string | Optional | Staff assignment. |
| location_id | integer | Optional | Location. |
| customer_name / phone / email | string | Required | Customer details. |
| customer_note | text | Optional | Customer note. |
| status | enum | Optional | pending, confirmed, cancelled etc. |
KYC / Identity API
Identity API is not only for NeroConnect. Direct merchants can also use it to create verification links and read verification sessions.
/identity/verification-linksCreates a document verification link.
/identity/verification-sessionsLists verification sessions.
/identity/verification-sessions/{id}Retrieves one verification session.
POST identity verification-link request attributes
| Field | Type | Required | Description |
|---|---|---|---|
| type | enum | Optional | document or supported verification type. |
| return_url | string | Optional | Where the user should return after verification. |
| first_name / last_name | string | Optional | Prefill name if known. |
| country | enum | Optional | ISO country code. |
| metadata | object | Optional | Developer metadata. |
short_url or verification_url in your own dashboard.Compliance API
Compliance APIs let merchants or platforms read requested documents and submit evidence back to NeroPay.
/compliance/requestsLists compliance document requests.
/compliance/requests/{id}Retrieves one compliance request.
/compliance/requests/{id}/documentsUploads requested compliance documents.
POST compliance document request attributes
| Field | Type | Required | Description |
|---|---|---|---|
| document_file | file | Required | Requested file. |
| document_type | string | Optional | Type requested by staff/compliance. |
| notes | text | Optional | Merchant or platform notes. |
| metadata | object | Optional | Optional developer metadata. |
Support Tickets
White-label support APIs allow a platform to create tickets for NeroPay staff while keeping the platform as the customer-facing brand.
/support/ticketsLists tickets.
/support/ticketsCreates ticket.
/support/tickets/{id}Retrieves ticket.
POST support ticket request attributes
| Field | Type | Required | Description |
|---|---|---|---|
| subject | string | Required | Ticket subject. |
| message | text | Required | Initial message. |
| priority | enum | Optional | low, normal, high, urgent. |
| category | string | Optional | Support category. |
| attachments[] | file | Optional | Optional files where supported. Max 2mb. PNG, JPG, WEBP or PDF |
support.ticket_updated and support.message_created webhooks and display the answer in your own UI.Webhooks
Use webhooks for account updates, KYC, compliance, proof, reserve release and support events.
/webhooksLists configured endpoints.
/webhook-deliveriesLists delivery attempts.
transaction.proof_requestedtransaction.proof_submittedtransaction.proof_approvedtransaction.proof_rejectedpayout.proof_requestedtransfer.proof_requestedbalance.reserve_releasedcompliance.document_requestedcompliance.document_submittedcompliance.document_approvedcompliance.document_rejectedkyc.pendingkyc.verifiedkyc.rejectedaccount.updateaccount.updatedconnected_account.createdconnected_account.updatedsupport.ticket_createdsupport.ticket_updatedsupport.message_createdWebhook response attributes
| Field | Type | Description |
|---|---|---|
| id | string | Webhook event ID. |
| type | enum | Event type. |
| created_at | datetime | Event creation time. |
| account | object | Merchant or connected account payload. |
| data | object | Event-specific payload. |
| signature | string | Use your endpoint signing secret where configured. |
Sandbox
Sandbox write endpoints under /sandbox return realistic JSON and do not create live payment, terminal, payout or local records.
/sandbox/hosted-paymentsDry-run hosted checkout.
/sandbox/payment-linksDry-run LinkPay payment link.
/sandbox/terminal/paymentsDry-run terminal payment.
/sandbox/terminal/locationsDry-run terminal location.
/sandbox/terminal/readersDry-run reader registration.
/sandbox/bank-accountsDry-run bank account.
/sandbox/payoutsDry-run payout.
/sandbox/payout-scheduleDry-run schedule update.
/sandbox/resources/{resource}Dry-run resource create.
Sandbox is designed for API clients and Postman tests. Use /sandbox/hosted-payments for checkout testing; direct sandbox card payments are not available in the public API.
Resource Reference
API v2 exposes explicit controller endpoints plus direct resource aliases. Resources are grouped by product area in this documentation; they are not all hidden under NeroPOS.
Core
Payments
Money Movement
NeroDisburse
Terminal
NeroCard
NeroTrade
NeroPOS
NeroWeb
Bookings
Risk & Ops
/v2/disputes, /v2/bank-accounts, /v2/neroweb-orders, /v2/nerocard-transactions, /v2/nerotrade/trade-accounts and /v2/bookings should not return route-not-found when the v2 route patch is deployed and route cache is cleared.