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.
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
brandId
string
Brand identifier
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 }
countryCode
string
ISO country code
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.
{"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
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.
{"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
{"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".
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 company
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.