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 onlyFields 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.
| Field | Description |
|---|
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 |
webhookUrl | Your HTTPS endpoint for transaction status updates |
Pay-In#
POST /v1/api/mozarto/cashier
Request body#
| Field | Type | Description |
|---|
pspType * | string | Always "GIGADAT" |
type * | string | Always "PAYIN" |
name * | string | User's full name (first and last) |
email * | string | User's email address |
phone * | string | Mobile number - 10 or 11 digits, no special characters (e.g. "5551234567") |
baseamount * | number | Amount with exactly 2 decimal places (e.g. 100.50) |
userIp * | string | End user's IP address |
userId | string | Your internal user ID |
currency | string | Must be "CAD" - Gigadat only processes Canadian dollars |
merchantReference | string | Your own reference for this transaction |
address | object | User address { line1, line2, city, state, postalCode, country } |
country * | string | Payer'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. Omit it and Mozarto geo-locates the caller's IP instead |
kycVerified | boolean | Whether user has passed KYC |
userBalance | number | User'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,
"country": "CA",
"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.
| Field | Description |
|---|
data.webflowURL | Hosted payment page URL - redirect the user here |
data.transactionId | Mozarto transaction ID - use for status queries and idempotency |
data.method | Redirect method - always "GET_REDIRECT" for Pay-In |
data.paymentToken | Gigadat session JWT - embedded in webflowURL, do not expose to end users |
data.instructions | Human-readable redirect instruction from Gigadat |
data.transaction_status | Initial status - always "Pending" on creation |
data.data.gigadatTransactionId | Gigadat 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#
| Field | Type | Description |
|---|
pspType * | string | Always "GIGADAT" |
type * | string | Always "PAYOUT" |
payoutType * | string | "ETO" or "ACH" |
name * | string | User's full name |
email * | string | User's email address |
baseamount * | number | Amount with exactly 2 decimal places (e.g. 50.00) |
currency * | string | Always "CAD" |
country * | string | Payer'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. Omit it and Mozarto geo-locates the caller's IP instead |
ETO-specific fields#
| Field | Type | Description |
|---|
mobile * | string | User'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#
| Field | Type | Description |
|---|
fi * | string | Financial Institution Number - exactly 3 digits |
transit * | string | Transit number - exactly 5 digits |
acct * | string | Bank 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",
"country": "CA",
"mobile": "5551234567"
}
Example - ACH payout#
{
"pspType": "GIGADAT",
"type": "PAYOUT",
"payoutType": "ACH",
"name": "John Doe",
"email": "anna@example.com",
"baseamount": 50.00,
"currency": "CAD",
"country": "CA",
"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.
| Field | Description |
|---|
data.transactionId | Mozarto transaction ID - use for status queries and idempotency |
data.method | "AWAITING_APPROVAL" - payout is queued for back office approval |
data.webflowURL | Gigadat hosted flow URL - available after approval |
data.finalizationURL | Finalization URL used internally after admin approval |
data.paymentToken | Gigadat session JWT - do not expose to end users |
data.instructions | Human-readable status description |
data.data.gigadatTransactionId | Gigadat 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 payload is identical for Pay-In and Pay-Out - it carries no flow indicator. Match transaction_id against the cashier call to distinguish them. See Webhook Setup for the shared field reference.
Error codes#
Gigadat transport failures are mapped to normalized Mozarto errorCode values. Use errorCode for programmatic handling rather than parsing raw error strings.Mozarto errorCode | PSP raw signal | When |
|---|
PSP_NOT_CONFIGURED | Missing credentials in Mozarto back office | apiKey, secret, or campaignId not set for this brand |
INVALID_PSP_CREDENTIALS | HTTP 401 / 403, or body contains "Invalid API credentials", "Invalid credentials", or "Unauthorized" | API credentials are wrong or expired |
PSP_NOT_CONFIGURED | Body contains "campaign not found" | The configured campaignId does not exist in Gigadat |
PSP_TIMEOUT | HTTP 408, or response body contains "timeout" | Gigadat did not respond in time - safe to retry |
PSP_UNAVAILABLE | HTTP 5xx | Gigadat service error - safe to retry with backoff |
PSP_RATE_LIMITED | HTTP 429 | Too many requests - retry after a delay |
UNKNOWN_PSP_ERROR | HTTP 200 with data.error or data.errorcode set | Gigadat 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_ERROR | Any other unrecognised response | Fallback - 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-11-02 13:20:22