Prepaid voucher payment method. The user is redirected to Neosurf's hosted page to redeem their voucher — no bank account or card required.Operations: Pay-In ✓ | Pay-Out - | Webhook ✓ Processing: Asynchronous - redirect user to Neosurf's hosted page; final status via webhook Payment type: Prepaid voucherFields marked with * are required.
Redirect the user to data.url — Neosurf's hosted page where they enter their voucher. The transaction stays PENDING until the final status arrives via the webhook.
Field
Description
data.url
Neosurf hosted payment page - redirect the user here
data.transactionId
Mozarto transaction ID - use for status queries and idempotency
data.amount
Transaction amount as a number
data.merchantReference
Your reference, echoed back - empty string if not set
Neosurf notifies Mozarto once the voucher is redeemed; Mozarto verifies the signature (hash) and then calls your configured webhookUrl. The method field will be NEOSURF_PAYIN.
Neosurf transport failures are mapped to normalized Mozarto errorCode values. Use errorCode for programmatic handling rather than parsing raw response fields.
Mozarto errorCode
PSP raw signal
When
INVALID_PSP_CREDENTIALS
HTTP 404 / 401 / 403
API key, merchant ID, or site URL is missing or rejected by Neosurf
PSP_TIMEOUT
HTTP 408 or response body contains "timeout"
Neosurf did not respond in time - safe to retry
PSP_UNAVAILABLE
HTTP 5xx
Neosurf service error - safe to retry with backoff
PSP_RATE_LIMITED
HTTP 429
Too many requests - retry after a delay
UNKNOWN_PSP_ERROR
Any other response
Unrecognised error - check data.error for the raw message and contact support if it persists
Voucher-level rejections (invalid voucher, declined amount) are returned by Neosurf with an HTTP 200 and a populated data.error / data.errorcode; these surface in the standard error response with the raw message.For the full list of errorCode values and retryability guidance, see Errors.