1. 7. Payment Providers (PSPs)
Mozarto - The Payments Orchestration Platform
  • 1. Introduction
  • 2. Quick Start
  • 3. Authentication
  • 4. Webhook Setup
  • 5. Errors
  • 6. Redirect flow
    • Pay-In Flow
    • Pay-Out Flow
  • 7. Payment Providers (PSPs)
    • Overview
    • Brite
    • Cleo
    • Flexepin
    • ForumPay
    • Gigadat
    • Neosurf
    • PayOne
    • Trust Payments
    • Worldpay
    • Emerchantpay
  • 8. Redirect Flow APIs
    • Redirect Flow APIs - overview
    • Pay-In
      • WorldPay
      • Forumpay
      • Payone
      • Gigadat
      • Flexepin
      • Trust
    • Pay-Out
      • Forumpay
      • Payone
      • Gigadat withdraw ETO
      • Gigadat withdraw ACH
    • Webhook
      • Payone status webhook
  • Schemas
    • TransactionData
  1. 7. 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)#

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
isWebhookSecuredAdds Authorization header to outbound webhook calls
hppLanguageLanguage for the HPP page (default: "en")
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")
countryCode *stringISO country code
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")
brandIdstringBrand identifier
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",
  "countryCode": "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.
The method field will be WORLDPAY_EU_PAYIN.

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 company
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-06-09 11:01:55
Previous
Trust Payments
Next
Emerchantpay
Built with