NeroPay logoAPI
2026-05 latest v2PaymentsResourcesDocs
NeroPay API v2

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.

/v2Live base path
HMACSigned writes
ProductsPayment, POS, Web, Card, Trade, 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.

NeroTrade errors

HTTPCodeMeaning
402nerotrade_subscription_requiredNeroTrade is not active for this account. Activate the NeroTrade plan before calling NeroTrade endpoints.
404endpoint_not_foundThe requested NeroTrade API path under https://eu.neropay.app/v2/nerotrade was not found.
404unknown_nerotrade_resourceThe requested NeroTrade resource name is not recognised.
404resource_unavailableThe requested NeroTrade table or resource is not available on this installation.
404not_foundThe requested NeroTrade record was not found for this merchant.
404customer_not_foundThe trade account supplied for an invoice, delivery, payment or statement could not be found.
404invoice_not_foundThe invoice supplied for a payment could not be found.
405use_productsInventory records should be created as products first, then stock can be updated through the inventory endpoint.
422empty_payloadNo writable NeroTrade fields were supplied for an update request.
422validation_errorA required field is missing or a supplied field is invalid.
503nerotrade_schema_missingNeroTrade database tables are not installed or the NeroTrade SQL update has not been applied.

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, create connected merchants and manage core NeroConnect 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.

GET response attributes

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.
POST/connected-accounts

Creates 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

FieldTypeRequiredDescription
business_company_namestringRequiredCompany or trading name for the connected merchant.
firstnamestringRequiredAuthorised representative first name.
lastnamestringRequiredAuthorised representative last name.
emailemailRequiredPrimary email for the connected merchant.
country_codeenumRequiredSupported NeroPay country code such as GB. Must be selected from the supported-country list, not typed freely.
mobile_codestringRequiredDial code for the selected country, for example 44 for GB. Should be supplied from the supported-country list.
mobilestringRequiredRepresentative or merchant contact mobile number.
business_typeenumRequiredBusiness structure such as company, individual or sole_trader where supported.
nationalityenumRequiredRepresentative nationality country code from the supported-country list.
company_registration_numberstringRequired for companiesCompany registration number where the business type requires it.
representative_job_titlestringRequiredRole/title of the authorised representative, for example Director.
rep_is_directorbooleanRequiredConfirms whether the representative is a company director.
rep_is_executivebooleanRequiredConfirms whether the representative is an executive/control person.
rep_is_ownerbooleanRequiredConfirms whether the representative is an owner.
rep_ownership_percentnumberRequired when ownerOwnership percentage, for example 100.
company_declarationbooleanRequiredConfirms the company declaration has been accepted.
addressstringRequiredRegistered or trading address line.
citystringRequiredCity/town.
postcodestringRequiredPostcode.
dobdateRequiredRepresentative date of birth in YYYY-MM-DD format.
industrystringRequiredIndustry/MCC-style code accepted by NeroPay onboarding.
merchant_website_or_product_descriptiontextRequiredWebsite URL or clear description of the products/services sold.
terms_acceptedbooleanRequiredMust be true. API-created connected accounts are not created without terms acceptance.
terms_accepted_atdatetimeRequiredTime the connected merchant/authorised person accepted the terms.
terms_ipipRequiredIP address captured when terms were accepted.
legal_namestringRequiredAuthorised legal name used to generate the stored electronic signature when a PNG signature is not supplied.
signature_png_base64string|nullOptionalBase64 PNG signature. If omitted, NeroPay stores a generated typed-signature image from legal_name.
neroconnect_email_sms_handleenumOptionalneropay or platform. Controls who handles merchant-facing email/SMS communication.
metadataobjectOptionalPlatform reference data, external IDs or onboarding notes.
Activation reminder: creating a connected account does not complete onboarding. After creation, create an Identity verification link through the NeroPay API, ensure the merchant adds a business bank account, monitor KYC/compliance webhooks and use the Compliance Proof API for proof or document requests before treating the account as fully ready.
Legal acceptance is required: API-created connected accounts must include terms acceptance and an authorised legal name or signature. If terms_accepted is not true, or the legal acceptance data is missing, the account is not created.
GET/connected-accounts/{account_id}

Retrieves one connected merchant.

PATCH/connected-accounts/{account_id}

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

PATCH /connected-accounts request attributes

FieldTypeRequiredDescription
business_company_namestringOptionalUpdates the connected merchant company/trading name.
mobilestringOptionalUpdates the connected merchant mobile number where allowed.
neroconnect_email_sms_handleenumOptionalneropay or platform.
neroconnect_statusenumOptionalDashboard/API operational status such as active, paused or review where enabled.
metadataobjectOptionalPlatform 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.

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, bank & complianceworkflowMust 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.
Activation reminder: connected accounts should not be treated as fully ready until KYC identity verification, business bank account setup, compliance requests and reserve/proof checks are clear. Partners can create identity verification links through the NeroPay API and should use the compliance proof endpoints whenever NeroPay requests supporting evidence.

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.

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.

POST/hosted-payments

Creates a hosted checkout URL for an order or invoice.

POST/payment-links

Creates a simple LinkPay checkout link when you only need a payment URL.

POST/terminal/payments

Sends an in-person card-present payment action to a terminal reader.

POST payment request attributes

FieldTypeRequiredDescription
identifierstringRequiredYour unique order, invoice or checkout reference.
amountdecimalRequiredPayment amount in major units, e.g. 15.99.
currencyenumRequiredCurrency such as GBP or EUR.
detailstextRequiredCustomer-facing or internal checkout description.
ipn_urlurlRequiredReceives payment success, failure or pending updates.
success_urlurlRequiredWhere the customer is returned after a successful payment.
cancel_urlurlRequiredWhere the customer is returned after cancellation.
customer_namestringRequiredCustomer name shown on the checkout record.
customer_emailemailRequiredCustomer email shown on the checkout record.
customer_phonestringOptionalCustomer phone number, if collected.
account_idstringPlatform onlyConnected merchant account for NeroConnect routing. You may also send the NeroPay-Account header.
connect_application_feedecimalOptionalPlatform fee charged for a connected account payment.
metadataobjectOptionalAdditional key/value data returned in responses and webhooks where supported.
Use hosted checkout by default: do not send card number, CVC, expiry date or cardholder payment details to the API. NeroPay-hosted checkout keeps sensitive card data outside your server.
NeroConnect routing: when a platform API key creates a checkout for a connected merchant, send NeroPay-Account or account_id with that connected merchant account on every request.
Hosted checkout is the recommended online payment flow: direct card payment creation is not part of the public API. Use /v2/hosted-payments for online checkout or /v2/payment-links for a simple payment link.
Contracts

Contracts API

Create merchant contracts, store contract rules, require full or deposit payments and send customers to a secure NeroPay contract review page.

GET/contracts

Lists contracts for the authenticated merchant or connected merchant when NeroPay-Account is supplied.

POST/contracts

Creates a contract with customer details, formatted content, signature rules and optional full or upfront payment.

GET/contracts/{id}

Retrieves one contract by internal ID or public contract reference where supported.

PATCH/contracts/{id}

Updates contract fields, customer details, signature rules, status or payment settings.

DELETE/contracts/{id}

Deletes an unpaid draft/sent contract where the merchant account is allowed to do so.

POST/contracts/{id}/payment-link

Creates a secure NeroPay checkout link for the required contract payment.

GET /contracts query attributes

FieldTypeRequiredDescription
statusenumOptionalFilter by draft, sent, signed, completed, cancelled or expired.
payment_statusenumOptionalFilter by not_required, unpaid, partially_paid, paid or failed.
qstringOptionalSearch contract reference, title, customer name or customer email.
pageintegerOptionalPagination page number.
per_pageintegerOptionalItems per page. Keep this sensible for dashboard performance.

GET /contracts response attributes

FieldTypeDescription
idintegerInternal contract ID.
contract_refstringMerchant-facing reference such as CTR-260612-ABC123.
public_urlurlSecure customer review/sign/payment page.
title, summary, content_htmlstring/htmlContract title, customer-facing summary and formatted contract content.
customer_* fieldsstringCustomer name, email, phone and address snapshot.
contract_amountdecimalTotal contract value.
payment_amountdecimalAmount due now if online payment is required.
statusenumCurrent lifecycle status.
payment_statusenumCurrent payment status.
signature_requiredbooleanWhether the customer must provide an electronic signature.
signed_atdatetimeSet when the customer signs/accepts the contract.

POST /contracts request attributes

FieldTypeRequiredDescription
titlestringRequiredContract title shown to the customer.
customer_namestringRequiredCustomer or business name.
customer_emailemailRequiredCustomer email address used for send/resend.
customer_phonestringOptionalCustomer phone number.
customer_addressstringOptionalBilling/service address snapshot.
currencyenumRequiredCurrency code such as GBP or EUR. You may also send currency_id.
contract_amountdecimalOptionalTotal contract value. Required if payment_mode=full.
show_contract_amountbooleanOptionalControls whether the total amount is shown in the public summary. If payment is required, the amount due now is always shown.
payment_requiredbooleanOptionalWhen true, the public contract page can show a Pay button.
payment_modeenumOptionalnone, full, deposit or custom. full collects the contract amount; deposit/custom collects deposit_amount.
deposit_amountdecimalOptionalUpfront amount due now when using deposit or custom.
signature_requiredbooleanOptionalRequire customer electronic signature before the contract is treated as signed.
customer_details_editablebooleanOptionalAllow the customer to correct their name, email, phone or address before signing.
content_htmlhtmlRequiredMain contract body. Script tags and inline event handlers are removed server-side.
summarystringOptionalShort customer-facing summary for the contract list and email.
expires_atdatetimeOptionalOptional expiry date/time for the public review link.
send_emailbooleanOptionalSend the contract email immediately after saving. Resend is rate-limited.
account_idstringPlatform onlyConnected merchant account for NeroConnect routing. You may also send the NeroPay-Account header.

PATCH /contracts/{id} request attributes

FieldTypeDescription
title, summary, content_htmlstring/htmlUpdate contract content while the contract is not completed/cancelled.
customer_name, customer_email, customer_phone, customer_addressstringUpdate customer details snapshot.
contract_amount, payment_required, payment_mode, deposit_amountdecimal/boolean/enumUpdate payment rules. Paid contracts cannot be changed in a way that breaks payment history.
signature_required, customer_details_editable, show_contract_amountbooleanUpdate customer signing and display rules.
statusenumdraft, sent, signed, completed, cancelled or expired.

POST /contracts/{id}/payment-link request attributes

FieldTypeRequiredDescription
success_urlurlOptionalWhere the customer is returned after payment. Defaults to the public contract page.
cancel_urlurlOptionalWhere the customer is returned after cancelling checkout.
metadataobjectOptionalExtra reference data stored against the payment request.
Payment routing: when a contract requires payment, 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.
HTML safety: send formatted HTML from your own editor, but never include scripts, external trackers or card data. The API sanitises unsafe HTML before it is shown to customers.
Invoices

Invoices API

Create professional merchant invoices with customer details, VAT lines, discounts, due dates and a secure NeroPay payment page.

GET/invoices

Lists invoices for the merchant or connected merchant account.

POST/invoices

Creates a professional invoice and returns the public payment/review URL.

GET/invoices/{id}

Retrieves one invoice with line items.

PATCH/invoices/{id}

Updates an unpaid invoice. Paid/refunded invoices are locked.

DELETE/invoices/{id}

Deletes a draft/unpaid invoice where no payment has been recorded.

GET /invoices query attributes

FieldTypeRequiredDescription
statusenumOptionalFilter by draft, unpaid, paid, cancelled, refunded or your configured invoice status.
qstringOptionalSearch invoice number, customer name, email or reference.
date_from / date_todateOptionalLimit by invoice creation date or issue date.
page / per_pageintegerOptionalPagination controls.

GET /invoices response attributes

FieldTypeDescription
idintegerInternal invoice ID.
invoice_numberstringMerchant/customer-facing invoice number.
public_urlurlPublic invoice review and payment page.
invoice_to, email, addressstringCustomer billing details.
items[]arrayInvoice line items with name, quantity, unit amount, VAT and row total.
subtotal_amount, vat_amount, discount_amount, shipping_amount, total_amountdecimalCalculated invoice totals.
payment_required, partial_payment_allowed, deposit_amountboolean/decimalPayment collection settings.
status, paid_atenum/datetimeCurrent invoice status and payment timestamp when available.

POST /invoices request attributes

FieldTypeRequiredDescription
invoice_tostringRequiredCustomer or company name.
emailemailRequiredCustomer email address.
addressstringRequiredCustomer billing address.
invoice_titlestringOptionalShort title/subject for the invoice.
referencestringOptionalYour internal reference.
po_numberstringOptionalCustomer purchase order number.
currencystringOptionalCurrency code such as GBP. You may send currency_id instead.
items[]arrayRequiredEach item requires name and unit_amount. qty, description and vat_rate are optional.
discount_amountdecimalOptionalFlat invoice discount.
shipping_amountdecimalOptionalShipping, delivery or service amount added to the invoice.
due_datedateOptionalInvoice due date.
payment_requiredbooleanOptionalWhen true, the public invoice includes NeroPay checkout.
partial_payment_allowedbooleanOptionalAllows the customer to pay a deposit/partial amount first.
deposit_amountdecimalOptionalDeposit or upfront amount when partial payments are allowed.
invoice_notetextOptionalCustomer-facing invoice note.
footer_notetextOptionalOptional footer shown on the invoice.
send_emailbooleanOptionalSend the invoice email after creation.
account_idstringPlatform onlyConnected merchant account for NeroConnect routing.

PATCH /invoices/{id} request attributes

FieldTypeDescription
invoice_to, email, address, invoice_title, reference, po_numberstringUpdate customer and reference details.
items[]arrayReplace line items and recalculate totals. Paid/refunded invoices are locked.
discount_amount, shipping_amount, due_datedecimal/dateUpdate invoice totals and due date.
payment_required, partial_payment_allowed, deposit_amountboolean/decimalUpdate payment collection rules before payment is recorded.
statusenumUpdate status only where allowed by the invoice lifecycle.
Safety: paid and refunded invoices cannot be edited through API v2. Provider errors are logged server-side and returned as NeroPay-safe messages.
Subscriptions

Subscriptions API

Create recurring customer subscription checkout links from API v2, using an existing subscription price or a supplied amount, currency and interval.

GET/subscriptions

Lists subscriptions created for the merchant account.

POST/subscriptions

Creates a subscription request and returns checkout and portal URLs.

GET/subscriptions/{id}

Retrieves one subscription.

PATCH/subscriptions/{id}

Updates customer snapshot or status where the subscription is not cancelled/expired.

DELETE/subscriptions/{id}

Cancels or removes a subscription request where allowed.

GET /subscriptions query attributes

FieldTypeRequiredDescription
statusenumOptionalFilter by pending, active, past_due, cancelled or expired.
qstringOptionalSearch customer name, email, subscription reference or product name.
page / per_pageintegerOptionalPagination controls.

GET /subscriptions response attributes

FieldTypeDescription
idinteger/stringSubscription ID or reference.
customer_name, customer_emailstringCustomer snapshot.
product_namestringSubscription product/service name.
amount, currency, interval, quantitydecimal/stringRecurring charge details.
trial_daysintegerTrial period before the first charge.
checkout_urlurlCustomer checkout/start URL.
portal_urlurlCustomer management/cancellation URL where available.
statusenumCurrent subscription status.

POST /subscriptions request attributes

FieldTypeRequiredDescription
customer_namestringRequiredCustomer name.
customer_emailemailRequiredCustomer email address.
customer_phonestringOptionalCustomer phone number.
product_namestringRequired without price_idName shown to the customer and on subscription records.
price_idstringOptionalExisting merchant subscription price ID.
amountdecimalRequired without price_idRecurring amount when creating from API payload.
currencystringRequired without price_idCurrency code such as GBP.
intervalenumRequired without price_idday, week, month or year.
quantityintegerOptionalSubscription quantity. Defaults to 1.
trial_daysintegerOptionalTrial period before first charge.
start_datedateOptionalRequested subscription start date where supported.
metadataobjectOptionalYour own reference data.
account_idstringPlatform onlyConnected merchant account for NeroConnect routing.

PATCH /subscriptions/{id} request attributes

FieldTypeDescription
customer_name, customer_email, customer_phonestringUpdate customer snapshot where the subscription can still be edited.
statusenumUpdate/cancel where allowed by lifecycle rules.
metadataobjectReplace or update stored metadata.
Account readiness: subscription checkout requires the merchant account to be active and connected. Provider errors are logged server-side and returned as NeroPay-safe messages.

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.

Note: for new online checkout integrations, use POST /hosted-payments or POST /payment-links. The transaction table below describes transaction records returned by list/retrieve/refund/cancel flows.
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.

Transaction response attributes

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.

POST proof upload request attributes

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.

Balance response attributes

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.

Wallet ledger response attributes

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.

POST/PATCH payout request attributes

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.

Dispute response attributes

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.

Loan response attributes

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.

POST bank-account request attributes

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.

POST payout request attributes

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.

POST terminal payment request attributes

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.

POST/PATCH location request attributes

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.

POST reader registration request attributes

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.

Device response attributes

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.

Card response attributes

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.

Cardholder response attributes

FieldTypeDescription
namestringCardholder name.
emailstringEmail.
phonestringPhone.
neropay_cardholder_idstringNeroPay 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.

NeroCard transaction response attributes

FieldTypeDescription
neropay_issuing_transaction_idstringNeroPay 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.

NeroTrade API

NeroTrade API v2 lets eligible merchants create, retrieve, list and update wholesale trade records from their own systems.

Subscription required: NeroTrade endpoints require an active NeroTrade subscription and return 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 } }.

GET/nerotrade/dashboard

Returns NeroTrade summary, subscription status, stock alerts and operational totals.

GET/nerotrade/{resource}

Lists supported NeroTrade records for the authenticated merchant.

POST/nerotrade/{resource}

Creates a supported NeroTrade record where the resource supports creation.

GET/nerotrade/{resource}/{id}

Retrieves one supported NeroTrade record.

PATCH/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.

GET/nerotrade/trade-accounts

Lists trade accounts. Alias: /nerotrade/customers.

POST/nerotrade/trade-accounts

Creates a trade account.

GET/nerotrade/trade-accounts/{id}

Retrieves one trade account.

PATCH/nerotrade/trade-accounts/{id}

Updates account details, limits, terms, collection method or supply status.

POST/PATCH trade account request attributes

FieldTypeDescription
business_namestringRequired on create. Trade customer business name.
contact_namestringMain contact name.
emailstringBilling or account email.
phonestringContact phone number.
billing_addressstringBilling address.
delivery_addressstringDefault delivery address.
payment_termsenumcod, 7_days, 14_days, 30_days, weekly or monthly.
credit_limitdecimalApproved trade account credit limit.
opening_balancedecimalOptional opening balance on create.
collection_methodenumCollection preference such as payment_link or bank_transfer.
risk_statusstringInternal account risk label, for example good or watch.
stop_supplybooleanStops supply for the account when true.

NeroTrade Products & Pricing

Manage trade product categories, SKUs, wholesale pricing, VAT settings and stock-tracked product records.

GET/nerotrade/product-categories

Lists trade product categories. Alias: /nerotrade/categories.

POST/nerotrade/product-categories

Creates a product category.

PATCH/nerotrade/product-categories/{id}

Updates a product category.

GET/nerotrade/products

Lists trade products and pricing.

POST/nerotrade/products

Creates a trade product.

GET/nerotrade/products/{id}

Retrieves one trade product.

PATCH/nerotrade/products/{id}

Updates product details, stock settings or pricing.

POST/PATCH product and pricing request attributes

FieldTypeDescription
namestringRequired product name.
base_unitstringRequired unit such as pcs, box, case or pallet.
unit_pricedecimalRequired default trade unit price.
category_idintegerLinked NeroTrade product category.
category_namestringCreates or links a category by name when supplied.
skustringStock keeping unit.
descriptionstringProduct description.
vat_ratedecimalVAT rate applied to the product.
vat_includedbooleanWhether price includes VAT.
track_stockbooleanEnables inventory tracking for the product.
stock_qtydecimalCurrent available stock.
reorder_leveldecimalManual reorder threshold.
preferred_supplierstringSupplier reference.

NeroTrade Inventory

Read stock-tracked products and update stock quantity, reorder level, supplier and active status.

GET/nerotrade/inventory

Lists products where stock tracking is enabled.

GET/nerotrade/inventory/{id}

Retrieves one stock-tracked product.

PATCH/nerotrade/inventory/{id}

Updates stock quantity, reorder level, preferred supplier or active status.

Create inventory items by creating products with track_stock enabled. Stock fields can then be updated through the inventory endpoint.

PATCH inventory request attributes

FieldTypeDescription
track_stockbooleanEnables stock tracking.
stock_qtydecimalCurrent stock quantity.
reorder_leveldecimalManual reorder threshold.
preferred_supplierstringSupplier reference.
activebooleanWhether 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.

GET/nerotrade/drivers

Lists delivery drivers.

POST/nerotrade/drivers

Creates a driver record.

GET/nerotrade/drivers/{id}

Retrieves one driver record.

PATCH/nerotrade/drivers/{id}

Updates driver details or active status.

GET/nerotrade/deliveries

Lists deliveries and delivery notes.

POST/nerotrade/deliveries

Creates a delivery record.

GET/nerotrade/deliveries/{id}

Retrieves one delivery record with items.

PATCH/nerotrade/deliveries/{id}

Updates delivery status, driver, proof name, notes or line items.

POST/PATCH driver and delivery request attributes

FieldTypeDescription
customer_idintegerRequired linked trade account.
driver_idintegerAssigned driver.
delivery_numberstringOptional delivery reference. Generated if omitted.
statusenumscheduled, delivered, invoiced, failed or cancelled.
delivered_atdatetimeDelivery timestamp.
proof_namestringRecipient name for proof of delivery.
create_invoicebooleanCreates an invoice from the delivery items when true.
itemsarrayLine 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.

GET/nerotrade/invoices

Lists trade invoices.

POST/nerotrade/invoices

Creates a trade invoice with line items.

GET/nerotrade/invoices/{id}

Retrieves one trade invoice with items and payments.

PATCH/nerotrade/invoices/{id}

Updates invoice status, dates, terms, collection method, notes or items.

GET/nerotrade/collections

Lists collection/payment records. Alias: /nerotrade/payments.

POST/nerotrade/collections

Creates a collection/payment record.

PATCH/nerotrade/collections/{id}

Updates collection amount, method, invoice link, paid date or reference.

POST/PATCH invoice and collection request attributes

FieldTypeDescription
customer_idintegerRequired linked trade account.
invoice_numberstringOptional merchant invoice reference. Generated if omitted.
statusenumsent, part_paid, paid, overdue or collection_failed.
issue_datedateInvoice issue date.
due_datedateInvoice due date. Calculated from terms if omitted.
payment_termsenumcod, 7_days, 14_days, 30_days, weekly or monthly.
collection_methodstringCollection preference.
itemsarrayLine items with item_name, quantity, unit, unit_price, vat_rate and optional product_id.
amountdecimalRequired collection amount.
methodstringRequired payment method for collections.
referencestringExternal collection reference.
paid_atdatetimePayment received timestamp.

NeroTrade Statements

Read statement-style account summaries, outstanding balances, invoices and payments for trade accounts.

GET/nerotrade/statements

Lists trade accounts in statement format. Use outstanding_only=1 to return accounts with balance due.

GET/nerotrade/statements/{customer_id}

Retrieves one trade account statement with invoices and payments.

Statement response attributes

Query / FieldTypeDescription
outstanding_onlybooleanOnly return trade accounts with outstanding balances.
limitintegerNumber of records to return. Maximum 100 for the list endpoint and 200 for invoice/payment lines.
customerobjectTrade account details.
summaryobjectCurrent balance, overdue balance, invoice count and payment count.
invoicesarrayRecent invoices for the trade account.
paymentsarrayRecent payment/collection records.

NeroTrade Sales & Marketing

Manage campaign records linked to trade accounts for merchant-supplied sales and marketing workflows.

GET/nerotrade/campaigns

Lists sales and marketing campaign records.

POST/nerotrade/campaigns

Creates a campaign record.

GET/nerotrade/campaigns/{id}

Retrieves one campaign record.

PATCH/nerotrade/campaigns/{id}

Updates campaign details, schedule or status.

POST/PATCH campaign request attributes

FieldTypeDescription
namestringRequired campaign name.
campaign_typestringRequired campaign type, for example promotion or retention.
channelenumRequired channel such as email, sms, phone, field_sales or manual.
target_segmentstringTarget segment. Defaults to all_trade_accounts.
statusenumdraft, scheduled, active, completed or cancelled.
messagestringMerchant-supplied campaign message or note.
scheduled_atdatetimeOptional scheduled time.

NeroTrade Routes & Tracking

Create delivery route plans and update driver check-in records.

GET/nerotrade/route-plans

Lists planned routes. Alias: /nerotrade/routes.

POST/nerotrade/route-plans

Creates a route plan.

GET/nerotrade/route-plans/{id}

Retrieves one route plan.

PATCH/nerotrade/route-plans/{id}

Updates route name, date, status, driver, vehicle or notes.

GET/nerotrade/driver-checkins

Lists driver tracking/check-in records.

POST/nerotrade/driver-checkins

Creates a driver check-in record.

PATCH/nerotrade/driver-checkins/{id}

Updates a driver check-in record.

POST/PATCH route request attributes

FieldTypeDescription
route_namestringRequired route name.
driver_idintegerAssigned driver.
route_datedateRoute date. Defaults to today when omitted.
statusenumplanned, in_progress, completed or cancelled.
vehicle_registrationstringVehicle registration.
start_areastringRoute start area.
end_areastringRoute end area.
estimated_stopsintegerEstimated stop count.
estimated_valuedecimalEstimated route value.
checkin_typeenumRequired check-in type such as start_route, delivery_stop, issue or end_route.
latitude / longitudedecimalOptional GPS coordinates.

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.

POST/PATCH customer request attributes

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.

POST/PATCH category and product request attributes

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.

POST/PATCH option request attributes

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.

POST/PATCH table and area request attributes

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.

POST/PATCH staff request attributes

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.

POST/PATCH invoice request attributes

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.

POST/PATCH order request attributes

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.

POST/PATCH payment settings request attributes

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.

POST/PATCH NeroWeb settings request attributes

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.

POST/PATCH NeroWeb page request attributes

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.

POST/PATCH NeroWeb order request attributes

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.

POST/PATCH booking settings request attributes

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.

POST/PATCH booking request attributes

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.

POST identity verification-link request attributes

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.

POST compliance document request attributes

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.

POST support ticket request attributes

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

Webhook response attributes

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

POST/sandbox/payment-links

Dry-run LinkPay payment link.

POST/sandbox/terminal/payments

Dry-run terminal payment.

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

accountconnected-accountsbalancesbalanceapi-logs

Payments

hosted-paymentspayment-linkscontractsinvoicessubscriptionstransactionstransaction 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

NeroTrade

nerotrade/trade-accountsnerotrade/product-categoriesnerotrade/productsnerotrade/inventorynerotrade/driversnerotrade/deliveriesnerotrade/invoicesnerotrade/collectionsnerotrade/statementsnerotrade/campaignsnerotrade/route-plansnerotrade/driver-checkins

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, /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.