Gateway Merchant API (2.0.0-rc3)

Download OpenAPI specification:Download

Introduction

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.

Authentication

All endpoints of the Merchant API require authentication. The authentication is done via HTTP headers containing a merchant identifier and a signature.

apiKey

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"
}
apiKey

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"
}

Ping

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.

Authorizations:
(X-Merchant-IdentifierX-Signature)
Request Body schema: application/json
required
object (PingRequest)

Ping request, it should be an empty object

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{
  • "status": "success",
  • "message": "pong",
  • "ts": 1619012345
}

Child Management

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.

Authorizations:
(X-Merchant-IdentifierX-Signature)
Request Body schema: application/json
required
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

Responses

Request samples

Content type
application/json
{
  • "merchant_id": "merch",
  • "merchant_child_id": "merch",
  • "name": "Super Online Store",
  • "enabled": true,
  • "secret": "super-secret-key",
  • "settings": {
    }
}

Response samples

Content type
application/json
{
  • "merchant_id": "merch",
  • "name": "Super Online Store",
  • "enabled": true,
  • "secret": "super-secret-key",
  • "settings": {
    }
}

Errors and Status

A transfer in or out transaction may have any one of the following values for status:

  • success: The transaction was successful; The amount was successfully transferred.
  • failure: The transaction has failed; The amount was not and will never be transferred.
  • pending: The transaction has been initiated but an amount has not yet been transferred.
  • returned: The transaction amount was returned to its origin, for example a chargeback for transfer-in, or a returned Wire for transfer-out.

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.

Deposits (transfer out)

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:

  • The merchant requests a list of payment methods for a user from the gateway
  • The merchant displays the payment methods to the customer
  • The customer selects a payment method and supplies an amount to deposit
  • The payment gateway initiates a transaction and returns transaction information to the cashier.
  • The payment gateway may communicate with the payment processor when the payment processor's API expects it; This is abstracted away from the cashier.
  • The cashier redirects the customer to the gateway to optionally collect payment details and initiate the transaction via the payment processor. The payment gateway may in turn redirect to the payment processor; this is abstracted away from the cashier.
  • The customer is returned to the cashier after the transaction is initiated with the payment gateway and/or payment processor; State may be pending, success, or failure.

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

Methods

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.

Authorizations:
(X-Merchant-IdentifierX-Signature)
Request Body schema: application/json
required
One of
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

Responses

Request samples

Content type
application/json
Example
{
  • "merchant_id": "merch",
  • "merchant_brand_id": 234,
  • "country": "AF",
  • "currency": "FX",
  • "email": "[email protected]",
  • "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
}

Response samples

Content type
application/json
[
  • {
    }
]

Transfer

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

Authorizations:
(X-Merchant-IdentifierX-Signature)
Request Body schema: application/json
required
One of
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

Responses

Callbacks

Request samples

Content type
application/json
Example
{
  • "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,
  • "email": "[email protected]",
  • "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": [
    ],
  • "merchant_user_id": 123456
}

Response samples

Content type
application/json
Example
{
  • "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"
}

Callback payload samples

Callback
POST: Transaction Finalised Callback
Content type
application/json
{
  • "type": "status",
  • "merchant_id": "merch",
  • "gateway_trans_id": "string",
  • "merchant_trans_id": "123456",
  • "status": "success",
  • "amount": 0,
  • "currency": "string",
  • "message": "string",
  • "descriptor": "Crypto"
}

Status

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:

  • An error type response indicates that the server encountered an error and was unable to process the request (e.g. gateway timeout). Any error response will not affect the status of the transaction.
  • A status type response with a status of failure or error means that the transaction itself failed (e.g. declined) or encountered an error (e.g. invalid account integer) and will be marked as failed.
Authorizations:
(X-Merchant-IdentifierX-Signature)
Request Body schema: application/json
required
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.

Responses

Request samples

Content type
application/json
{
  • "merchant_id": "merch",
  • "merchant_trans_id": "123456"
}

Response samples

Content type
application/json
{
  • "type": "status",
  • "merchant_id": "merch",
  • "gateway_trans_id": "string",
  • "merchant_trans_id": "123456",
  • "status": "success",
  • "amount": 0,
  • "currency": "string",
  • "message": "string",
  • "descriptor": "Crypto"
}

Withdrawals (transfer in)

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:

  • The cashier sends a payment approval message to the payment gateway.
  • The payment gateway responds with transfer state, pending, success, or failure.

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

Methods

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.

Authorizations:
(X-Merchant-IdentifierX-Signature)
Request Body schema: application/json
required
One of
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

Responses

Request samples

Content type
application/json
Example
{
  • "merchant_id": "merch",
  • "merchant_brand_id": 234,
  • "country": "AF",
  • "currency": "FX",
  • "email": "[email protected]",
  • "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
}

Response samples

Content type
application/json
[
  • {
    }
]

Transfer

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

Authorizations:
(X-Merchant-IdentifierX-Signature)
Request Body schema: application/json
required
One of
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

Responses

Callbacks

Request samples

Content type
application/json
Example
{
  • "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,
  • "email": "[email protected]",
  • "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": [
    ],
  • "merchant_user_id": 123456
}

Response samples

Content type
application/json
Example
{
  • "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"
}

Callback payload samples

Callback
POST: Transaction Finalised Callback
Content type
application/json
{
  • "type": "status",
  • "merchant_id": "merch",
  • "gateway_trans_id": "string",
  • "merchant_trans_id": "123456",
  • "status": "success",
  • "amount": 0,
  • "currency": "string",
  • "message": "string",
  • "descriptor": "Crypto"
}

Confirm

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.

Authorizations:
(X-Merchant-IdentifierX-Signature)
Request Body schema: application/json
required
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.

Responses

Request samples

Content type
application/json
{
  • "merchant_id": "merch",
  • "merchant_trans_id": "123456",
  • "state": "confirmed"
}

Response samples

Content type
application/json
{
  • "type": "status",
  • "merchant_id": "merch",
  • "gateway_trans_id": "string",
  • "merchant_trans_id": "123456",
  • "status": "success",
  • "amount": 0,
  • "currency": "string",
  • "message": "string",
  • "descriptor": "Crypto"
}

Status

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:

  • An error type response indicates that the server encountered an error and was unable to process the request (e.g. gateway timeout). Any error response will not affect the status of the transaction.
  • A status type response with a status of failure or error means that the transaction itself failed (e.g. declined) or encountered an error (e.g. invalid account integer) and will be marked as failed.
Authorizations:
(X-Merchant-IdentifierX-Signature)
Request Body schema: application/json
required
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.

Responses

Request samples

Content type
application/json
{
  • "merchant_id": "merch",
  • "merchant_trans_id": "123456"
}

Response samples

Content type
application/json
{
  • "type": "status",
  • "merchant_id": "merch",
  • "gateway_trans_id": "string",
  • "merchant_trans_id": "123456",
  • "status": "success",
  • "amount": 0,
  • "currency": "string",
  • "message": "string",
  • "descriptor": "Crypto"
}

Changelog

2.0.0-rc3

Useragent should be required for all transfers

  • Added user-agent to transfer request as required

2.0.0-rc2

Provisions for adding form field support for frontend usage.

  • Added formFields to method response
  • Added form_fields to transfer request