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)

Gigadat

Canadian payment network supporting bank e-transfers and ACH Pay-In/Pay-Out. All transactions are in CAD.
Operations: Pay-In ✓ | Pay-Out ✓ | Webhook ✓
Processing: Asynchronous - redirect user to hosted page; final status via webhook
Currency: CAD only
Fields marked with * are required.

Configuration (Mozarto back office)#

FieldDescription
accountName *Display name for this account
apiKey *Gigadat access token - used as Basic Auth username
secret *Gigadat security token - used as Basic Auth password
campaignId *Gigadat campaign ID
webhookUrlYour HTTPS endpoint for transaction status updates
isWebhookSecuredAdds Authorization header to outbound webhook calls

Pay-In#

POST /v1/api/mozarto/cashier

Request body#

FieldTypeDescription
pspType *stringAlways "GIGADAT"
type *stringAlways "PAYIN"
name *stringUser's full name (first and last)
email *stringUser's email address
phone *stringMobile number - 10 or 11 digits, no special characters (e.g. "5551234567")
baseamount *numberAmount with exactly 2 decimal places (e.g. 100.50)
userIp *stringEnd user's IP address
userIdstringYour internal user ID
brandIdstringBrand identifier
currencystringMust be "CAD" - Gigadat only processes Canadian dollars
merchantReferencestringYour own reference for this transaction
addressobjectUser address { line1, line2, city, state, postalCode, country }
countryCodestringISO country code
kycVerifiedbooleanWhether user has passed KYC
userBalancenumberUser's current balance
baseamount must have exactly 2 decimal places. 100 or 100.5 will be rejected - use 100.00 or 100.50.
Phone format: phone must contain digits only and resolve to exactly 10 digits (e.g. 5551234567) or 11 digits with a leading country code (e.g. 15551234567). Gigadat processes Canadian (NANP) numbers only. Values with a + prefix, spaces, dashes, or a non-NANP country code (for example a UK number such as +441234567890) are rejected. If you pass a user profile phone via the x-user-token, that value takes precedence, so it must also satisfy this rule.

Example request#

{
  "pspType": "GIGADAT",
  "type": "PAYIN",
  "name": "John Doe",
  "email": "anna@example.com",
  "phone": "5551234567",
  "baseamount": 100.50,
  "userIp": "1.2.3.4"
}

Response#

{
  "status": "success",
  "message": "Gigadat CPI payment initiated successfully",
  "isSuccess": true,
  "data": {
    "transactionId": "64a1f2b3c4d5e6f7a8b9c0d1",
    "databaseTransactionId": "64a1f2b3c4d5e6f7a8b9c0d1",
    "method": "GET_REDIRECT",
    "webflowURL": "https://interac.express-connect.com/webflow?transaction=64a1f2b3c4d5e6f7a8b9c0d1&token=<payment-token>",
    "formSubmissionURL": null,
    "instructions": "Use direct redirect to webflowURL",
    "paymentToken": "<payment-token>",
    "transaction_status": "Pending",
    "amount": 10,
    "merchantReference": "",
    "data": {
      "gigadatTransactionId": "64a1f2b3c4d5e6f7a8b9c0d1"
    }
  }
}
Note: Gigadat uses data.webflowURL - not data.url as returned by other providers. Follow data.instructions - for GET_REDIRECT redirect the user directly to data.webflowURL.
FieldDescription
data.webflowURLHosted payment page URL - redirect the user here
data.transactionIdMozarto transaction ID - use for status queries and idempotency
data.methodRedirect method - always "GET_REDIRECT" for Pay-In
data.paymentTokenGigadat session JWT - embedded in webflowURL, do not expose to end users
data.instructionsHuman-readable redirect instruction from Gigadat
data.transaction_statusInitial status - always "Pending" on creation
data.data.gigadatTransactionIdGigadat internal transaction ID

Pay-Out#

Gigadat supports two payout methods: ETO (e-transfer) and ACH (bank transfer).
POST /v1/api/mozarto/cashier

Request body - common fields#

FieldTypeDescription
pspType *stringAlways "GIGADAT"
type *stringAlways "PAYOUT"
payoutType *string"ETO" or "ACH"
name *stringUser's full name
email *stringUser's email address
baseamount *numberAmount with exactly 2 decimal places (e.g. 50.00)
currency *stringAlways "CAD"

ETO-specific fields#

FieldTypeDescription
mobile *stringUser's mobile number - digits only, exactly 10 (e.g. 5551234567) or 11 with a leading country code (e.g. 15551234567). No +, spaces, or dashes. Non-NANP numbers are rejected.

ACH-specific fields#

FieldTypeDescription
fi *stringFinancial Institution Number - exactly 3 digits
transit *stringTransit number - exactly 5 digits
acct *stringBank account number - 7 to 12 digits

Example - ETO payout#

{
  "pspType": "GIGADAT",
  "type": "PAYOUT",
  "payoutType": "ETO",
  "name": "John Doe",
  "email": "anna@example.com",
  "baseamount": 50.00,
  "currency": "CAD",
  "mobile": "5551234567"
}

Example - ACH payout#

{
  "pspType": "GIGADAT",
  "type": "PAYOUT",
  "payoutType": "ACH",
  "name": "John Doe",
  "email": "anna@example.com",
  "baseamount": 50.00,
  "currency": "CAD",
  "fi": "001",
  "transit": "12345",
  "acct": "1234567"
}

Response - ETO#

{
  "status": "success",
  "message": "Added to approvals table",
  "isSuccess": true,
  "data": {
    "transactionId": "64a1f2b3c4d5e6f7a8b9c0d1",
    "databaseTransactionId": "64a1f2b3c4d5e6f7a8b9c0d1",
    "payoutType": "ETO",
    "method": "AWAITING_APPROVAL",
    "webflowURL": "https://interac.express-connect.com/webflow?transaction=64a1f2b3c4d5e6f7a8b9c0d1&token=<payment-token>",
    "finalizationURL": "https://interac.express-connect.com/webflow/deposit?transaction=64a1f2b3c4d5e6f7a8b9c0d1&token=<payment-token>",
    "instructions": "Transaction created in Gigadat and added to approval queue. Finalization will occur after admin approval.",
    "paymentToken": "<payment-token>",
    "amount": 10,
    "merchantReference": "",
    "data": {
      "gigadatTransactionId": "64a1f2b3c4d5e6f7a8b9c0d1",
      "payoutType": "ETO"
    }
  }
}
Approval required: ETO payouts are not processed immediately. The method: "AWAITING_APPROVAL" indicates the payout is queued pending manual approval in the Mozarto back office. Show the user a "pending approval" message and wait for the webhook to deliver the final outcome.
FieldDescription
data.transactionIdMozarto transaction ID - use for status queries and idempotency
data.method"AWAITING_APPROVAL" - payout is queued for back office approval
data.webflowURLGigadat hosted flow URL - available after approval
data.finalizationURLFinalization URL used internally after admin approval
data.paymentTokenGigadat session JWT - do not expose to end users
data.instructionsHuman-readable status description
data.data.gigadatTransactionIdGigadat internal transaction ID

Response - ACH#

{
  "status": "success",
  "message": "Added to approvals table",
  "isSuccess": true,
  "data": {
    "transactionId": "64a1f2b3c4d5e6f7a8b9c0d1",
    "databaseTransactionId": "64a1f2b3c4d5e6f7a8b9c0d1",
    "payoutType": "ACH",
    "method": "AWAITING_APPROVAL",
    "webflowURL": "https://interac.express-connect.com/webflow?transaction=64a1f2b3c4d5e6f7a8b9c0d1&token=<payment-token>",
    "finalizationURL": "https://interac.express-connect.com/webflow/deposit?transaction=64a1f2b3c4d5e6f7a8b9c0d1&token=<payment-token>",
    "instructions": "Transaction created in Gigadat and added to approval queue. Finalization will occur after admin approval.",
    "paymentToken": "<payment-token>",
    "amount": 10,
    "merchantReference": "",
    "data": {
      "gigadatTransactionId": "64a1f2b3c4d5e6f7a8b9c0d1",
      "payoutType": "ACH"
    }
  }
}
Approval required: ACH payouts follow the same approval flow as ETO. The method: "AWAITING_APPROVAL" indicates the payout is queued pending manual approval in the Mozarto back office. Show the user a "pending approval" message and wait for the webhook to deliver the final outcome.
The response fields are identical to the ETO response above. The only difference is data.payoutType and data.data.payoutType will be "ACH".

Webhook#

Mozarto calls your webhookUrl when the transaction reaches a final state.
The method field will be GIGADAT_PAYIN or GIGADAT_PAYOUT.

Error codes#

Gigadat transport failures are mapped to normalized Mozarto errorCode values. Use errorCode for programmatic handling rather than parsing raw error strings.
Mozarto errorCodePSP raw signalWhen
PSP_NOT_CONFIGUREDMissing credentials in Mozarto back officeapiKey, secret, or campaignId not set for this company
INVALID_PSP_CREDENTIALSHTTP 401 / 403, or body contains "Invalid API credentials", "Invalid credentials", or "Unauthorized"API credentials are wrong or expired
PSP_NOT_CONFIGUREDBody contains "campaign not found"The configured campaignId does not exist in Gigadat
PSP_TIMEOUTHTTP 408, or response body contains "timeout"Gigadat did not respond in time - safe to retry
PSP_UNAVAILABLEHTTP 5xxGigadat service error - safe to retry with backoff
PSP_RATE_LIMITEDHTTP 429Too many requests - retry after a delay
UNKNOWN_PSP_ERRORHTTP 200 with data.error or data.errorcode setGigadat returned a business-level rejection (e.g. invalid user details, unsupported payout type) - check data.error and data.errorcode for the raw Gigadat reason
UNKNOWN_PSP_ERRORAny other unrecognised responseFallback - check data for the raw Gigadat response and contact support if it persists
Business rejections: Gigadat may return HTTP 200 with data.error and data.errorcode fields set when a transaction is rejected at the application layer. These produce UNKNOWN_PSP_ERROR. Inspect data.errorcode for the Gigadat-specific reason code.
For the full list of errorCode values and retryability guidance, see Errors.
Modified at 2026-06-09 11:01:55
Previous
ForumPay
Next
Neosurf
Built with