1. Payment Providers (PSPs)
Mozarto - The Payments Orchestration Platform
  • 1. Introduction
  • 2. Authentication
  • 3. Redirect API
    • Pay-In Flow
    • Pay-Out Flow
    • Webhook Setup
    • Country Codes
    • Errors
    • Payment Providers (PSPs)
      • Overview
      • Brite
      • CashLib
      • Cleo
      • Contiant
      • emerchantpay
      • Flexepin
      • ForumPay
      • Gigadat
      • Neosurf
      • OFApay
      • PawaPay
      • PayModum
      • PayOne
      • Trust Payments
      • Worldpay
    • Sample requests
      • Overview
      • Pay-In
        • Brite
        • CashLib
        • Cleo
        • Contiant
        • emerchantpay
        • Flexepin
        • Forumpay
        • Gigadat
        • Neosurf
        • OFApay
        • PawaPay
        • Paymodum
        • PayOne
        • Trust Payments
        • WorldPay
      • Pay-Out
        • Cleo
        • Forumpay
        • Gigadat withdraw ACH
        • Gigadat withdraw ETO
        • OFApay
        • PawaPay
        • PayOne
        • Trust Payments
      • Webhook
        • PayOne status webhook
        • ForumPay status webhook
  • 4. Hosted page API
    • Pay-In Flow
    • Webhook Setup
    • Country Codes
    • Errors
    • Payment Providers (PSPs)
      • emerchantpay
      • Worldpay
      • Overview
    • Sample requests
      • Overview
  • Schemas
    • TransactionData
  1. Payment Providers (PSPs)

Worldpay

Card payment processing for European markets. Supports hosted payment page (HPP) and direct card integration modes with optional tokenisation and FraudSight risk assessment.
Operations: Pay-In ✓ | Pay-Out - | Webhook ✓
Processing: Asynchronous - redirect to hosted page or direct card submission
Integration modes: HPP (default) | Direct
Fields marked with * are required.

Configuration (Mozarto back office)#

These fields are in the locked API Credentials section of the account's Processing Scope tab. Unlock it with your 2FA code first - see Unlock API credentials.
FieldDescription
accountName *Display name for this account
merchantCode *Worldpay merchant code
installationId *Worldpay installation ID
xmlUsername *Worldpay XML API username
xmlPassword *Worldpay XML API password
webhookUrl *Your HTTPS endpoint for transaction status updates
captureDelayDays before capture: DEFAULT, 0-14, or OFF (default: DEFAULT)
macSecretMAC secret for payment response verification
integrationMode"hpp" (default) or "direct"
tokenizationEnabledEnable card tokenisation (default: false)
siteUrlYour site URL - required for Mozarto to append result redirect URLs to the HPP link
hppPaymentMethodMaskRestrict which payment methods appear on the HPP

Pay-In#

POST /v1/api/mozarto/cashier

Request body#

FieldTypeDescription
pspType *stringAlways "WORLDPAY_EU"
type *stringAlways "PAYIN"
baseamount *numberAmount as a number (e.g. 150.00)
currency *stringCurrency code (e.g. "EUR", "GBP")
userId *stringYour internal user/player identifier
email *stringUser's email address
firstName *stringUser's first name
lastName *stringUser's last name
phone *stringPhone number (min 6 digits)
gender *stringUser's gender
dob *stringDate of birth in YYYY-MM-DD format (e.g. "1990-01-15")
country *stringPayer's country - full name, ISO 3166-1 alpha-2, or alpha-3 (e.g. "Germany", "DE", "DEU"). See Country codes. Matched against the account's Processing Scope, and converted to alpha-2 for Worldpay's billing/shipping address. Omit it and Mozarto geo-locates the caller's IP instead
kycVerified *booleanWhether user has passed KYC
blocked *booleanWhether user is blocked
isVelocity *booleanVelocity check flag
transactionCount *stringNumber of prior transactions
userBalance *numberUser's current balance
partnerName *stringPartner/operator name
emailVerification *stringVerified email address
verificationDate *stringDate email was verified in YYYY-MM-DD format (e.g. "2024-01-01")
bonusCodestringBonus code
tagsarrayTag list
address *objectSee address fields below
cardobjectCard details (for direct mode only)
integrationModestring"hpp" or "direct"
createTokenbooleanCreate a reusable card token
enableTokenizationbooleanEnable tokenisation for this transaction
deviceSessionIdstringDevice session ID (required for FraudSight direct)
fraudSightSessionIdstringFraudSight session ID
fraudSightDataobjectSee FraudSight fields below

Address fields#

FieldTypeDescription
address.line1 *stringStreet address line 1
address.line2stringStreet address line 2
address.line3stringStreet address line 3
address.city *stringCity
address.state *stringState or region
address.postalCode *stringPostal / ZIP code
address.country *stringCountry code

Card fields (direct mode only)#

FieldTypeDescription
card.pan *stringCard number (max 16 digits)
card.expiry *stringExpiry in "MM/YYYY" format
card.cvv *stringCVV (max 3 digits)
card.cardHolderName *stringCardholder name

FraudSight fields (optional)#

FieldTypeDescription
fraudSightData.shopperNamestringShopper's full name
fraudSightData.shopperIdstringYour internal shopper ID
fraudSightData.birthDateobject{ dayOfMonth, month, year }
fraudSightData.shopperAddressobjectShopper address for risk assessment

Example request (HPP mode)#

{
  "pspType": "WORLDPAY_EU",
  "type": "PAYIN",
  "baseamount": 150.00,
  "currency": "GBP",
  "userId": "user_123",
  "email": "player@example.com",
  "firstName": "John",
  "lastName": "Doe",
  "phone": "07700900123",
  "gender": "female",
  "dob": "1990-01-15",
  "country": "GB",
  "kycVerified": true,
  "blocked": false,
  "isVelocity": false,
  "transactionCount": "5",
  "userBalance": 500,
  "partnerName": "ExamplePartner",
  "emailVerification": "player@example.com",
  "verificationDate": "2024-01-01",
  "address": {
    "line1": "123 Main Street",
    "city": "London",
    "state": "England",
    "postalCode": "SW1A 1AA",
    "country": "GB"
  }
}

Response#

{
  "status": "success",
  "message": "Successfully",
  "isSuccess": true,
  "data": {
    "orderCode": "MZRT_64a1f2b3c4d5e6f7a8b9c0d1_1714000000000",
    "paymentUrl": "https://hpp.worldpay.com/app/hpp/integration/wpg/corporate?OrderKey=...",
    "transactionId": "64a1f2b3c4d5e6f7a8b9c0d1",
    "merchantReference": "",
    "amount": 10,
    "transaction_status": "Pending"
  }
}
Note: Worldpay uses data.paymentUrl - not data.url as returned by other providers. Update any redirect logic accordingly.
FieldDescription
data.paymentUrlHosted payment page URL - redirect the user here
data.transactionIdMozarto transaction ID - use for status queries and idempotency
data.orderCodeWorldpay order code in MZRT_{transactionId}_{timestamp} format
data.amountTransaction amount as a number
data.transaction_statusInitial status - always "Pending" on creation

Webhook#

Mozarto calls your webhookUrl when the transaction is processed. See Webhook Setup for the shared field reference.

Error codes#

Worldpay EU transport failures are mapped to normalized Mozarto errorCode values. Use errorCode for programmatic handling rather than parsing raw XML error strings.
Mozarto errorCodePSP raw signalWhen
PSP_NOT_CONFIGUREDMissing credentials in Mozarto back officexmlUsername, xmlPassword, or merchantCode not set for this brand
INVALID_PSP_CREDENTIALSHTTP 401 / 403, or body contains "Unauthorized", "Invalid credentials", or "authentication"XML credentials are wrong or expired
PSP_TIMEOUTHTTP 408, or response body contains "timeout"Worldpay did not respond in time - safe to retry
PSP_UNAVAILABLEHTTP 5xxWorldpay service error - safe to retry with backoff
PSP_RATE_LIMITEDHTTP 429Too many requests - retry after a delay
UNKNOWN_PSP_ERRORAny other HTTP error or XML validation failureFallback - check data for the raw Worldpay response and contact support if it persists
XML validation errors: Worldpay returns XML error responses for malformed requests (e.g. missing paymentMethodMask, invalid order structure). These produce UNKNOWN_PSP_ERROR unless the HTTP status code maps to a more specific code.
For the full list of errorCode values and retryability guidance, see Errors.
Modified at 2026-11-02 13:21:57
Previous
Trust Payments
Next
Overview
Built with