Download OpenAPI specification:Download
The Gateway Merchant API allows payments from a merchant to any payment processor via an intermediary called a gateway. The gateway abstracts away payment processor specific details allowing the merchant to request transactions from any number of underlying payment processors without separate additional integration between the merchant and the gateway; The gateway itself integrates and abstracts away support for any number of payment processors.
All endpoints of the Merchant API require authentication. The authentication is done via HTTP headers containing a merchant identifier and a signature.
The merchant identifier is transmitted in the X-Merchant-Identifier header;
example:
X-Merchant-Identifier: merch
Note: The merchant ID is transmitted twice; Once in the header, and once in the body where both values are expected to match. This is intentional.
{- "X-Merchant-Identifier": "merch"
}The signature of a message is calculated based on the message body, and transmitted in the X-Signature headers:
The signature value is calculated by taking the HMAC-SHA256 of the JSON-encoded message body with the shared secret, for example: Human-readable JavaScript object:
{
merchant_id: "merch",
string_field: "a string!",
bool_field: true,
int_field: 7
}
JSON-encoded object, the HTTP request body:
{"merchant_id":"merch","string_field":"a string!","bool_field":true,"int_field":7}
Signature with shared secret as "secret":
HMAC-SHA256('{"merchant_id":"merch","string_field":"a string!","bool_field":true,"int_field":7}', "secret")
//-> 19b692cace7a840ae9543880bf626f334397352f83d0c264fa5c08eb55b4e7d4
Which would be transmitted in an HTTP header as part of the request:
X-Merchant-Identifier: merch
X-Signature: 19b692cace7a840ae9543880bf626f334397352f83d0c264fa5c08eb55b4e7d4
{- "X-Signature": "19b692cace7a840ae9543880bf626f334397352f83d0c264fa5c08eb55b4e7d4"
}Used to validate your signing mechanisms and ensure you are able to communicate with the gateway.
This is not a keepalive, but a development tool for testing basic integration/connectivity with the gateway.
Ping request, it should be an empty object
{ }{- "status": "success",
- "message": "pong",
- "ts": 1619012345
}Used to manage child merchants, such as creating or updating child merchants.
If the child merchant already exists, it will be updated with the provided information.
| merchant_id required | string (merchant_id) The merchant identifier is a unique identifier for the merchant. |
| merchant_child_id required | string (merchant_id) The merchant identifier is a unique identifier for the merchant. |
| name | string the merchant name |
| enabled | boolean is the merchant enabled? |
| secret | string the merchant secret, used for authentication |
object the merchant settings |
{- "merchant_id": "merch",
- "merchant_child_id": "merch",
- "name": "Super Online Store",
- "enabled": true,
- "secret": "super-secret-key",
- "settings": {
- "key1": "value1",
- "key2": "value2"
}
}{- "merchant_id": "merch",
- "name": "Super Online Store",
- "enabled": true,
- "secret": "super-secret-key",
- "settings": {
- "key1": "value1",
- "key2": "value2"
}
}A transfer in or out transaction may have any one of the following values for status:
If a transaction is in a pending state, the merchant may poll the gateway for status updates.
A permanent error is a form of failure; Permanent errors should be returned as a failure status. (at the gateways discretion) A resolvable temporary error may be returned as a pending status when the wallet gateway deems applicable.
In the event of network failures or other issues, preventing communication with the gateway or the gateways ability to reply (Timeouts or 5xx errors) the request should be retried with an exponential backoff strategy and not represent transaction failure.
ONLY a valid reply from the gateway should be considered a transaction status.
With the exception of the /transfer method as this may result in duplicate transactions.
A transfer-in transaction will involve input and processing from at least 4 separate entities: the customer, the cashier, the gateway, and the payment processor. The transfer-in transaction flow between them can be summarized into the following steps:
After the customer is returned to the cashier, status updates are communicated from the payment gateway to the cashier via callback and polling mechanisms; Callbacks provide real-time status, and polling provides reliability in case of callback failure and precludes the need for a callback retry mechanism.
sequenceDiagram
participant User
participant Merchant
participant Gateway
User->>Merchant: What can I deposit with?
Merchant->>+Gateway: Methods Request
Note over Merchant,Gateway: Merchant would like methods available to user<br/>Methods are only guaranteed valid for 1 transaction
Gateway->>Merchant: Methods Response
Merchant->>User: Display methods
User->>Merchant: I want to deposit with method X
Note over Merchant,Gateway: A method is selected and a transaction is started
Merchant->>Gateway: Transfer Request
create participant PSP
Gateway->>PSP: Start Transaction
PSP->>Gateway: Transaction Info
Gateway->>-Merchant: Transfer Response
Note over Merchant,Gateway: The gateway sends the merchant a redirect url<br/>The merchant should redirect the user to this url
Merchant->>User: Redirect to Url in Transfer Response
User->>PSP: Attend to the Transaction
loop Transaction Processing
Note over Merchant,Gateway: The merchant may request the status at any time
Merchant-->>Gateway: Status Request
Gateway-->>Merchant: PENDING
PSP->>Gateway: Callback with transaction status
Gateway-->>Merchant: Callback with transaction status SUCCESS
end
PSP-->>User: Redirect to return url
Note over Merchant,Gateway: The user may return at any stage in the transaction<br/>The merchant should be prepared to handle this
User->>Merchant: Returning to merchant
Merchant->>User: Display transaction status
The payment methods API allows the gateway to control the payment methods presented to a customer, and happens independently of transfer & status APIs; The only link between them is that a transfer request is expected to use a payment method returned from the payment methods API. The merchant would retrieve payment methods for a customer by making an HTTP POST request in JSON format to https://[gateway domain]/v2/methods, and would display resulting payment methods for the customer at checkout time.
⚠️ Note: The payment methods returned are only guaranteed to be valid for one transaction.
| merchant_id required | string (merchant_id) The merchant identifier is a unique identifier for the merchant. |
| merchant_brand_id | string or integer (merchant_brand_id) The unique identifier for the brand/skin used by the user |
| country required | string (country) Enum: "AF" "AX" "AL" "DZ" "AS" "AD" "AO" "AI" "AQ" "AG" "AR" "AM" "AW" "AU" "AT" "AZ" "BS" "BH" "BD" "BB" "BY" "BE" "BZ" "BJ" "BM" "BT" "BO" "BQ" "BA" "BW" "BV" "BR" "IO" "BN" "BG" "BF" "BI" "CV" "KH" "CM" "CA" "KY" "CF" "TD" "CL" "CN" "CX" "CC" "CO" "KM" "CG" "CD" "CK" "CR" "CI" "HR" "CU" "CW" "CY" "CZ" "DK" "DJ" "DM" "DO" "EC" "EG" "SV" "GQ" "ER" "EE" "SZ" "ET" "FK" "FO" "FJ" "FI" "FR" "GF" "PF" "TF" "GA" "GM" "GE" "DE" "GH" "GI" "GR" "GL" "GD" "GP" "GU" "GT" "GG" "GN" "GW" "GY" "HT" "HM" "VA" "HN" "HK" "HU" "IS" "IN" "ID" "IR" "IQ" "IE" "IM" "IL" "IT" "JM" "JP" "JE" "JO" "KZ" "KE" "KI" "KP" "KR" "KW" "KG" "LA" "LV" "LB" "LS" "LR" "LY" "LI" "LT" "LU" "MO" "MG" "MW" "MY" "MV" "ML" "MT" "MH" "MQ" "MR" "MU" "YT" "MX" "FM" "MD" "MC" "MN" "ME" "MS" "MA" "MZ" "MM" "NA" "NR" "NP" "NL" "NC" "NZ" "NI" "NE" "NG" "NU" "NF" "MK" "MP" "NO" "OM" "PK" "PW" "PS" "PA" "PG" "PY" "PE" "PH" "PN" "PL" "PT" "PR" "QA" "RE" "RO" "RU" "RW" "BL" "SH" "KN" "LC" "MF" "PM" "VC" "WS" "SM" "ST" "SA" "SN" "RS" "SC" "SL" "SG" "SX" "SK" "SI" "SB" "SO" "ZA" "GS" "SS" "ES" "LK" "SD" "SR" "SJ" "SE" "CH" "SY" "TW" "TJ" "TZ" "TH" "TL" "TG" "TK" "TO" "TT" "TN" "TR" "TM" "TC" "TV" "UG" "UA" "AE" "GB" "US" "UM" "UY" "UZ" "VU" "VE" "VN" "VG" "VI" "WF" "EH" "YE" "ZM" "ZW" The ISO-3166-1 code for the customer's country of residence |
| currency required | string (currency) Enum: "FX" "NU" "ACH" "ADA" "AED" "AFN" "ALL" "AMD" "AMP" "ANG" "AOA" "APE" "ARS" "ASM" "AUD" "AVT" "AWG" "AXS" "AZN" "BAL" "BAM" "BAT" "BBD" "BCH" "BDT" "BGN" "BHD" "BIF" "BLZ" "BMD" "BND" "BNT" "BOB" "BRL" "BSD" "BTC" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CHZ" "CLF" "CLP" "CLV" "CNH" "CNY" "COP" "CRC" "CRO" "CRV" "CTX" "CUC" "CUP" "CVC" "CVE" "CZK" "DAI" "DDX" "DIA" "DJF" "DKK" "DNT" "DOP" "DOT" "DZD" "EGP" "ENJ" "ENS" "EOS" "ERN" "ETB" "ETC" "ETH" "EUR" "FET" "FIL" "FJD" "FKP" "FOX" "GAL" "GBP" "GEL" "GFI" "GGP" "GHS" "GIP" "GLM" "GMD" "GMT" "GNF" "GNT" "GRT" "GST" "GTC" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "ICP" "IDR" "ILS" "IMP" "IMX" "INR" "INV" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KNC" "KPW" "KRL" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LCX" "LKR" "LPT" "LRC" "LRD" "LSL" "LTC" "LTL" "LVL" "LYD" "MAD" "MDL" "MDT" "MGA" "MIR" "MKD" "MKR" "MLN" "MMK" "MNT" "MOP" "MPL" "MRU" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NCT" "NGN" "NIO" "NKN" "NMR" "NOK" "NPR" "NZD" "OGN" "OMG" "OMR" "ORN" "OXT" "PAB" "PAX" "PEN" "PGK" "PHP" "PKR" "PLA" "PLN" "PLU" "PRO" "PYG" "QAR" "QNT" "RAD" "RAI" "RBN" "REN" "REP" "REQ" "RGT" "RLC" "RLY" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SKL" "SLE" "SLL" "SNT" "SNX" "SOL" "SOS" "SRD" "STD" "STX" "SVC" "SYN" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRB" "TRU" "TRY" "TTD" "TWD" "TZS" "UAH" "UGX" "UMA" "UNI" "UPI" "USD" "UYU" "UZS" "VEF" "VES" "VGX" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XCD" "XDR" "XLM" "XOF" "XPF" "XRP" "XTZ" "XYO" "YER" "YFI" "ZAR" "ZEC" "ZEN" "ZMK" "ZMW" "ZRX" "ZWL" "AAVE" "AGLD" "AIOZ" "ALCX" "ALGO" "ANKR" "API3" "ARPA" "ATOM" "AVAX" "BAND" "BICO" "BOND" "BUSD" "CELO" "CGLD" "COMP" "COTI" "CRPT" "CTSI" "DASH" "DESO" "DOGE" "FARM" "FIDA" "GALA" "GODS" "GYEN" "HIGH" "IDEX" "IOTX" "KEEP" "LINK" "LOOM" "LQTY" "LUNA" "MANA" "MASK" "MCO2" "MINA" "MUSD" "ORCA" "PERP" "POLS" "POLY" "POWR" "RARI" "RNDR" "ROSE" "SHIB" "SUKU" "TRAC" "UNFI" "USDC" "USDP" "USDT" "WBTC" "WCFG" "YFII" "1INCH" "AERGO" "ALICE" "BTRST" "COVAL" "FORTH" "JASMY" "MATIC" "QUICK" "REPV2" "SPELL" "STORJ" "SUPER" "SUSHI" "TRIBE" "BADGER" "SHPING" "AUCTION" The ISO-4217 currency code or cryptocurrency code. |
| email required | string <email> (email) The customer's email address |
| user_class | string (user_class) The user class |
| banner_id | string or integer (banner_id) banner id for the user, part of campaign tracking |
| tracker | string (tracker) The users tracking code, used by affiliate tracking. Cellxpert trackers consist of numbers followed by an _ and extra data. |
| manual_rating | string or integer (manual_rating) A manual rating given by the user used for risk assessment |
| promotion | string (promotion) Current active promotion |
| merchant_user_id required | string or integer The unique identifier for the user at the merchant |
{- "merchant_id": "merch",
- "merchant_brand_id": 234,
- "country": "AF",
- "currency": "FX",
- "user_class": "VIP 4",
- "banner_id": "string",
- "tracker": 12345123456789,
- "manual_rating": 234,
- "promotion": "New! SPINS Offer: 50 WAGER-FREE Spins (Value $100.00) on ZOMBIEZEE MONEY for $80 deposit - Primary",
- "merchant_user_id": 123456
}[- {
- "method": "credit_card",
- "title": "Credit Card",
- "infoText": "Pay with your credit card",
- "formFields": [
- {
- "key": "cc-name",
- "label": "Your full name",
- "required": true,
- "field_type": "string",
- "form_type": "text",
- "validator": ".*"
}
], - "depositLimit": {
- "min": 100,
- "max": 10000
}, - "withdrawalLimit": {
- "min": 100,
- "max": 10000
}
}
]To initiate a transaction, the merchant will POST a JSON message to a URL provided by the gateway in the form https://[gateway domain]/v2/transfer
| merchant_id required | string (merchant_id) The merchant identifier is a unique identifier for the merchant. |
| merchant_trans_id required | string (merchant_trans_id) The unique identifier for the transaction, can be any string of any length and is unique to the merchant per transaction. |
| merchant_brand_id | string or integer (merchant_brand_id) The unique identifier for the brand/skin used by the user |
| merchant_user_login | string The user's username/handle with the merchant |
| user_class | string (user_class) The user class |
| banner_id | string or integer (banner_id) banner id for the user, part of campaign tracking |
| tracker | string (tracker) The users tracking code, used by affiliate tracking. Cellxpert trackers consist of numbers followed by an _ and extra data. |
| manual_rating | string or integer (manual_rating) A manual rating given by the user used for risk assessment |
| promotion | string (promotion) Current active promotion |
| fname required | string The customer's first name |
| lname required | string The customer's last name |
| bday required | string <date> The customer's birthday in ISO YYYY-MM-DD format |
| address required | string The customer's address |
| address2 | string The second line of the customer's address |
| city required | string The customer's city of residence |
| province | string = 2 characters The ISO-3166-2 code for the customer's province or state of residence |
| country required | string (country) Enum: "AF" "AX" "AL" "DZ" "AS" "AD" "AO" "AI" "AQ" "AG" "AR" "AM" "AW" "AU" "AT" "AZ" "BS" "BH" "BD" "BB" "BY" "BE" "BZ" "BJ" "BM" "BT" "BO" "BQ" "BA" "BW" "BV" "BR" "IO" "BN" "BG" "BF" "BI" "CV" "KH" "CM" "CA" "KY" "CF" "TD" "CL" "CN" "CX" "CC" "CO" "KM" "CG" "CD" "CK" "CR" "CI" "HR" "CU" "CW" "CY" "CZ" "DK" "DJ" "DM" "DO" "EC" "EG" "SV" "GQ" "ER" "EE" "SZ" "ET" "FK" "FO" "FJ" "FI" "FR" "GF" "PF" "TF" "GA" "GM" "GE" "DE" "GH" "GI" "GR" "GL" "GD" "GP" "GU" "GT" "GG" "GN" "GW" "GY" "HT" "HM" "VA" "HN" "HK" "HU" "IS" "IN" "ID" "IR" "IQ" "IE" "IM" "IL" "IT" "JM" "JP" "JE" "JO" "KZ" "KE" "KI" "KP" "KR" "KW" "KG" "LA" "LV" "LB" "LS" "LR" "LY" "LI" "LT" "LU" "MO" "MG" "MW" "MY" "MV" "ML" "MT" "MH" "MQ" "MR" "MU" "YT" "MX" "FM" "MD" "MC" "MN" "ME" "MS" "MA" "MZ" "MM" "NA" "NR" "NP" "NL" "NC" "NZ" "NI" "NE" "NG" "NU" "NF" "MK" "MP" "NO" "OM" "PK" "PW" "PS" "PA" "PG" "PY" "PE" "PH" "PN" "PL" "PT" "PR" "QA" "RE" "RO" "RU" "RW" "BL" "SH" "KN" "LC" "MF" "PM" "VC" "WS" "SM" "ST" "SA" "SN" "RS" "SC" "SL" "SG" "SX" "SK" "SI" "SB" "SO" "ZA" "GS" "SS" "ES" "LK" "SD" "SR" "SJ" "SE" "CH" "SY" "TW" "TJ" "TZ" "TH" "TL" "TG" "TK" "TO" "TT" "TN" "TR" "TM" "TC" "TV" "UG" "UA" "AE" "GB" "US" "UM" "UY" "UZ" "VU" "VE" "VN" "VG" "VI" "WF" "EH" "YE" "ZM" "ZW" The ISO-3166-1 code for the customer's country of residence |
| post_code required | string The customer's post/zip code |
| phone required | string The customer's phone integer in E.164 format, e.g. +14125551234 (US) or +442071838750 (GB) |
| email required | string <email> (email) The customer's email address |
| ip_address required | string <ipv4 | ipv6> The customer's IP address; May be IPv4 or IPv6 |
| user_agent required | string The user browser UserAgent. |
| method required | string The payment method identifier. See "Payment Methods API" section for details. |
| amount required | integer The requested amount in the currency's smallest subdivision, e.g. 100 for 1 USD |
| currency required | string (currency) Enum: "FX" "NU" "ACH" "ADA" "AED" "AFN" "ALL" "AMD" "AMP" "ANG" "AOA" "APE" "ARS" "ASM" "AUD" "AVT" "AWG" "AXS" "AZN" "BAL" "BAM" "BAT" "BBD" "BCH" "BDT" "BGN" "BHD" "BIF" "BLZ" "BMD" "BND" "BNT" "BOB" "BRL" "BSD" "BTC" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CHZ" "CLF" "CLP" "CLV" "CNH" "CNY" "COP" "CRC" "CRO" "CRV" "CTX" "CUC" "CUP" "CVC" "CVE" "CZK" "DAI" "DDX" "DIA" "DJF" "DKK" "DNT" "DOP" "DOT" "DZD" "EGP" "ENJ" "ENS" "EOS" "ERN" "ETB" "ETC" "ETH" "EUR" "FET" "FIL" "FJD" "FKP" "FOX" "GAL" "GBP" "GEL" "GFI" "GGP" "GHS" "GIP" "GLM" "GMD" "GMT" "GNF" "GNT" "GRT" "GST" "GTC" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "ICP" "IDR" "ILS" "IMP" "IMX" "INR" "INV" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KNC" "KPW" "KRL" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LCX" "LKR" "LPT" "LRC" "LRD" "LSL" "LTC" "LTL" "LVL" "LYD" "MAD" "MDL" "MDT" "MGA" "MIR" "MKD" "MKR" "MLN" "MMK" "MNT" "MOP" "MPL" "MRU" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NCT" "NGN" "NIO" "NKN" "NMR" "NOK" "NPR" "NZD" "OGN" "OMG" "OMR" "ORN" "OXT" "PAB" "PAX" "PEN" "PGK" "PHP" "PKR" "PLA" "PLN" "PLU" "PRO" "PYG" "QAR" "QNT" "RAD" "RAI" "RBN" "REN" "REP" "REQ" "RGT" "RLC" "RLY" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SKL" "SLE" "SLL" "SNT" "SNX" "SOL" "SOS" "SRD" "STD" "STX" "SVC" "SYN" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRB" "TRU" "TRY" "TTD" "TWD" "TZS" "UAH" "UGX" "UMA" "UNI" "UPI" "USD" "UYU" "UZS" "VEF" "VES" "VGX" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XCD" "XDR" "XLM" "XOF" "XPF" "XRP" "XTZ" "XYO" "YER" "YFI" "ZAR" "ZEC" "ZEN" "ZMK" "ZMW" "ZRX" "ZWL" "AAVE" "AGLD" "AIOZ" "ALCX" "ALGO" "ANKR" "API3" "ARPA" "ATOM" "AVAX" "BAND" "BICO" "BOND" "BUSD" "CELO" "CGLD" "COMP" "COTI" "CRPT" "CTSI" "DASH" "DESO" "DOGE" "FARM" "FIDA" "GALA" "GODS" "GYEN" "HIGH" "IDEX" "IOTX" "KEEP" "LINK" "LOOM" "LQTY" "LUNA" "MANA" "MASK" "MCO2" "MINA" "MUSD" "ORCA" "PERP" "POLS" "POLY" "POWR" "RARI" "RNDR" "ROSE" "SHIB" "SUKU" "TRAC" "UNFI" "USDC" "USDP" "USDT" "WBTC" "WCFG" "YFII" "1INCH" "AERGO" "ALICE" "BTRST" "COVAL" "FORTH" "JASMY" "MATIC" "QUICK" "REPV2" "SPELL" "STORJ" "SUPER" "SUSHI" "TRIBE" "BADGER" "SHPING" "AUCTION" The ISO-4217 currency code or cryptocurrency code. |
| direction required | string Enum: "in" "out" The direction of the transfer; in for transfer-in (deposit), out for transfer-out (withdrawal) |
| language required | string = 2 characters The ISO-639-1 language code, e.g. "en" |
| return_url required | string The merchant URL to which the player will be returned after interaction with the wallet gateway & payment processor |
| callback_url required | string The merchant URL to which transaction status updates will be sent by the wallet gateway |
Array of objects an object containing the form fields requested in the methods response | |
| merchant_user_id required | string or integer The unique identifier for the user at the merchant |
{- "merchant_id": "merch",
- "merchant_trans_id": "123456",
- "merchant_brand_id": 234,
- "merchant_user_login": "string",
- "user_class": "VIP 4",
- "banner_id": "string",
- "tracker": 12345123456789,
- "manual_rating": 234,
- "promotion": "New! SPINS Offer: 50 WAGER-FREE Spins (Value $100.00) on ZOMBIEZEE MONEY for $80 deposit - Primary",
- "fname": "string",
- "lname": "string",
- "bday": "2019-08-24",
- "address": "string",
- "address2": "string",
- "city": "string",
- "province": "st",
- "country": "AF",
- "post_code": "string",
- "phone": 14125551234,
- "ip_address": "string",
- "user_agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_6_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Mobile/15E148 Safari/604.1",
- "method": "string",
- "amount": 100,
- "currency": "FX",
- "direction": "in",
- "language": "en",
- "return_url": "string",
- "callback_url": "string",
- "form_fields": [
- {
- "form_key": "string",
- "form_value": null
}
], - "merchant_user_id": 123456
}{- "type": "status",
- "gateway_trans_id": "string",
- "merchant_trans_id": "{$request.body#/merchant_trans_id}",
- "url": "string",
- "status": "failure",
- "amount": 0,
- "currency": "string",
- "message": "string",
- "descriptor": "string",
- "redirect_target": "_blank"
}{- "type": "status",
- "merchant_id": "merch",
- "gateway_trans_id": "string",
- "merchant_trans_id": "123456",
- "status": "success",
- "amount": 0,
- "currency": "string",
- "message": "string",
- "descriptor": "Crypto"
}To obtain the current status of a given transaction, the merchant may POST a status request message in JSON format to https://[gateway domain]/v2/status. The server should respond with a transaction status message.
The response to the status request should be a JSON-formatted object with fields as documented in the Status Response & Callback Message section.
Please note the difference between an error type response and a transaction failure or error:
| merchant_id required | string (merchant_id) The merchant identifier is a unique identifier for the merchant. |
| merchant_trans_id required | string (merchant_trans_id) The unique identifier for the transaction, can be any string of any length and is unique to the merchant per transaction. |
{- "merchant_id": "merch",
- "merchant_trans_id": "123456"
}{- "type": "status",
- "merchant_id": "merch",
- "gateway_trans_id": "string",
- "merchant_trans_id": "123456",
- "status": "success",
- "amount": 0,
- "currency": "string",
- "message": "string",
- "descriptor": "Crypto"
}The Withdrawal (transfer-out) flow is nearly identical to the Deposit (transfer-in) flow, with the exception that an additional payment approval message sent from the cashier to the gateway.
This is to allow for a payment auditing step; The payment gateway should not send the transaction to the payment processor for processing until the cashier confirms the transaction after auditing.
In addition to the transfer-in transaction flow, the following steps are required at the end of the transfer-in flow documented above:
As with the transfer-in flow, transaction status updates are communicated with both callback and polling mechanisms.
sequenceDiagram
participant User
participant Merchant
participant Gateway
User->>Merchant: What methods are available?
Merchant->>+Gateway: Methods Request
Note over Merchant,Gateway: Merchant would like methods available to user<br/>Methods are only guaranteed valid for 1 transaction
Gateway->>Merchant: Methods Response
Merchant->>User: Display methods
User->>Merchant: I want to withdraw with method X
Note over Merchant,Gateway: A method is selected and a transaction is started
Merchant->>Gateway: Transfer Request
Gateway->>-Merchant: Transfer Response
Note over Merchant,Gateway: The gateway sends the merchant a redirect url<br/>The merchant should redirect the user to this url
Merchant->>User: Redirect to Url in Transfer Response
User->>Gateway: follow redirect
Note over Merchant,Gateway: The user enters any information required for withdrawal
Gateway->>User: Display status & redirect to Merchant
User->>Merchant: Redirect back to merchant
loop Payment Approval
Merchant-->>Gateway: Approve Payment
Gateway-->>Merchant: Transaction Status
end
loop Transaction Processing
Note over Merchant,Gateway: The merchant may request the status at any time
Merchant-->>Gateway: Status Request
Gateway-->>Merchant: PENDING
PSP->>Gateway: Callback with transaction status
Gateway-->>Merchant: Callback with transaction status SUCCESS
end
The payment methods API allows the gateway to control the payment methods presented to a customer, and happens independently of transfer & status APIs; The only link between them is that a transfer request is expected to use a payment method returned from the payment methods API. The merchant would retrieve payment methods for a customer by making an HTTP POST request in JSON format to https://[gateway domain]/v2/methods, and would display resulting payment methods for the customer at checkout time.
⚠️ Note: The payment methods returned are only guaranteed to be valid for one transaction.
| merchant_id required | string (merchant_id) The merchant identifier is a unique identifier for the merchant. |
| merchant_brand_id | string or integer (merchant_brand_id) The unique identifier for the brand/skin used by the user |
| country required | string (country) Enum: "AF" "AX" "AL" "DZ" "AS" "AD" "AO" "AI" "AQ" "AG" "AR" "AM" "AW" "AU" "AT" "AZ" "BS" "BH" "BD" "BB" "BY" "BE" "BZ" "BJ" "BM" "BT" "BO" "BQ" "BA" "BW" "BV" "BR" "IO" "BN" "BG" "BF" "BI" "CV" "KH" "CM" "CA" "KY" "CF" "TD" "CL" "CN" "CX" "CC" "CO" "KM" "CG" "CD" "CK" "CR" "CI" "HR" "CU" "CW" "CY" "CZ" "DK" "DJ" "DM" "DO" "EC" "EG" "SV" "GQ" "ER" "EE" "SZ" "ET" "FK" "FO" "FJ" "FI" "FR" "GF" "PF" "TF" "GA" "GM" "GE" "DE" "GH" "GI" "GR" "GL" "GD" "GP" "GU" "GT" "GG" "GN" "GW" "GY" "HT" "HM" "VA" "HN" "HK" "HU" "IS" "IN" "ID" "IR" "IQ" "IE" "IM" "IL" "IT" "JM" "JP" "JE" "JO" "KZ" "KE" "KI" "KP" "KR" "KW" "KG" "LA" "LV" "LB" "LS" "LR" "LY" "LI" "LT" "LU" "MO" "MG" "MW" "MY" "MV" "ML" "MT" "MH" "MQ" "MR" "MU" "YT" "MX" "FM" "MD" "MC" "MN" "ME" "MS" "MA" "MZ" "MM" "NA" "NR" "NP" "NL" "NC" "NZ" "NI" "NE" "NG" "NU" "NF" "MK" "MP" "NO" "OM" "PK" "PW" "PS" "PA" "PG" "PY" "PE" "PH" "PN" "PL" "PT" "PR" "QA" "RE" "RO" "RU" "RW" "BL" "SH" "KN" "LC" "MF" "PM" "VC" "WS" "SM" "ST" "SA" "SN" "RS" "SC" "SL" "SG" "SX" "SK" "SI" "SB" "SO" "ZA" "GS" "SS" "ES" "LK" "SD" "SR" "SJ" "SE" "CH" "SY" "TW" "TJ" "TZ" "TH" "TL" "TG" "TK" "TO" "TT" "TN" "TR" "TM" "TC" "TV" "UG" "UA" "AE" "GB" "US" "UM" "UY" "UZ" "VU" "VE" "VN" "VG" "VI" "WF" "EH" "YE" "ZM" "ZW" The ISO-3166-1 code for the customer's country of residence |
| currency required | string (currency) Enum: "FX" "NU" "ACH" "ADA" "AED" "AFN" "ALL" "AMD" "AMP" "ANG" "AOA" "APE" "ARS" "ASM" "AUD" "AVT" "AWG" "AXS" "AZN" "BAL" "BAM" "BAT" "BBD" "BCH" "BDT" "BGN" "BHD" "BIF" "BLZ" "BMD" "BND" "BNT" "BOB" "BRL" "BSD" "BTC" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CHZ" "CLF" "CLP" "CLV" "CNH" "CNY" "COP" "CRC" "CRO" "CRV" "CTX" "CUC" "CUP" "CVC" "CVE" "CZK" "DAI" "DDX" "DIA" "DJF" "DKK" "DNT" "DOP" "DOT" "DZD" "EGP" "ENJ" "ENS" "EOS" "ERN" "ETB" "ETC" "ETH" "EUR" "FET" "FIL" "FJD" "FKP" "FOX" "GAL" "GBP" "GEL" "GFI" "GGP" "GHS" "GIP" "GLM" "GMD" "GMT" "GNF" "GNT" "GRT" "GST" "GTC" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "ICP" "IDR" "ILS" "IMP" "IMX" "INR" "INV" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KNC" "KPW" "KRL" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LCX" "LKR" "LPT" "LRC" "LRD" "LSL" "LTC" "LTL" "LVL" "LYD" "MAD" "MDL" "MDT" "MGA" "MIR" "MKD" "MKR" "MLN" "MMK" "MNT" "MOP" "MPL" "MRU" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NCT" "NGN" "NIO" "NKN" "NMR" "NOK" "NPR" "NZD" "OGN" "OMG" "OMR" "ORN" "OXT" "PAB" "PAX" "PEN" "PGK" "PHP" "PKR" "PLA" "PLN" "PLU" "PRO" "PYG" "QAR" "QNT" "RAD" "RAI" "RBN" "REN" "REP" "REQ" "RGT" "RLC" "RLY" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SKL" "SLE" "SLL" "SNT" "SNX" "SOL" "SOS" "SRD" "STD" "STX" "SVC" "SYN" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRB" "TRU" "TRY" "TTD" "TWD" "TZS" "UAH" "UGX" "UMA" "UNI" "UPI" "USD" "UYU" "UZS" "VEF" "VES" "VGX" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XCD" "XDR" "XLM" "XOF" "XPF" "XRP" "XTZ" "XYO" "YER" "YFI" "ZAR" "ZEC" "ZEN" "ZMK" "ZMW" "ZRX" "ZWL" "AAVE" "AGLD" "AIOZ" "ALCX" "ALGO" "ANKR" "API3" "ARPA" "ATOM" "AVAX" "BAND" "BICO" "BOND" "BUSD" "CELO" "CGLD" "COMP" "COTI" "CRPT" "CTSI" "DASH" "DESO" "DOGE" "FARM" "FIDA" "GALA" "GODS" "GYEN" "HIGH" "IDEX" "IOTX" "KEEP" "LINK" "LOOM" "LQTY" "LUNA" "MANA" "MASK" "MCO2" "MINA" "MUSD" "ORCA" "PERP" "POLS" "POLY" "POWR" "RARI" "RNDR" "ROSE" "SHIB" "SUKU" "TRAC" "UNFI" "USDC" "USDP" "USDT" "WBTC" "WCFG" "YFII" "1INCH" "AERGO" "ALICE" "BTRST" "COVAL" "FORTH" "JASMY" "MATIC" "QUICK" "REPV2" "SPELL" "STORJ" "SUPER" "SUSHI" "TRIBE" "BADGER" "SHPING" "AUCTION" The ISO-4217 currency code or cryptocurrency code. |
| email required | string <email> (email) The customer's email address |
| user_class | string (user_class) The user class |
| banner_id | string or integer (banner_id) banner id for the user, part of campaign tracking |
| tracker | string (tracker) The users tracking code, used by affiliate tracking. Cellxpert trackers consist of numbers followed by an _ and extra data. |
| manual_rating | string or integer (manual_rating) A manual rating given by the user used for risk assessment |
| promotion | string (promotion) Current active promotion |
| merchant_user_id required | string or integer The unique identifier for the user at the merchant |
{- "merchant_id": "merch",
- "merchant_brand_id": 234,
- "country": "AF",
- "currency": "FX",
- "user_class": "VIP 4",
- "banner_id": "string",
- "tracker": 12345123456789,
- "manual_rating": 234,
- "promotion": "New! SPINS Offer: 50 WAGER-FREE Spins (Value $100.00) on ZOMBIEZEE MONEY for $80 deposit - Primary",
- "merchant_user_id": 123456
}[- {
- "method": "credit_card",
- "title": "Credit Card",
- "infoText": "Pay with your credit card",
- "formFields": [
- {
- "key": "cc-name",
- "label": "Your full name",
- "required": true,
- "field_type": "string",
- "form_type": "text",
- "validator": ".*"
}
], - "depositLimit": {
- "min": 100,
- "max": 10000
}, - "withdrawalLimit": {
- "min": 100,
- "max": 10000
}
}
]To initiate a transaction, the merchant will POST a JSON message to a URL provided by the gateway in the form https://[gateway domain]/v2/transfer
| merchant_id required | string (merchant_id) The merchant identifier is a unique identifier for the merchant. |
| merchant_trans_id required | string (merchant_trans_id) The unique identifier for the transaction, can be any string of any length and is unique to the merchant per transaction. |
| merchant_brand_id | string or integer (merchant_brand_id) The unique identifier for the brand/skin used by the user |
| merchant_user_login | string The user's username/handle with the merchant |
| user_class | string (user_class) The user class |
| banner_id | string or integer (banner_id) banner id for the user, part of campaign tracking |
| tracker | string (tracker) The users tracking code, used by affiliate tracking. Cellxpert trackers consist of numbers followed by an _ and extra data. |
| manual_rating | string or integer (manual_rating) A manual rating given by the user used for risk assessment |
| promotion | string (promotion) Current active promotion |
| fname required | string The customer's first name |
| lname required | string The customer's last name |
| bday required | string <date> The customer's birthday in ISO YYYY-MM-DD format |
| address required | string The customer's address |
| address2 | string The second line of the customer's address |
| city required | string The customer's city of residence |
| province | string = 2 characters The ISO-3166-2 code for the customer's province or state of residence |
| country required | string (country) Enum: "AF" "AX" "AL" "DZ" "AS" "AD" "AO" "AI" "AQ" "AG" "AR" "AM" "AW" "AU" "AT" "AZ" "BS" "BH" "BD" "BB" "BY" "BE" "BZ" "BJ" "BM" "BT" "BO" "BQ" "BA" "BW" "BV" "BR" "IO" "BN" "BG" "BF" "BI" "CV" "KH" "CM" "CA" "KY" "CF" "TD" "CL" "CN" "CX" "CC" "CO" "KM" "CG" "CD" "CK" "CR" "CI" "HR" "CU" "CW" "CY" "CZ" "DK" "DJ" "DM" "DO" "EC" "EG" "SV" "GQ" "ER" "EE" "SZ" "ET" "FK" "FO" "FJ" "FI" "FR" "GF" "PF" "TF" "GA" "GM" "GE" "DE" "GH" "GI" "GR" "GL" "GD" "GP" "GU" "GT" "GG" "GN" "GW" "GY" "HT" "HM" "VA" "HN" "HK" "HU" "IS" "IN" "ID" "IR" "IQ" "IE" "IM" "IL" "IT" "JM" "JP" "JE" "JO" "KZ" "KE" "KI" "KP" "KR" "KW" "KG" "LA" "LV" "LB" "LS" "LR" "LY" "LI" "LT" "LU" "MO" "MG" "MW" "MY" "MV" "ML" "MT" "MH" "MQ" "MR" "MU" "YT" "MX" "FM" "MD" "MC" "MN" "ME" "MS" "MA" "MZ" "MM" "NA" "NR" "NP" "NL" "NC" "NZ" "NI" "NE" "NG" "NU" "NF" "MK" "MP" "NO" "OM" "PK" "PW" "PS" "PA" "PG" "PY" "PE" "PH" "PN" "PL" "PT" "PR" "QA" "RE" "RO" "RU" "RW" "BL" "SH" "KN" "LC" "MF" "PM" "VC" "WS" "SM" "ST" "SA" "SN" "RS" "SC" "SL" "SG" "SX" "SK" "SI" "SB" "SO" "ZA" "GS" "SS" "ES" "LK" "SD" "SR" "SJ" "SE" "CH" "SY" "TW" "TJ" "TZ" "TH" "TL" "TG" "TK" "TO" "TT" "TN" "TR" "TM" "TC" "TV" "UG" "UA" "AE" "GB" "US" "UM" "UY" "UZ" "VU" "VE" "VN" "VG" "VI" "WF" "EH" "YE" "ZM" "ZW" The ISO-3166-1 code for the customer's country of residence |
| post_code required | string The customer's post/zip code |
| phone required | string The customer's phone integer in E.164 format, e.g. +14125551234 (US) or +442071838750 (GB) |
| email required | string <email> (email) The customer's email address |
| ip_address required | string <ipv4 | ipv6> The customer's IP address; May be IPv4 or IPv6 |
| user_agent required | string The user browser UserAgent. |
| method required | string The payment method identifier. See "Payment Methods API" section for details. |
| amount required | integer The requested amount in the currency's smallest subdivision, e.g. 100 for 1 USD |
| currency required | string (currency) Enum: "FX" "NU" "ACH" "ADA" "AED" "AFN" "ALL" "AMD" "AMP" "ANG" "AOA" "APE" "ARS" "ASM" "AUD" "AVT" "AWG" "AXS" "AZN" "BAL" "BAM" "BAT" "BBD" "BCH" "BDT" "BGN" "BHD" "BIF" "BLZ" "BMD" "BND" "BNT" "BOB" "BRL" "BSD" "BTC" "BTN" "BWP" "BYN" "BYR" "BZD" "CAD" "CDF" "CHF" "CHZ" "CLF" "CLP" "CLV" "CNH" "CNY" "COP" "CRC" "CRO" "CRV" "CTX" "CUC" "CUP" "CVC" "CVE" "CZK" "DAI" "DDX" "DIA" "DJF" "DKK" "DNT" "DOP" "DOT" "DZD" "EGP" "ENJ" "ENS" "EOS" "ERN" "ETB" "ETC" "ETH" "EUR" "FET" "FIL" "FJD" "FKP" "FOX" "GAL" "GBP" "GEL" "GFI" "GGP" "GHS" "GIP" "GLM" "GMD" "GMT" "GNF" "GNT" "GRT" "GST" "GTC" "GTQ" "GYD" "HKD" "HNL" "HRK" "HTG" "HUF" "ICP" "IDR" "ILS" "IMP" "IMX" "INR" "INV" "IQD" "IRR" "ISK" "JEP" "JMD" "JOD" "JPY" "KES" "KGS" "KHR" "KMF" "KNC" "KPW" "KRL" "KRW" "KWD" "KYD" "KZT" "LAK" "LBP" "LCX" "LKR" "LPT" "LRC" "LRD" "LSL" "LTC" "LTL" "LVL" "LYD" "MAD" "MDL" "MDT" "MGA" "MIR" "MKD" "MKR" "MLN" "MMK" "MNT" "MOP" "MPL" "MRU" "MUR" "MVR" "MWK" "MXN" "MYR" "MZN" "NAD" "NCT" "NGN" "NIO" "NKN" "NMR" "NOK" "NPR" "NZD" "OGN" "OMG" "OMR" "ORN" "OXT" "PAB" "PAX" "PEN" "PGK" "PHP" "PKR" "PLA" "PLN" "PLU" "PRO" "PYG" "QAR" "QNT" "RAD" "RAI" "RBN" "REN" "REP" "REQ" "RGT" "RLC" "RLY" "RON" "RSD" "RUB" "RWF" "SAR" "SBD" "SCR" "SDG" "SEK" "SGD" "SHP" "SKL" "SLE" "SLL" "SNT" "SNX" "SOL" "SOS" "SRD" "STD" "STX" "SVC" "SYN" "SYP" "SZL" "THB" "TJS" "TMT" "TND" "TOP" "TRB" "TRU" "TRY" "TTD" "TWD" "TZS" "UAH" "UGX" "UMA" "UNI" "UPI" "USD" "UYU" "UZS" "VEF" "VES" "VGX" "VND" "VUV" "WST" "XAF" "XAG" "XAU" "XCD" "XDR" "XLM" "XOF" "XPF" "XRP" "XTZ" "XYO" "YER" "YFI" "ZAR" "ZEC" "ZEN" "ZMK" "ZMW" "ZRX" "ZWL" "AAVE" "AGLD" "AIOZ" "ALCX" "ALGO" "ANKR" "API3" "ARPA" "ATOM" "AVAX" "BAND" "BICO" "BOND" "BUSD" "CELO" "CGLD" "COMP" "COTI" "CRPT" "CTSI" "DASH" "DESO" "DOGE" "FARM" "FIDA" "GALA" "GODS" "GYEN" "HIGH" "IDEX" "IOTX" "KEEP" "LINK" "LOOM" "LQTY" "LUNA" "MANA" "MASK" "MCO2" "MINA" "MUSD" "ORCA" "PERP" "POLS" "POLY" "POWR" "RARI" "RNDR" "ROSE" "SHIB" "SUKU" "TRAC" "UNFI" "USDC" "USDP" "USDT" "WBTC" "WCFG" "YFII" "1INCH" "AERGO" "ALICE" "BTRST" "COVAL" "FORTH" "JASMY" "MATIC" "QUICK" "REPV2" "SPELL" "STORJ" "SUPER" "SUSHI" "TRIBE" "BADGER" "SHPING" "AUCTION" The ISO-4217 currency code or cryptocurrency code. |
| direction required | string Enum: "in" "out" The direction of the transfer; in for transfer-in (deposit), out for transfer-out (withdrawal) |
| language required | string = 2 characters The ISO-639-1 language code, e.g. "en" |
| return_url required | string The merchant URL to which the player will be returned after interaction with the wallet gateway & payment processor |
| callback_url required | string The merchant URL to which transaction status updates will be sent by the wallet gateway |
Array of objects an object containing the form fields requested in the methods response | |
| merchant_user_id required | string or integer The unique identifier for the user at the merchant |
{- "merchant_id": "merch",
- "merchant_trans_id": "123456",
- "merchant_brand_id": 234,
- "merchant_user_login": "string",
- "user_class": "VIP 4",
- "banner_id": "string",
- "tracker": 12345123456789,
- "manual_rating": 234,
- "promotion": "New! SPINS Offer: 50 WAGER-FREE Spins (Value $100.00) on ZOMBIEZEE MONEY for $80 deposit - Primary",
- "fname": "string",
- "lname": "string",
- "bday": "2019-08-24",
- "address": "string",
- "address2": "string",
- "city": "string",
- "province": "st",
- "country": "AF",
- "post_code": "string",
- "phone": 14125551234,
- "ip_address": "string",
- "user_agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_6_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Mobile/15E148 Safari/604.1",
- "method": "string",
- "amount": 100,
- "currency": "FX",
- "direction": "in",
- "language": "en",
- "return_url": "string",
- "callback_url": "string",
- "form_fields": [
- {
- "form_key": "string",
- "form_value": null
}
], - "merchant_user_id": 123456
}{- "type": "status",
- "gateway_trans_id": "string",
- "merchant_trans_id": "{$request.body#/merchant_trans_id}",
- "url": "string",
- "status": "failure",
- "amount": 0,
- "currency": "string",
- "message": "string",
- "descriptor": "string",
- "redirect_target": "_blank"
}{- "type": "status",
- "merchant_id": "merch",
- "gateway_trans_id": "string",
- "merchant_trans_id": "123456",
- "status": "success",
- "amount": 0,
- "currency": "string",
- "message": "string",
- "descriptor": "Crypto"
}As outgoing cashier transactions may require manual confirmation ("auditing") from staff before payments are initiated, the gateway must not send the transfer-out to the payment processor until confirmation is received from the cashier. To confirm the status of a transfer-out transaction, the cashier will POST a JSON message to a URL provided by the gateway in the form https://[gateway domain]/v2/confirm.
| merchant_id | string (merchant_id) The merchant identifier is a unique identifier for the merchant. |
| merchant_trans_id | string (merchant_trans_id) The unique identifier for the transaction, can be any string of any length and is unique to the merchant per transaction. |
| state | string Enum: "confirmed" "declined" The transaction state as seen by the cashier auditing: The transaction has been confirmed and should be sent out to the payment processor for payment, or declined and should be cancelled. |
{- "merchant_id": "merch",
- "merchant_trans_id": "123456",
- "state": "confirmed"
}{- "type": "status",
- "merchant_id": "merch",
- "gateway_trans_id": "string",
- "merchant_trans_id": "123456",
- "status": "success",
- "amount": 0,
- "currency": "string",
- "message": "string",
- "descriptor": "Crypto"
}To obtain the current status of a given transaction, the merchant may POST a status request message in JSON format to https://[gateway domain]/v2/status. The server should respond with a transaction status message.
The response to the status request should be a JSON-formatted object with fields as documented in the Status Response & Callback Message section.
Please note the difference between an error type response and a transaction failure or error:
| merchant_id required | string (merchant_id) The merchant identifier is a unique identifier for the merchant. |
| merchant_trans_id required | string (merchant_trans_id) The unique identifier for the transaction, can be any string of any length and is unique to the merchant per transaction. |
{- "merchant_id": "merch",
- "merchant_trans_id": "123456"
}{- "type": "status",
- "merchant_id": "merch",
- "gateway_trans_id": "string",
- "merchant_trans_id": "123456",
- "status": "success",
- "amount": 0,
- "currency": "string",
- "message": "string",
- "descriptor": "Crypto"
}Useragent should be required for all transfers
user-agent to transfer request as required