1. 6. Payment Providers (PSPs)
Mozarto - The Payments Orchestration Platform
  • 1. Introduction
  • 2. Quick Start
  • 3. Authentication
  • 4. Errors
  • 5. Redirect flow
    • Pay-In Flow
    • Pay-Out Flow
    • Webhook Setup
  • 6. Payment Providers (PSPs)
    • Overview
    • Brite
    • Cleo
    • Flexepin
    • ForumPay
    • Gigadat
    • Neosurf
    • Payone
    • Trust Payments
    • WorldPay
  • 7. Redirect Flow APIs
    • PayIn
      • Forumpay
      • Payone
    • PayOut
      • Forumpay
      • Payone
  • Schemas
    • TransactionData
  1. 6. Payment Providers (PSPs)

WorldPay

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.name_on_card *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.
Modified at 2026-05-08 07:50:36
Previous
Trust Payments
Next
Forumpay
Built with