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)

ForumPay

ForumPay#

Global cryptocurrency payment gateway. Supports Pay-In and Pay-Out in BTC, ETH, USDT, and other cryptocurrencies configured in your ForumPay account.
Operations: Pay-In ✓ | Pay-Out ✓ | Webhook ✓
Processing: Asynchronous - redirect user to hosted page; final status via webhook
Fields marked with * are required.

Configuration (Mozarto back office)#

FieldDescription
username *ForumPay API username
password *ForumPay API password
forumpayUserId *Your ForumPay user/payer identifier - omitting this field causes ForumPay to reject all requests with "Payer ID is required"
webhookUrl *Your HTTPS endpoint for transaction status updates
isWebhookSecuredAdds Authorization header to outbound webhook calls

Pay-In#

POST /v1/api/mozarto/cashier
Required header: x-user-token: Bearer <user-jwt> must be sent with every Pay-In request. The value must be a valid decodable JWT - passing a plain string causes a timeout. See Authentication.

Request body#

FieldTypeDescription
pspType *stringAlways "FORUMPAY"
type *stringAlways "PAYIN"
baseamount *numberAmount as a number (e.g. 100.00)
currency *stringFiat currency (e.g. "EUR", "USD")
userId *stringYour internal user/player identifier
email *stringUser's email address
country *stringUser's country code (e.g. "DE")
brandIdstringBrand identifier for multi-brand setups

Example request#

{
  "pspType": "FORUMPAY",
  "type": "PAYIN",
  "baseamount": 100.00,
  "currency": "EUR",
  "userId": "user_123",
  "email": "player@example.com",
  "country": "DE"
}

Response#

{
  "status": "success",
  "isSuccess": true,
  "data": {
    "status": "PENDING",
    "url": "https://pay.forumpay.com/invoice/abc123xyz",
    "sessionId": "60a74038-5b94-427e-8cff-abc123"
  }
}
Open data.url in the user's browser. The user selects their cryptocurrency and completes payment on ForumPay's hosted page.

Pay-Out#

POST /v1/api/mozarto/cashier
Required header: x-user-token: Bearer <user-jwt> must be sent with every Pay-Out request. The value must be a valid decodable JWT. See Authentication.

Request body#

FieldTypeDescription
pspType *stringAlways "FORUMPAY"
type *stringAlways "PAYOUT"
baseamount *numberPay-Out amount as a number (e.g. 200.00)
currency *stringFiat currency the amount is denominated in
userId *stringYour internal user/player identifier
email *stringUser's email address
country *stringUser's country code
preferredCrypto *stringCryptocurrency to send - e.g. "BTC", "ETH", "USDT", "LTC"
walletAddress *stringDestination wallet address for the chosen cryptocurrency
brandIdstringBrand identifier

Example request#

{
  "pspType": "FORUMPAY",
  "type": "PAYOUT",
  "baseamount": 200.00,
  "currency": "EUR",
  "userId": "user_123",
  "email": "player@example.com",
  "country": "DE",
  "preferredCrypto": "BTC",
  "walletAddress": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh"
}

Response#

{
  "status": "success",
  "message": "Transaction is on hold",
  "isSuccess": true,
  "data": {
    "invoice_currency": "EUR",
    "invoice_amount": "10.00",
    "currency": "BTC",
    "payment_source": "cash",
    "wait_time": "20 minutes",
    "network_processing_fee": "0.00000966",
    "rate": "65419.3380",
    "amount_exchange": "0.00015286",
    "amount": 10,
    "fast_transaction_fee": "0.00002066",
    "fast_transaction_fee_currency": "BTC/kB",
    "payment_id": "badd0b52-110f-4be2-af64-59d7645796af",
    "reference_no": "69f332c3f6abfbeab46f98db",
    "address": "btc-1eda64a85da94d71a2ac5ed84e929553",
    "access_token": "<forumpay-access-token>",
    "transactionId": "69f332c3f6abfbeab46f98db",
    "merchantReference": ""
  }
}
FieldDescription
data.transactionIdMozarto transaction ID - use for status queries
data.payment_idForumPay internal payment identifier
data.reference_noForumPay reference number - matches transactionId
data.invoice_currencyThe fiat currency of the original request
data.invoice_amountThe fiat amount as a string
data.currencyThe cryptocurrency being sent (e.g. "BTC")
data.rateExchange rate at time of transaction creation
data.amount_exchangeEquivalent crypto amount to be transferred
data.network_processing_feeBlockchain network fee in crypto
data.fast_transaction_feeOptional fast transaction fee
data.wait_timeEstimated processing time
data.addressForumPay internal payout address reference
data.access_tokenForumPay session token - do not expose to end users
data.transaction_statusAlways "Pending" on creation
"Transaction is on hold": A message of "Transaction is on hold" with isSuccess: true means the payout was created successfully but requires manual approval in the Mozarto back office before ForumPay processes the transfer. Do not treat this as a failure. Show the user a "pending approval" message and wait for the webhook to deliver the final outcome (SUCCESS or REJECTED).

Webhook#

Mozarto calls your webhookUrl when the transaction state becomes confirmed or cancelled.
The method field in the webhook payload will be FORUMPAY_PAYIN or FORUMPAY_PAYOUT.
Note on duplicates: ForumPay may deliver multiple webhook callbacks for the same transaction. Implement idempotency on your side - check the current state of the transaction before applying any changes. See Webhook Setup.
Modified at 2026-05-08 07:49:00
Previous
Flexepin
Next
Gigadat
Built with