NeroPay logoAPI
2026-05 latest v2Payment APIResourcesDocs
NeroPay API v2

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.

/v2Live base path
HMACSigned writes
ProductsPayment, POS, Web, Card, Disburse
Risk-readyKYC, compliance, proof, reserve

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.

https://eu.neropay.app/v2

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.

Recommended platform flow: create connected account, create identity verification link, listen for KYC/compliance/proof webhooks, handle support tickets and only release marketplace UX once account and reserve states are safe.

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.

Plugin package

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.

1. Install and activateUpload the NeroPay WooCommerce plugin through WordPress Admin or FTP, then activate it from Plugins.
2. Configure credentialsOpen WooCommerce → Settings → Payments → NeroPay and enter your API key, merchant details and secret key.
3. Confirm webhooksKeep the webhook/IPN URL reachable so WooCommerce can move orders from pending to paid after NeroPay confirms payment.
SettingTypeRequiredDescription
public_keystringRequiredIdentifies the merchant account.
secret_keystringRequiredServer-side key used by the plugin for secure API actions.
webhook_urlstringRequiredReceives payment success, failure or pending updates.
currencyenumRequiredStore 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.

Marketplace installation

Install NeroPay from the official Wix marketplace link, then configure Public Key, success URL, cancel URL and IPN URL.

1. Install from the marketplaceInstall the official NeroPay app, then connect it to your NeroPay merchant account.
2. Add API keysCopy the Public Key and Secret Key from the NeroPay dashboard. Keep secret keys out of browser code.
3. Configure URLsSet success, cancel and IPN URLs so payment status can return to the store.
4. Test in sandboxUse sandbox mode before switching to live keys and live checkout.
FieldTypeRequiredDescription
public_keystringRequiredNeroPay public key configured in the Wix app.
success_urlstringRequiredPage shown after successful payment.
cancel_urlstringRequiredPage shown when checkout is cancelled.
ipn_urlstringRequiredEndpoint that receives payment confirmation.
For custom Wix backend flows, create hosted payments server-side. Browser-only flows should never expose the secret key.

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.

Odoo App Store

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.
1. Install the moduleUpload the neropay_payment module to Odoo add-ons or install it via Apps.
2. Enable providerRestart Odoo, update the Apps list, then select or create the NeroPay payment provider.
3. Configure keysEnter public and secret keys, choose sandbox or live mode and enable the provider.
4. Reconcile with IPNUse the NeroPay callback to mark invoices/orders paid after signature verification.
FlowDescription
eCommerce checkoutCreate a hosted payment and redirect the customer to the checkout URL.
Invoice paymentUse the Odoo invoice number as identifier for reconciliation.
Sandbox testingUse sandbox endpoint and test credentials before live deployment.
TroubleshootingCheck 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.

Perfex module package

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.
1. Upload moduleExtract the NeroPay payment module and upload it to the Perfex modules directory.
2. Enable gatewayGo to Setup → Payments → Payment Gateways and enable the NeroPay gateway.
3. Configure credentialsEnter public and secret API keys and define supported currencies.
4. Verify IPNPerfex should listen at {your_perfex_url}/neropay_gateway/ipn and mark invoices paid after verification.
If invoices do not update, confirm the IPN URL, secret key and server logs before retrying payment creation.

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.

No-code automation

Use Zapier to create payment links, log transactions, notify teams and sync payment events with CRMs, spreadsheets and 5,000+ apps.

1. Connect accountLog in to NeroPay, copy your Public API Key and paste it into the Zapier connection window.
2. Choose modeSelect Sandbox or Live mode depending on whether the workflow should test or process real payment links.
3. Create actionUse the Create Payment Request action to return a checkout URL instantly.
4. Automate follow-upSend payment notifications to Slack, log rows in Sheets, update CRM records or create invoices automatically.
Action fieldTypeRequiredDescription
public_keystringRequiredNeroPay Public API key.
identifierstringRequiredUnique ID for the payment.
currencyenumRequiredCurrency code such as GBP, EUR or IDR.
amountdecimalRequiredPayment amount.
detailsstringRequiredDescription or order details.
ipn_urlstringRequiredInstant payment notification URL.
customer_phonestringOptionalCustomer phone number.
customer_addressstringOptionalBilling address.

Authentication

API v2 uses bearer authentication. Unsafe methods also require a timestamped HMAC signature and an idempotency key.

HeaderTypeRequiredDescription
AuthorizationstringRequiredBearer {secret_key}.
AcceptstringRequiredAlways application/json.
Content-TypestringRequiredUse application/json for JSON writes or multipart/form-data for file upload endpoints.
X-NeroPay-Timestampunix timestampRequiredRequired for POST/PATCH/PUT/DELETE.
X-NeroPay-SignaturestringRequiredHMAC SHA-256 of timestamp.raw_body using the secret key.
Idempotency-KeystringRequiredRequired for writes that create or mutate state.
Never expose secret keys in browser code. Use server-side calls for signed writes.

Headers

Headers control JSON responses, connected account scoping, public/client key context and retry safety.

HeaderTypeRequiredDescription
NeroPay-AccountstringOptionalConnected account ID such as NPVesdTGASO23_547878. Platforms use it to act on a connected merchant.
X-NeroPay-Client-KeystringOptionalDashboard-visible account client key. If supplied, it must match the authenticated merchant or the NeroPay-Account connected account id.
X-NeroPay-Public-KeystringOptionalPublic key from API credentials.
Idempotency-KeystringRequiredUnique 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.

QueryTypeDefaultDescription
pageinteger1Page number.
per_pageinteger25Number of records per page.
q/searchstringSearch by supported columns.
statusenumFilter by status where supported.
from / todate/datetimeFilter by created date where supported.
sortstring-idUse 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.

HTTPCodeMeaning
400bad_requestMalformed request.
400missing_idempotency_keyA required Idempotency-Key header is missing.
401unauthenticatedMissing or invalid API key.
401invalid_signatureWrite request signature verification failed.
403forbiddenThe authenticated account cannot access the resource.
404endpoint_not_found / not_foundRoute or object was not found.
405resource_read_onlyResource exists but the requested write method is not enabled.
409idempotency_conflictThe same idempotency key was reused with a different body.
409connected_account_duplicateA connected account with the same email or username already exists.
409duplicate_resourceA resource with the same unique fields already exists for this account.
422validation_errorInvalid fields.
429rate_limitedToo many requests.
500resource_scope_misconfiguredThe resource is not safely account-scoped on this installation.

Authentication and account scope errors

HTTPCodeMeaning
401missing_credentialsNo secret key was supplied.
401invalid_credentialsThe secret key was not recognised.
401account_key_mismatchThe supplied public key, client key or account id does not match the authenticated account context.
401invalid_signatureThe HMAC signature is missing, malformed or invalid.
403account_not_allowedThe authenticated account cannot access the supplied connected account.
403account_inactiveThe merchant account is not active.
403neroconnect_not_enabledNeroConnect platform access is not enabled for this account.
404account_not_foundThe connected account id was not found for this platform.
422invalid_account_idUse the full NeroPay account id format, for example NPVesdTGASO23_547878.

Connected account errors

HTTPCodeMeaning
409connected_account_duplicateA connected account with the same email or username already exists.
422connected_account_create_failedThe connected account could not be created.
422invalid_idempotency_keyThe supplied idempotency key has an invalid format.
409duplicate_requestA request with the same idempotency key is still being processed.

Payment and transaction errors

HTTPCodeMeaning
403account_bannedThe account cannot process the requested operation.
403payments_pausedThe account cannot accept payments right now.
422currency_not_supportedThe requested currency is not enabled or supported.
422invalid_connect_application_feeThe platform fee is invalid or exceeds the transaction amount.
422not_cancelableThe transaction can no longer be cancelled.
422not_refundableThe transaction is not eligible for refund.
422invalid_refund_amountThe refund amount must be greater than zero.
422refund_exceeds_transactionThe requested refund exceeds the original transaction amount.
422insufficient_balanceThe wallet balance is not enough to complete the operation.
422provider_reference_missingThe provider payment reference is missing.
422cancel_failed / refund_failedThe cancellation or refund could not be processed.

Terminal errors

HTTPCodeMeaning
404location_not_foundThe location was not found for this account.
422location_requiredA location id is required.
422location_bridge_missingThe location is not ready for terminal reader registration.
409reader_already_registeredThe location already has a linked reader.
422reader_limit_reachedThe account has reached its reader limit.
422invalid_registration_codeThe reader registration code is missing or invalid.
404reader_not_foundThe reader does not belong to this account.
422reader_register_failedThe reader could not be registered.
422terminal_payment_failedThe terminal payment could not be created.
422reader_cancel_failedThe reader action could not be cancelled.
500provider_not_configuredThe NeroPay payment bridge is not configured.

Payout and NeroDisburse errors

HTTPCodeMeaning
403payouts_pausedTransfers are paused for this account.
403kyc_requiredKYC verification is required before transfers.
404bank_account_not_foundThe bank account was not found for this merchant.
422bank_account_requiredA bank account id is required.
422bank_account_disabledThe bank account is disabled.
409duplicate_bank_accountThe bank account is already linked to this merchant.
422bank_account_create_failedThe bank account could not be created.
404payout_not_foundThe 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.

GET/account

Returns the authenticated merchant or the connected merchant when NeroPay-Account is supplied.

GET/connected-accounts

Lists connected merchants for a NeroConnect platform.

POST/connected-accounts

Creates a connected merchant.

GET/connected-accounts/{account_id}

Retrieves one connected merchant.

PATCH/connected-accounts/{account_id}

Updates connected account fields and can trigger account.update webhooks.

AttributeTypeRequiredDescription
account_idstringRead-onlyPublic API account ID.
business_company_namestringOptionalCompany or trading name.
emailstringRequiredPrimary merchant email.
statusenumRead-onlyactive, pending, banned or review state.
kyc_statusenumRead-onlypending, verified or rejected.
neroconnect_email_sms_handleenumOptionalneropay or platform. Controls merchant-facing notification delegation.
neroconnectobjectRead-onlyReturned for NeroConnect platform responses. Includes fee payer, platform safety limit, merchant pricing and default connect application fee context.
neroconnect.fee_payerenumRead-onlyconnected_account or platform. Controls where NeroPay processing fees are charged for connected account payments.
neroconnect.platform_safety_limitobject|nullRead-onlyReturned when the fee payer is platform balance. null when the connected account pays NeroPay processing fees.
neroconnect.merchant_pricingobjectRead-onlyShows 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.
Create connected account is the beginning, not the end of onboarding. Developers should also create identity verification links, handle compliance document requests and subscribe to KYC/compliance webhooks.

NeroConnect connected accounts

Platforms can create merchants, view balances, manage default platform fees and operate by sending the connected account header.

ConceptTypeDescription
Connected account IDstringFormat is unique_account_id + underscore + merchant_id.
NeroPay-Account headerstringScopes API calls to a connected merchant.
Notification handlingenumneropay means NeroPay sends email/SMS; platform means platform handles merchant-facing notifications from webhooks.
KYC/complianceworkflowMust be completed after create account. Use Identity and Compliance APIs plus webhooks.
Connected accounts should not be treated as fully ready until KYC, payout bank setup, compliance requests and reserve/proof checks are clear.

Fee payer and pricing context

ModeNeroPay processing fee payerPlatform safety limitNotes
connected_accountThe 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.
platformThe 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.
Important: NeroPay fee payer is separate from 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.
Response compatibility: This is an additive v2 response update. Existing requests do not need a new required parameter. Integrations should safely ignore unknown fields.
Duplicate protection: 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.

POST/hosted-payments

Creates a hosted checkout URL.

POST/payments

Creates an API payment intent / pending payment.

POST/payment-intents

Explicit payment intent endpoint.

POST/terminal/payments

Sends a payment action to a terminal reader.

FieldTypeRequiredDescription
amountdecimalRequiredPayment amount in major units, e.g. 15.99.
currencyenumRequiredCurrency such as GBP.
referencestringOptionalYour order/payment reference.
description/detailstextOptionalCustomer-facing or internal description.
connect_application_feedecimalOptionalPlatform fee charged for a connected account payment. Strongly recommended for platform monetisation.
metadataobjectOptionalAdditional key/value data returned in responses and webhooks where supported.
connect_application_fee is important: send it per payment when your platform takes a fee. If the request omits it, the default connect application fee configured in the dashboard can be used. If a request sends a fee, the default is not charged again.
NeroPay fee payer: for NeroConnect platforms, the dashboard fee payer setting decides whether NeroPay processing fees are charged to the connected account or debited from the platform balance. This does not replace your connect_application_fee.
No raw card data: API v2 does not accept keyed card payments. If an order must be allocated across more than one merchant, create separate payment intents and link them with your own reference or metadata.order_id.

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.

POST/transactions

Legacy alias for creating hosted/API transaction where enabled.

GET/transactions

Lists transactions.

GET/transactions/{id}

Retrieves one transaction.

POST/transactions/{id}/refund

Refunds a transaction.

POST/transactions/{id}/cancel

Cancels a pending transaction.

FieldTypeDescription
idintegerInternal transaction ID.
account_idstringMerchant or connected account ID.
referencestringNeroPay or merchant reference.
np_main_trxstringProcessor/payment identifier where available.
statusenumpending, succeeded, failed, cancelled, refunded.
is_reservebooleanWhether funds are currently held in reserve.
reserve_amountdecimalAmount held from available balance.
proof_statusenumrequested, submitted, approved, rejected or null.
A succeeded transaction can still have reserve/proof state. Do not show funds as fully available until reserve_amount is zero and proof status is clear.

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.

GET/transactions/{id}/proof

Returns proof request and transaction reserve state.

POST/transactions/{id}/proof

Submits proof details and invoice/shipping file.

FieldTypeRequiredDescription
invoice_filefileOptionalJPG, PNG, PDF or WEBP. Required when staff/platform requested an invoice file.
courier_companystringOptionalShipping courier.
tracking_numberstringOptionalTracking number.
buyer_firstnamestringOptionalBuyer first name.
buyer_lastnamestringOptionalBuyer last name.
buyer_phonestringOptionalBuyer phone number.
buyer_emailstringOptionalBuyer email.
merchant_notestextOptionalMerchant notes for the review team.
Submitting proof publishes 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.

GET/balances

Returns wallet balances.

GET/balance

Alias of /balances.

FieldTypeDescription
available_balancedecimalFunds available for use.
instant_availabledecimalInstant payout availability.
standard_availabledecimalStandard payout availability.
reserve_balancedecimalFunds held in reserve due to proof/risk/compliance.
currencyenumWallet currency.

Wallet Transactions

Audit wallet movement separately from payment transactions. Use this for balance ledger reconciliation.

GET/wallet-transactions

Lists wallet balance transactions.

GET/wallet-transactions/{id}

Retrieves one wallet ledger row.

FieldTypeDescription
txn_idstringLedger transaction ID.
typeenumcredit/debit/hold/release depending on implementation.
amountdecimalAmount moved.
balance_beforedecimalBalance before movement where available.
balance_afterdecimalBalance after movement where available.
notestextInternal 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.

GET/payouts

Lists payouts.

POST/payouts

Creates a payout request.

POST/payouts/request

Legacy alias for create payout.

GET/payouts/{id}

Retrieves one payout.

GET/payout-schedule

Gets payout schedule.

PATCH/payout-schedule

Updates payout schedule.

GET/transfer-schedule

Legacy alias of payout schedule.

PATCH/transfer-schedule

Legacy alias of update payout schedule.

FieldTypeRequiredDescription
amountdecimalRequiredPayout amount.
currencyenumRequiredCurrency.
transfer_speedenumOptionalinstant or standard.
bank_account_idstringOptionalDestination bank reference.
referencestringOptionalStatement or internal reference.
Transfers and payouts should not bypass risk controls. High-risk payout requests can create proof requirements, risk flags, tasks and webhooks.

Disputes

Disputes belong under Money Movement because they affect payment risk, settlement and operational review.

GET/disputes

Lists disputes.

GET/disputes/{id}

Retrieves one dispute.

FieldTypeDescription
trx_numberstringRelated transaction reference.
payment_numberstringPayment identifier.
dispute_reasonstringReason code or description.
dispute_statusenumopen, won, lost, under_review etc.
customer_emailstringCustomer 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.

GET/loans

Lists loan/financing records.

GET/loans/{id}

Retrieves one loan record.

FieldTypeDescription
offer_idstringFinancing offer identifier.
statusenumoffer, active, paid, declined etc.
campaign_typestringCampaign/category.
financing_typestringFinancing type.
created_atdatetimeRecord creation time.

NeroDisburse Bank Accounts

Bank accounts are documented under NeroDisburse. API responses never expose full account numbers, sort codes, IBANs or routing numbers.

GET/bank-accounts

Lists safe payout bank references.

POST/bank-accounts

Adds a payout bank account through the NeroDisburse bridge.

GET/nerodisburse/bank-accounts

Lists NeroDisburse bank accounts.

POST/nerodisburse/bank-accounts

Creates a NeroDisburse bank account.

FieldTypeRequiredDescription
account_namestringRequiredDisplay name for the destination.
bank_namestringOptionalBank name.
sort_codestringOptionalGB sort code for GB bank accounts.
account_numberstringOptionalGB account number for GB bank accounts.
ibanstringOptionalIBAN for supported international accounts.
currencyenumRequiredCurrency.
use_forenumOptionalsupplier, payout, merchant etc.
is_defaultbooleanOptionalSet as default destination.

NeroDisburse Payouts

Create supplier or connected disbursement payouts using saved bank accounts.

GET/nerodisburse/payouts

Lists NeroDisburse payouts.

POST/nerodisburse/payouts

Creates pending NeroDisburse payout.

GET/nerodisburse/payouts/{id}

Retrieves one NeroDisburse payout.

FieldTypeRequiredDescription
amountdecimalRequiredAmount.
currencyenumRequiredCurrency.
transfer_speedenumOptionalinstant or standard.
bank_account_idstringRequiredSaved bank account reference.
referencestringOptionalPayout reference.
notetextOptionalSupplier payout note.

NeroDisburse Payments

Create disbursement payment records where enabled by the NeroDisburse controller.

POST/nerodisburse/payments

Creates 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.

POST/terminal/payments

Creates and sends a terminal payment action.

POST/terminal/readers/{reader_id}/cancel-action

Cancels the current reader action.

FieldTypeRequiredDescription
amountdecimalRequiredAmount.
currencyenumRequiredCurrency.
reader_idstringRequiredTerminal reader ID.
location_idstringRequiredTerminal location ID.
descriptiontextOptionalPayment description.
referencestringOptionalReference shown in transaction history.

Terminal Locations

Create, list and manage terminal locations. Location creation uses the terminal bridge route.

GET/locations

Lists terminal/NeroPOS locations.

POST/locations

Legacy alias to create terminal location.

GET/terminal/locations

Lists terminal locations.

POST/terminal/locations

Creates a terminal location.

GET/locations/{id}

Retrieves one location.

PATCH/locations/{id}

Updates a location.

DELETE/locations/{id}

Deletes where enabled.

FieldTypeRequiredDescription
display_namestringRequiredLocation display name.
line1stringRequiredAddress line 1.
citystringRequiredCity.
postal_codestringRequiredPostal code.
countryenumRequiredISO country code.
is_defaultbooleanOptionalSet default location.
tipping_enabledbooleanOptionalEnable tipping for terminal/POS flows.

Terminal Readers

Register, list and remove terminal readers.

GET/readers

Lists readers.

POST/readers

Legacy alias to register reader.

GET/terminal/readers

Lists terminal readers.

POST/terminal/readers

Registers a reader.

DELETE/terminal/readers/{id}

Deletes/unlinks a reader.

FieldTypeRequiredDescription
labelstringRequiredReader label.
location_idstringRequiredLocation ID.
registration_codestringRequiredPairing/registration code from device.
reader_serial_numberstringRead-onlyDevice serial where available.
reader_statusenumRead-onlyonline/offline/unknown.

Devices

Read-only terminal/device records for fleet visibility.

GET/devices

Lists device rows.

GET/devices/{id}

Retrieves one device.

FieldTypeDescription
device_idstringInternal device ID.
reader_idstringLinked reader ID.
reader_serialstringSerial number.
reader_labelstringDisplay label.
statusenumDevice status.

NeroCard Cards

NeroCard card records are read-only in API v2 and are separate from payment cards.

GET/nerocards

Lists NeroCard cards.

GET/nerocards/{id}

Retrieves one NeroCard card.

FieldTypeDescription
cardholder_namestringCardholder name.
brandstringCard brand.
last4stringLast four digits.
statusenumactive, inactive, cancelled, blocked etc.
card_pinhiddenNever returned.

NeroCard Cardholders

Read NeroCard cardholder records.

GET/nerocardholders

Lists cardholders.

GET/nerocardholders/{id}

Retrieves one cardholder.

FieldTypeDescription
namestringCardholder name.
emailstringEmail.
phonestringPhone.
stripe_cardholder_idstringExternal cardholder identifier when present.
created_atdatetimeCreation time.

NeroCard Transactions

Read NeroCard issuing transactions separately from wallet and payment transactions.

GET/nerocard-transactions

Lists issuing/NeroCard transactions.

GET/nerocard-transactions/{id}

Retrieves one NeroCard transaction.

FieldTypeDescription
stripe_issuing_transaction_idstringExternal issuing transaction ID.
merchant_namestringMerchant name on the card transaction.
amountdecimalTransaction amount.
merchant_amountdecimalOriginal merchant amount where different.
platform_fee_amountdecimalPlatform fee amount if applied.
net_amountdecimalNet ledger amount.
statusenumpending, posted, reversed etc.
typeenumpurchase, refund, adjustment etc.

Customers

Create and manage NeroPOS/NeroPay customer records.

GET/customers

Lists customers.

POST/customers

Creates a customer.

GET/customers/{id}

Retrieves one customer.

PATCH/customers/{id}

Updates a customer.

FieldTypeRequiredDescription
namestringRequiredCustomer name.
emailstringOptionalEmail.
phonestringOptionalPhone.
postcodestringOptionalPostcode.
address1/address2stringOptionalAddress lines.
citystringOptionalCity.
instructionstextOptionalDelivery or customer notes.

Categories & Products

Keep product catalogue data in sync for NeroPOS and NeroWeb menus.

GET/categories

Lists categories.

POST/categories

Creates category.

PATCH/categories/{id}

Updates category.

DELETE/categories/{id}

Deletes category where enabled.

GET/products

Lists products.

POST/products

Creates product.

PATCH/products/{id}

Updates product.

DELETE/products/{id}

Deletes product where enabled.

Product fieldTypeRequiredDescription
category_idintegerOptionalCategory ID.
namestringRequiredProduct name.
skustringOptionalSKU.
pricedecimalRequiredProduct price.
vat_ratedecimalOptionalVAT rate.
image_urlstringOptionalImage URL.
stock_qtyintegerOptionalStock quantity.
descriptiontextOptionalProduct description.

Product Options & Rules

Manage product-specific options and global option groups for POS and online ordering.

GET/product-option-groups

Lists product option groups.

POST/product-option-groups

Creates product option group.

GET/product-options

Lists product options.

POST/product-options

Creates product option.

GET/global-option-groups

Lists global option groups.

POST/global-option-groups

Creates global option group.

GET/global-option-items

Lists global option items.

POST/global-option-items

Creates global option item.

GET/global-option-assignments

Lists assignments.

POST/global-option-assignments

Creates assignment.

GET/product-option-rules

Alias for assignments/rules.

FieldTypeDescription
namestringOption or group name.
requiredbooleanRequire selection.
min_select / max_selectintegerSelection limits.
price_deltadecimalPrice change for selected item.
rules_jsonobjectRule configuration.
scope / scope_idenum/integerWhere a global option applies.

Tables & Areas

Manage table maps, areas and table status for dine-in flows.

GET/table-areas

Lists table areas.

POST/table-areas

Creates table area.

GET/tables

Lists tables.

POST/tables

Creates table.

PATCH/tables/{id}

Updates table.

DELETE/tables/{id}

Deletes table where enabled.

FieldTypeDescription
area_idintegerArea ID.
name / labelstringDisplay name.
seatsintegerSeat count.
statusenumavailable, occupied, reserved etc.
x,y,w,h,rotationdecimal/integerTable-map coordinates.

Cashiers, Registers & Staff

Manage POS cashiers, registers, POS staff and team members.

GET/cashiers

Lists cashiers.

POST/cashiers

Creates cashier.

GET/registers

Lists registers.

POST/registers

Creates register.

GET/pos-staffs

Lists POS staff.

POST/pos-staffs

Creates POS staff.

GET/team-members

Lists merchant team members.

POST/team-members

Creates team member.

FieldTypeDescription
namestringStaff/cashier name.
email / usernamestringLogin identifier.
password / new_passwordstringAccepted on create/update but never returned.
roleenumRole/register type.
permissionsobject/arrayPermission payload.
location_ids / till_idsarrayAllowed locations or tills.

Invoices

Create and manage merchant invoices and invoice line items.

GET/invoices

Lists invoices.

POST/invoices

Creates invoice.

GET/invoices/{id}

Retrieves invoice.

PATCH/invoices/{id}

Updates invoice.

GET/invoice-items

Lists invoice items.

POST/invoice-items

Creates invoice item.

FieldTypeDescription
invoice_numberstringInvoice number.
invoice_tostringRecipient name.
invoice_emailstringRecipient email.
currency_idintegerCurrency ID.
sub_total / total_amountdecimalAmounts.
items_jsonobject/arrayLine items payload.
due_datedateDue date.
statusenumdraft, sent, paid etc.

NeroPOS Orders

NeroPOS order APIs are separate from NeroWeb orders and generic store orders.

GET/neropos-orders

Lists NeroPOS orders.

POST/neropos-orders

Creates NeroPOS order.

GET/neropos-orders/{id}

Retrieves order.

PATCH/neropos-orders/{id}

Updates order.

GET/neropos-order-items

Lists order items.

POST/neropos-order-items

Creates order item.

GET/orders

Generic orders resource.

GET/store-orders

Read-only NeroPay Store orders.

FieldTypeDescription
order_number / order_refstringOrder reference.
statusenumOrder status.
fulfilment_typeenumdine_in, takeaway, delivery etc.
payment_method / payment_statusenumPayment fields.
customer_*stringCustomer details.
subtotal, total, tip_feedecimalMoney fields.
location_id / table_id / staff_idintegerOperational links.
meta_jsonobjectExtra order metadata.

NeroPOS Payment Settings

Manage POS payment, tax, service fee, cashiers, tables and receipt defaults.

GET/payment-settings

Lists POS payment settings.

POST/payment-settings

Creates settings where no row exists.

GET/payment-settings/{id}

Retrieves settings.

PATCH/payment-settings/{id}

Updates settings.

FieldTypeDescription
default_tax_feedecimalDefault tax fee.
default_service_feedecimalDefault service fee.
default_tip_feedecimalDefault tip fee.
pos_mode / default_channelenumPOS operating mode.
enable_tables / enable_cashiersbooleanFeature toggles.
receipt_footer / receipt_logo_urltext/stringReceipt branding. Use receipt_logo_url for the logo image URL.
min_card_chargedecimalMinimum card charge.

NeroWeb Settings

Configure online ordering storefront settings separately from POS resources.

GET/neroweb-settings

Lists NeroWeb settings.

POST/neroweb-settings

Creates settings.

GET/neroweb-settings/{id}

Retrieves settings.

PATCH/neroweb-settings/{id}

Updates settings.

FieldTypeDescription
store_namestringOnline store name.
slugstringStore slug.
is_activebooleanEnable store.
disable_delivery / disable_collectbooleanFulfilment toggles.
enable_card / enable_cashbooleanPayment toggles.
working_hours_jsonobjectWorking hours.
delivery_bands_jsonobjectDelivery pricing/areas.
theme_jsonobjectBrand/theme settings, including logo_url.

NeroWeb Pages

Manage public pages used by the NeroWeb storefront builder.

GET/neroweb-pages

Lists pages.

POST/neroweb-pages

Creates page.

GET/neroweb-pages/{id}

Retrieves page.

PATCH/neroweb-pages/{id}

Updates page.

GET/nerowebpages

Legacy alias for pages.

FieldTypeDescription
titlestringPage title.
slugstringURL slug.
page_typeenumhome, content, legal etc.
is_home / is_published / show_in_navbooleanPage flags.
nav_label / nav_orderstring/integerNavigation settings.
html_content / content / css_contenttextPage content.
builder_jsonobjectBuilder state.
meta_title / meta_descriptionstring/textSEO metadata.

NeroWeb Orders

NeroWeb orders are separate from NeroPOS orders and store orders.

GET/neroweb-orders

Lists NeroWeb orders.

POST/neroweb-orders

Creates NeroWeb order.

GET/neroweb-orders/{id}

Retrieves order.

PATCH/neroweb-orders/{id}

Updates order.

GET/neroweb-order-items

Lists order items.

POST/neroweb-order-items

Creates order item.

FieldTypeDescription
order_refstringOrder reference.
statusenumOrder status.
fulfilment_typeenumdelivery, collect etc.
payment_method / payment_statusenumPayment fields.
subtotal_pence / total_penceinteger/decimalMoney fields.
customer_name / email / phonestringCustomer fields.
meta_jsonobjectExtra metadata.

Booking Settings

Booking settings are separate from booking transactions and should appear under the Booking menu.

GET/booking-settings

Lists booking settings.

POST/booking-settings

Creates booking settings.

GET/booking-settings/{id}

Retrieves booking settings.

PATCH/booking-settings/{id}

Updates booking settings.

FieldTypeDescription
booking_company_namestringBooking brand/company name.
booking_typeenumBooking mode/type.
weekly_hoursobjectWeekly opening hours.
auto_approve_bookingbooleanAuto approve bookings.
slot_durationintegerMinutes per slot.
max_bookings_per_slot / max_guestsintegerCapacity.
servicesobject/arrayBookable services.
holiday_daysarrayClosed dates.
staff_enabled / staffboolean/objectStaff booking assignment.

Bookings

Create and manage booking transactions.

GET/bookings

Lists bookings.

POST/bookings

Creates booking.

GET/bookings/{id}

Retrieves booking.

PATCH/bookings/{id}

Updates booking.

FieldTypeRequiredDescription
booking_datedateRequiredBooking date.
booking_timetimeRequiredBooking time.
guest_countintegerOptionalGuests.
servicestringOptionalService name.
amountdecimalOptionalBooking amount.
staff_id / staff_nameinteger/stringOptionalStaff assignment.
location_idintegerOptionalLocation.
customer_name / phone / emailstringRequiredCustomer details.
customer_notetextOptionalCustomer note.
statusenumOptionalpending, 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.

POST/identity/verification-links

Creates a document verification link.

GET/identity/verification-sessions

Lists verification sessions.

GET/identity/verification-sessions/{id}

Retrieves one verification session.

FieldTypeRequiredDescription
typeenumOptionaldocument or supported verification type.
return_urlstringOptionalWhere the user should return after verification.
first_name / last_namestringOptionalPrefill name if known.
countryenumOptionalISO country code.
metadataobjectOptionalDeveloper metadata.
NeroPay should not expose the underlying verification provider in your customer-facing copy. Use the returned 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.

GET/compliance/requests

Lists compliance document requests.

GET/compliance/requests/{id}

Retrieves one compliance request.

POST/compliance/requests/{id}/documents

Uploads requested compliance documents.

FieldTypeRequiredDescription
document_filefileRequiredRequested file.
document_typestringOptionalType requested by staff/compliance.
notestextOptionalMerchant or platform notes.
metadataobjectOptionalOptional developer metadata.
Compliance is not NeroConnect-only. If a direct merchant uses API v2, the same endpoints can be used for document request fulfilment. Webhooks notify document requested/submitted/approved/rejected.

Support Tickets

White-label support APIs allow a platform to create tickets for NeroPay staff while keeping the platform as the customer-facing brand.

GET/support/tickets

Lists tickets.

POST/support/tickets

Creates ticket.

GET/support/tickets/{id}

Retrieves ticket.

FieldTypeRequiredDescription
subjectstringRequiredTicket subject.
messagetextRequiredInitial message.
priorityenumOptionallow, normal, high, urgent.
categorystringOptionalSupport category.
attachments[]fileOptionalOptional files where supported. Max 2mb. PNG, JPG, WEBP or PDF
When NeroPay answers a ticket, your platform can receive 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.

GET/webhooks

Lists configured endpoints.

GET/webhook-deliveries

Lists 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
FieldTypeDescription
idstringWebhook event ID.
typeenumEvent type.
created_atdatetimeEvent creation time.
accountobjectMerchant or connected account payload.
dataobjectEvent-specific payload.
signaturestringUse your endpoint signing secret where configured.
If the platform handles email/SMS, NeroPay skips delegated merchant-facing messages and publishes webhooks so the platform can send branded communication.

Sandbox

Sandbox write endpoints under /sandbox return realistic JSON and do not create live payment, terminal, payout or local records.

POST/sandbox/hosted-payments

Dry-run hosted payment.

POST/sandbox/payment-intents

Dry-run payment intent.

POST/sandbox/terminal/payments

Dry-run terminal payment.

POST/sandbox/payment-links

Dry-run payment link.

POST/sandbox/terminal/locations

Dry-run terminal location.

POST/sandbox/terminal/readers

Dry-run reader registration.

POST/sandbox/bank-accounts

Dry-run bank account.

POST/sandbox/payouts

Dry-run payout.

PATCH/sandbox/payout-schedule

Dry-run schedule update.

POST/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

accountconnected-accountsbalancesbalanceapi-logs

Payments

hosted-paymentspaymentspayment-intentspayment-linkstransactionstransaction proof

Money Movement

wallet-transactionspayoutspayout-scheduletransfer-scheduledisputesloans

NeroDisburse

bank-accountsnerodisburse/bank-accountsnerodisburse/payoutsnerodisburse/paymentsnerodisburse-bank-accountsnerodisburse-payoutsnerodisburse-payments

Terminal

terminal/paymentslocationsterminal/locationsreadersterminal/readersdevices

NeroCard

nerocardsnerocardholdersnerocard-transactions

NeroPOS

customerscategoriesproductsproduct-option-groupsproduct-optionsglobal-option-groupsglobal-option-itemsglobal-option-assignmentsproduct-option-rulescashiersregisterspos-staffsteam-memberstablestable-areasinvoicesinvoice-itemsordersneropos-ordersneropos-order-itemspayment-settings

NeroWeb

neroweb-settingsneroweb-pagesnerowebpagesneroweb-ordersneroweb-order-itemsstore-orders

Bookings

booking-settingsbookings

Risk & Ops

identity/verification-linksidentity/verification-sessionscompliance/requestssupport/ticketswebhookswebhook-deliveries
Direct aliases such as /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.