Professional API reference for payments, platforms and merchant tools.
Build payments, connected accounts, money movement, NeroDisburse, Terminal, NeroCard, 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. |
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 and core onboarding state.
/accountReturns the authenticated merchant or the connected merchant when NeroPay-Account is supplied.
/connected-accountsLists connected merchants for a NeroConnect platform.
/connected-accountsCreates a connected merchant.
/connected-accounts/{account_id}Retrieves one connected merchant.
/connected-accounts/{account_id}Updates connected account fields and can trigger account.update webhooks.
| 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. |
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/compliance | workflow | Must be completed after create account. Use Identity and Compliance APIs plus webhooks. |
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.Payment API
Create hosted checkouts, API payment intents and terminal payments. Payment API is separate from resources and appears in the main menu.
/hosted-paymentsCreates a hosted checkout URL.
/paymentsCreates an API payment intent / pending payment.
/payment-intentsExplicit payment intent endpoint.
/terminal/paymentsSends a payment action to a terminal reader.
| Field | Type | Required | Description |
|---|---|---|---|
| amount | decimal | Required | Payment amount in major units, e.g. 15.99. |
| currency | enum | Required | Currency such as GBP. |
| reference | string | Optional | Your order/payment reference. |
| description/details | text | Optional | Customer-facing or internal description. |
| connect_application_fee | decimal | Optional | Platform fee charged for a connected account payment. Strongly recommended for platform monetisation. |
| metadata | object | Optional | Additional key/value data returned in responses and webhooks where supported. |
connect_application_fee.reference or metadata.order_id.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.
| 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. |
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.
/transactionsLists transactions.
/transactions/{id}Retrieves one transaction.
/transactions/{id}/refundRefunds a transaction.
/transactions/{id}/cancelCancels a pending transaction.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| Field | Type | Description |
|---|---|---|
| name | string | Cardholder name. |
| string | Email. | |
| phone | string | Phone. |
| stripe_cardholder_id | string | External 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.
| Field | Type | Description |
|---|---|---|
| stripe_issuing_transaction_id | string | External 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. |
Customers
Create and manage NeroPOS/NeroPay customer records.
/customersLists customers.
/customersCreates a customer.
/customers/{id}Retrieves one customer.
/customers/{id}Updates a customer.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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_created| 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 payment.
/sandbox/payment-intentsDry-run payment intent.
/sandbox/terminal/paymentsDry-run terminal payment.
/sandbox/payment-linksDry-run payment link.
/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 live endpoints only when you want real records/actions.
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
NeroPOS
NeroWeb
Bookings
Risk & Ops
/v2/disputes, /v2/bank-accounts, /v2/neroweb-orders, /v2/nerocard-transactions and /v2/bookings should not return route-not-found when the v2 route patch is deployed and route cache is cleared.