Host to host API

SolidGate API is a full host-to-host REST API. Parameters are transmitted via POST-method in the request body (JSON format). The payment form is hosted on the Merchant's end.

Only PCI DSS certified merchants are eligible for full API considering that merchant collects sensitive card data and hosts payment form.

In order to start working with SolidGate API, JSON requests shall be sent to: 

API Endpoint URL - https://pay.solidgate.com/api/v1

Operation type

SolidGate API has the following methods:

  • Charge - basic operation of funds withdrawal from cardholder's account. This operation can be performed with additional cardholder verification via 3-D Secure. When the operation is successfully done, cardholder data is tokenized so that the subsequent payments can be made by token (tokenized payment).
  • Recurring - method that allows you to initiate tokenized payments. In contrast to Charge, token previously received has to be sent in the request instead of cardholder data.
  • Refund - request for transferring funds back to the cardholder. Refunds can be made only for approved transactions.
  • Settle - operation is used for settling an authorization transaction that was previously performed.
  • Void -  operation is used for voiding a previously performed authorization transactions.

Please, note that all requests must be signed.

Charge transaction

Charge request - basic operation of funds withdrawal from cardholder's account. This operation can be made via 3-D Secure. When the operation is successfully done, cardholder data is tokenized so that the subsequent payments can be made by token (recurring or tokenized transactions).
 

POST https://pay.solidgate.com/api/v1/charge

First payment without CVV

PCI DSS merchant can use flow if:

  • Сard details (PAN, expiration date) are stored on their side
  • The first payment with a CVV-card was processed by another provider

If you are integrated alternatively, this flow does not apply.

Our payment method (charge) is used to pay with the card data (card number and expiration date) without CVV:

  • Customer initiated payments (1-click)
  • Merchant initiated payments (recurring, rebill, installment, retry)

 

    Charge Request Body Parameters

ParameterMandatoryTypeDescriptionExample
order_idYesstring(100)Order ID specified in the merchant system123443334
amountYesintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.1020
currencyYesstring(3)Order currency. 3 letter currency code under ISO-4217USD
card_numberYesstring(25)Card number4411111111111111
card_exp_monthYesstring(2)Month of card expiration (2-digit format)1
card_exp_yearYesstring(4)Year of card expiration (4-digit format)2024
order_descriptionYesstring(100)Order description in UTF-8 code.Premium package
customer_emailYesstring(100)Customer email.jondou@gmail.com
ip_addressYesstring(50)Customer IP (only public ones).8.8.8.8
platformYesstring(6)Customer platform at the moment of payment. Available values: WEB- desktop, MOB - mobile version, APP - application.WEB
card_holderNostring(32)Cardholder nameJOHN SNOW
card_pinNostring(4)Card pin. Required for VERVE cardbrand only1111
card_cvvNostring(4)CVV2/CVC2 card - 3 or 4 digit code123
payment_typeNostringToken transaction type. It should be provided for correct SCA routing. 1-click - customer-initiated payment/recurring - merchant-initiated subscription payment/retry - retry of the merchant-initiated subscription payment/installment - specific value for the Financial Institutions/rebill - not regular cash withdrawals (depending on the trigger, the frequency and amount of write-offs, in this case, is determined by the point of sale itself)1-click
scheme_transaction_IDNostringCard scheme specific transaction ID required for payments that use stored card details, such as recurring payments. For payment_type with recurring/rebill/installment/retry type, specifying the parameter is highly recommended.1234567890
geo_countryNostring(3)Customer country subject to ISO 3166-1 alpha-3.GBR
order_dateNostring(50)Date of order creation in format YYYY-MM-DD-HH-MM-SS.2012-12-21 11:21:30
order_itemsNostring(255)Order description in UTF-8 code.item 1, item 2
customer_account_idNostring(100)Customer ID in the merchant's system.4dad42f808
customer_first_nameNostring(100)Customer first name.John
customer_last_nameNostring(100)Customer last name.Snow
customer_phoneNostring(50)Customer phone number.380111111111
customer_date_of_birthNostring(50)Birthdate in YYYY-MM-DD format.2000-11-21
geo_cityNostring(100)Customer City.New Castle
languageNostring(2)Customer language settings. Available values: RU - Russian, EN - English.en
fraudulentNobooleanCustomer is detected by the merchant system to be suspicious one. The payment will be effected via 3DS.TRUE
fail_urlNostring(255)URL of merchant page, which a customer will be redirected in case of failed paymenthttp://merchant.example/fail
success_urlNostring(255)URL of merchant page, which a customer will be redirected in case of successful paymenthttp://merchant.example/success
verifiedNobooleanA user was verified on the shop side.TRUE
retry_attemptNointegerA number of retry payment.1
traffic_sourceNostring(255)Source of traffic.facebook
transaction_sourceNostring(255)Source of transactions on site.main_menu
user_agentNostringUser-agent of the customer.Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
deviceNostringDevice of customeriPhone 8 iOS 12.0
websiteNostring(255)Website from which transaction took place.google.com
order_numberNointegerA number of payments by the user.1
addressNostring(100)Address (mandatory parameter for USA location).New York, 10005, 15 William St
stateNostring(10)State (mandatory parameter for USA location).WA
zip_codeNostring(10)Parameter for identifying location (user billing zip code). Mandatory parameter for USA location.10005
cityNostring(100)Customer city. (mandatory parameter for USA location)New York
force3dsNobooleanRouting payments flag for 3DS flow (enabled by Solid account manager)FALSE
header_acceptYes - 3D 2.0string(255)Header Accept.text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng
header_accept_languageYes - 3D 2.0string(255)Header Accept Language.ru-RU,ru;q=0.9,en-US;q=0.8
browser_color_depthYes - 3D 2.0integerColor depth of browser window.32
browser_screen_heightYes - 3D 2.0integerHeight of browser window.1920
browser_screen_widthYes - 3D 2.0integerWidth of browser window.1280
browser_java_enabledYes - 3D 2.0booleanIs java enabled on User browser.FALSE
browser_javascript_enabledYes - 3D 2.0booleanIs javascript enabled on User browser.FALSE
time_zone_offsetYes - 3D 2.0integerThe time difference, in minutes, between UTC time and the local time of the cardholder's browser.-1
typeNostringThe parameter for transaction-authorizationauth
settle_intervalNointegerTime (in hours) when auto-settle should be done. 1
payment_type_dataNoobjectObject with additional customer data to process payments in specific locations. The full list of additional fields is provided in Information section. 
order_metadataNoobjectMetadata is useful for storing additional, structured information about an object. The object consists of a set of key-value pairs (e.g. “coupon_code”: “NY2018", “partner_id”: “123989"). The callback notification returns an order_metadata from the order in each state. The validation of up to 10 fields with an upper limit of 255 characters. 

Charge Request Sample

{
   "amount":1196,
   "currency":"GBP",
   "order_id":"v0k4v00x",
   "order_description":"Purchase for order group",
   "customer_email":"johngolt",
   "customer_account_id":"6266eb7cbf2b0135b77c2f52",
   "customer_first_name":"Sarah",
   "customer_last_name":"Dickinson",
   "geo_country":"GBR",
   "ip_address":"8.8.8.8",
   "language":"en",
   "platform":"APP",
   "success_url":"http://merchant.example/success",
   "fail_url": "http://merchant.example/fail",
   "force3ds":true,
   "card_number":"5589800801939886",
   "card_holder":"TRINITY SIMON",
   "card_exp_month":"01",
   "card_exp_year":"2029",
   "card_cvv":"695", "header_accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
   "header_accept_language":"en-GB,en-US;q=0.9,en;q=0.8",
   "browser_color_depth":24,
   "browser_screen_height":869,
   "browser_screen_width":412,
   "browser_java_enabled":false,
   "browser_javascript_enabled":true,
   "time_zone_offset":-60,
   "order_metadata": {
      "coupon_code": "NY2018",
      "partner_id": "123989",
      "udf_client_type": "vipClient",
      "udf_delivery_group": "fastDelivery"
   }
}

 

    Charge Response Body Parameters | Success

ParameterTypeDescriptionExample
transactionsobjectObject with information of transactions. 
transactions:<transaction_id>objectTransaction identification within the order. It contains an object with detailed information about the specified transaction. Order can contain several transactions.00016857481e16b07fc
transactions:<transaction_id>:idstringTransactions identification within the order.00016857481e16b07fc
transactions:<transaction_id>:operationstringTransaction type.pay
transactions:<transaction_id>:statusstringTransaction status within the order. Transaction statuses are described in respective directory.success
transactions:<transaction_id>:descriptorstringThe descriptor for the transactionpayhere.com
transactions:<transaction_id>:amountintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.2575
transactions:<transaction_id>:currencystringTransaction currency.USD
transactions:<transaction_id>:created_atstringTransaction created DateTime2019-05-17 9:06:21
transactions:<transaction_id>:updated_atstringTransaction updated DateTime2019-05-17 9:06:21
transactions:<transaction_id>:cardobjectObject with information about the card. Present in payment transactions 
transactions:<transaction_id>:card:binstringCard BIN411111
transactions:<transaction_id>:card:brandstringCard BrandVISA
transactions:<transaction_id>:card:numberstringMasked card number411111XXXXXX1111
transactions:<transaction_id>:card:card_holderstringCardholder nameTest User
transactions:<transaction_id>:card:bankstringBank emitentSTATE BANK
transactions:<transaction_id>:card:countrystringCountry of the bankUSA
transactions:<transaction_id>:card:card_exp_monthstringA month of the expiration date on a card. (2-digit format)3
transactions:<transaction_id>:card:card_exp_yearintegerA year of the expiration date on a card. (4-digit format)2025
transactions:<transaction_id>:card:card_typestringA type of the cardDEBIT
orderobjectObject with order information 
order:order_idstringOrder ID specified in the merchant system123443334
order:order_descriptionstringOrder description in UTF-8 code.Premium package
order:traffic_sourcestringSource of trafficfacebook
order:customer_emailstringCustomer emailjondou@gmail.com
order:amountintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.2575
order:currencystringOrder currency (3 letter code under ISO 4217).USD
order:fraudulentbooleanThe customer was detected on the merchant end to be suspicious one.TRUE
order:marketing_amountintegerThe marketing amount of the order converted in USD (or other currency as agreed) at a publicly available rate at the time of the transaction. It can only be used for marketing forecasts.2575
order:marketing_currencystringThe currency of order amount for marketing analytics.USD
order:statusstringStatus of payment processed. Types of order statuses are described in the respective directory.created
order:refunded_amountintegerAmount of refund0
order:descriptorstringThe descriptor for the transactionpayhere.com
transactionobjectObject with information on the transaction. 
transaction:idstringID of the transaction inside the order. Order can contain several transactions02b988721b9e9ba89c7f75fbb8d21ceb5ea29550b75cd
transaction:operationstringTransaction type. Available values - pay.pay
transaction:statusstringTransaction status within the order.created
transaction:amountintegerTransaction amount.2575
transaction:currencystringTransaction currency.USD
transaction:created_atstringTransaction created DateTime2019-05-17 9:06:21
transaction:updated_atstringTransaction updated DateTime2019-05-17 9:06:21
transaction:card:objectObject with information about the card. Present in payment transactions. 
transaction:card:binstringCard BIN.411111
transaction:card:brandstringCard Brand.VISA
transaction:card:countrystringCountry of the bank.USA
transaction:card:numberstringMasked card number.411111XXXXXX1111
transaction:card:card_holderstringCardholder NameTest User
transaction:card:card_exp_monthstringA month of the expiration date on a card. (2-digit format)3
transaction:card:card_exp_yearintegerA year of the expiration date on a card. (4-digit format)2025
transaction:card:card_typestringA type of the card.DEBIT
payment_adviserobjectThe object that contains advice from payment adviser 
payment_adviser:advisestringRecommendation for next paymentpay / resign / recurring

Charge Response Sample | Success

{
  "transactions": {
    "00016857481e16b07fc": {
      "id": "00016857481e16b07fc",
      "operation": "pay",
      "status": "created",
      "amount": 2575,
      "currency": "USD",
      "created_at": "2019-05-17 09:06:21",
      "updated_at": "2019-05-17 09:06:32",
      "card": {
        "bank": "STATE BANK",
        "bin": "411111",
        "brand": "VISA",
        "country": "USA",
        "number": "411111XXXXXX1111",
        "card_holder": "cardholder name",
        "card_exp_month": "03",
        "card_exp_year": 2025,
        "card_type": "DEBIT"
      }
    }
  },
  "order": {
    "order_id": "777",
   "order_description":"Purchase for order group",
   "customer_email":"jondou@gmail.com",
   "traffic_source": "facebook", 
    "amount": 2575,
    "currency": "USD",
    "fraudulent": true,
    "marketing_amount": 2575,
    "marketing_currency": "USD",
    "status": "created",
    "refunded_amount": 0
  },
  "transaction": {
    "id": "00016857481e16b07fc",
    "operation": "pay",
    "status": "created",
    "amount": 2575,
    "currency": "USD",
    "created_at": "2019-05-17 09:06:21",
    "updated_at": "2019-05-17 09:06:32",
    "card": {
      "bin": "411111",
      "brand": "VISA",
      "country": "USA",
      "number": "411111XXXXXX1111",
      "card_holder": "cardholder name", 
      "card_exp_month": "03",
      "card_exp_year": 2025,
      "card_type": "DEBIT"
    }
  },
  "payment_adviser": {
    "advise": "pay"
  }
}

 

    Charge Response Body Parameters | Decline

ParameterTypeDescriptionExample
transactionsobjectObject with information of transactions. 
transactions:<transaction_id>stringTransaction identification within the order. It contains an object with detailed information about the specified transaction. Order can contain several transactions.02b988721b9e9ba89c7f75fbb8d21ceb5ea29550b75cd
transactions:<transaction_id>:idstringTransactions identification within the order.02b988721b9e9ba89c7f75fbb8d21ceb5ea29550b75cd
transactions:<transaction_id>:operationstringTransaction type.pay
transactions:<transaction_id>:statusstringTransaction status within the order. fail
transactions:<transaction_id>:amountintOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.1000
transactions:<transaction_id>:currencystringTransaction currency. 3-letter currency code according to ISO-4217USD
transactions:<transaction_id>:errorobjectObject with the information regarding the error. 
transactions:<transaction_id>:error:codestringError code.4.09
transactions:<transaction_id>:error:messagesstringName of the attribute, in which the error was found."Solid antifraud engine"
transactions:<transaction_id>:error:messagesarrayAn array of error messages related to this attribute 
transactions:<transaction_id>:error:messages:<attribute_name>arrayAn array of error messages related to this attribute"Solid antifraud engine"
transactions:<transaction_id>:created_atstringTransaction created DateTime2020-04-24 7:29:20
transactions:<transaction_id>:updated_atstringTransaction updated DateTime2020-04-24 7:29:20
transactions:<transaction_id>:marketing_currencystringCurrency of the order for marketing analyticUSD
transactions:<transaction_id>:marketing_amountintThe marketing amount of the order converted in USD (or other currency as agreed) at a publicly available rate at the time of the transaction. It can only be used for marketing forecasts.1000
transactions:<transaction_id>:billing_detailsobjectObject that contains payment data 
transactions:<transaction_id>:billing_details:adressstringAdress that was sent in the request21 Bedford Ave
transactions:<transaction_id>:billing_details:zipstringZIP-code that was sent in the request91191
transactions:<transaction_id>:billing_details:countrystringISO-code of the country that was sent in the requestUSA
transactions:<transaction_id>:billing_details:citystringCity name that was sent in the requestBoston
transactions:<transaction_id>:billing_details:statestringCode of the State that was sent in the requestNY
transactions:<transaction_id>:cardobjectAn object that contains information about the bank card 
transactions:<transaction_id>:card:bankstringBank, that issued the credit cardCITIZENS STATE BANK
transactions:<transaction_id>:card:binstringBIN of the credit card453245
transactions:<transaction_id>:card:brandstringBrand of the credit cardVISA
transactions:<transaction_id>:card:countrystringCountry of the credit cardUSA
transactions:<transaction_id>:card:numberstringCredit card number453245XXXXXX2692
transactions:<transaction_id>:card:card_exp_monthstringThe month of card expiration (2-digit format)3
transactions:<transaction_id>:card:card_exp_yearintYear of the credit card expiration2021
transactions:<transaction_id>:card:card_typestringType of the credit cardDEBIT
transactions:<transaction_id>:card:card_holderstringName of the credit card ownerKurt Snow
transactions:errorobjectObject with the information about the error 
transactions:error:codearrayError code.4.09
transactions:error:code:<message>arrayAn array of error messages related to this attributeSolid antifraud engine
transactions:error:messagesobjectObject with the messages regarding errors 
transactions:error:messages:<message>stringName of the attribute in which the error was foundSolid antifraud engine
transactions:error:recommended_message_for_user:<message>arrayAn array of error messages related to this attribute"Solid antifraud engine"
orderobjectObject with the information about an order 
order:operationstringTransaction type.pay
order:order_idstringOrder ID specified in the merchant system.02b988721b9e9ba89c7f75fbb8d21ceb5ea29550b75cd
order:order_descriptionstringOrder description in UTF-8 code.Premium package
order:traffic_sourcestringSource of trafficfacebook
order:customer_emailstringCustomer emailjondou@gmail.com
order:statusstringOrder statusfail
order:amountintOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.1000
order:refund_amountintRefund amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents.0
order:currencystringThe currency of the order. 3-letter currency code according to ISO-4217USD
order:marketing_amountintThe marketing amount of the order converted in USD (or other currency as agreed) at a publicly available rate at the time of the transaction. It can only be used for marketing forecasts.1000
order:marketing_currencystringThe currency of order amount for marketing analyticsUSD
order:fraudulentboolThe user was marked as fraudulent on the merchant's sideTRUE
transactionobjectObject with data about the transaction 
transaction:idstringID of the transaction inside the order. Order can contain several transactions02b988721b9e9ba89c7f75fbb8d21ceb5ea29550b75cd
transaction:operationstringTransaction type. Possible values: paypay
transaction:statusstringTransaction status inside of the order.fail
transaction:amountintOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.1000
transaction:currencystringThe currency of the order. 3-letter currency code according to ISO-4217USD
transaction:errorobjectObject with the information about the error 
transaction:error:codearrayError code.4.09
transaction:error:code:<message>arrayAn array of error messages related to this attributeSolid antifraud engine
transaction:error:messagesobjectObject with the messages regarding errors 
transaction:error:messages:<message>stringName of the attribute in which the error was foundSolid antifraud engine
transaction:error:recommended_message_for_user:<message>arrayAn array of error messages related to this attribute"Solid antifraud engine"
transaction:created_at:<date_time>stringDate and time of the order's creation2020-04-24 7:29:20
transaction:updated_at:<date_time>stringDate and time of the last order update2020-04-24 7:29:20
transaction:marketing_currencystringThe currency of order amount for marketing analytics.USD
transaction:marketing_amountintThe marketing amount of the order converted in USD (or other currency as agreed) at a publicly available rate at the time of the transaction. It can only be used for marketing forecasts.1000
transaction:billing_detailsobjectObject that contains payment data 
transaction:billing_details:addressstringAddress (mandatory parameter for USA location).21 Bedford Ave
transaction:billing_details:zipstringZIP-code that was sent in the request91191
transaction:billing_details:countrystringISO-code of the country that was sent in the requestUSA
transaction:billing_details:citystringCity name that was sent in the requestBoston
transaction:billing_details:statestringCode of the State that was sent in the requestNY
transaction:cardobjectObject with information about the card. Present in payment transactions 
transaction:card:bankstringBank, that issued the credit cardCITIZENS STATE BANK
transaction:card:binstringCard BIN453245
transaction:card:brandstringCard BrandVISA
transaction:card:countrystringCountry of the bankUSD
transaction:card:numberstringMasked card number453245XXXXXX2692
transaction:card:card_exp_monthstringThe month of card expiration (2-digit format)3
transaction:card:card_exp_yearintYear of card expiration (4-digit format)2021
transaction:card:card_typestringA type of cardDEBIT
transaction:card:card_holderstringCardholder nameKurt Snow
payment_adviserobjectThe object that contains advice from payment adviser 
payment_adviser:advise:arrayAn array with recommendations from the payment adviser 
payment_adviser:advise:<advise>stringRecommendations of the payment adviserpay

Charge Response Sample | Decline

{
  "transactions": {
    "02b778721b9e9ba89c7f75fbb8d21ceb5ea29550b75cd": {
      "id": "02b988721b9e9ba89c7f75fbb8d21ceb5ea29550b75cd",
      "operation": "pay",
      "status": "fail",
      "amount": 1000,
      "currency": "USD",
      "error": {
        "code": "4.09",
        "messages": [
          "Solid antifraud engine"
        ],
        "recommended_message_for_user": "Solid antifraud engine"
      },
      "created_at": "2020-04-24 07:29:20",
      "updated_at": "2020-04-24 07:29:20",
      "marketing_currency": "USD",
      "marketing_amount": 1000,
      "billing_details": {
        "address": "21 Bedford Ave",
        "zip": "91191",
        "country": "USA",
        "city": "Boston",
        "state": "NY"
      },
      "card": {
        "bank": "CITIZENS STATE BANK",
        "bin": "453245",
        "brand": "VISA",
        "country": "USA",
        "number": "453245XXXXXX2692",
        "card_exp_month": "03",
        "card_exp_year": 2021,
        "card_type": "DEBIT",
        "card_holder": "Kurt Snow"
      }
    }
  },
  "error": {
    "code": "4.09",
    "messages": [
      "Solid antifraud engine"
    ],
    "recommended_message_for_user": "Solid antifraud engine"
  },
  "order": {
    "order_id": "1587713359140",
   "order_description":"Purchase for order group",
   "customer_email":"jondou@gmail.com",
   "traffic_source": "facebook", 
    "status": "declined",
    "amount": 1000,
    "refunded_amount": 0,
    "currency": "USD",
    "marketing_amount": 1000,
    "marketing_currency": "USD",
    "fraudulent": true
  },
  "transaction": {
    "id": "02b988721b9e9ba89c7f75fbb8d21ceb5ea29550b75cd",
    "operation": "pay",
    "status": "fail",
    "amount": 1000,
    "currency": "USD",
    "error": {
      "code": "4.09",
      "messages": [
        "Solid antifraud engine"
      ],
      "recommended_message_for_user": "Solid antifraud engine"
    },
    "created_at": "2020-04-24 07:29:20",
    "updated_at": "2020-04-24 07:29:20",
    "marketing_currency": "USD",
    "marketing_amount": 1000,
    "billing_details": {
      "address": "21 Bedford Ave",
      "zip": "91191",
      "country": "USA",
      "city": "Boston",
      "state": "NY"
    },
    "card": {
      "bank": "CITIZENS STATE BANK",
      "bin": "453245",
      "brand": "VISA",
      "country": "USA",
      "number": "453245XXXXXX2692",
      "card_exp_month": "03",
      "card_exp_year": 2021,
      "card_type": "DEBIT",
      "card_holder": "Kurt Snow"
    }
  },
  "payment_adviser": {
    "advise": "pay"
  }
}

 

    Charge Response Body Parameters | Fail 

ParameterTypeDescriptionExample
errorobjectObject with the information about the error 
error:codestringError code2.01
error:typestringType of en errorsoft
error:messagesobjectObject with a list of error messages 
error:messages:<attribute_name>stringThe name of the attribute in which the error was found 
error:messages:<error_message>arrayArray of error messages related to this attributeThis value should not be blank.
error:"recommended_message_for_user"objectAn object with a list of error messages displayed to the user 
error:"recommended_message_for_user":<error_message>stringError displayed to the user during the decline. (Decline error)"Order not found"

Charge Response Sample | Fail

{
  "error": {
    "code": "4.09",
    "type": "soft",
    "messages": [
      "Solid antifraud engine"
    ],
    "recommended_message_for_user": "Solid antifraud engine"
  }
}

Recurring transaction

Operation of the recurring payment. In contrast to Charge, token previously received is to be sent in the request instead of cardholder data. 
 

POST https://pay.solidgate.com/api/v1/recurring

Some recurring transactions (like one-click payments) can go through 3-D Secure verification.  You should be ready to show a bank page (ACS URL) for a user. URL of bank page you can receive by notification or request of check order status.

 

    Recurring Request Body Parameters

ParameterMandatoryTypeDescriptionExample
order_idYesstring(100)Order ID specified in the merchant system123443334
amountYesintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.1020
currencyYesstring(3)Order currency. 3 letter currency code under ISO-4217USD
recurring_tokenYesstring(255)Card token7ats8da7sd8-a66dfa7-a9s9das89t
order_descriptionYesstring(100)Order description in UTF-8 codePremium package
customer_emailYesstring(100)Customer emailjondou@gmail.com
ip_addressYesstring(50)Customer IP (only public ones)8.8.8.8
platformYesstring(6)Customer platform at the moment of payment. Available values: WEB- desktop, MOB - mobile version, APP - applicationWEB
geo_countryNostring(3)Customer country subject to ISO 3166-1 alpha-3GBR
order_dateNostring(50)Date of order creation in format YYYY-MM-DD-HH-MM-SS2015-12-21 11:21:30
order_itemsNostring(255)Order description in UTF-8 codeitem 1, item 2
customer_account_idNostring(100)Customer ID in the merchant's system4dad42f808
customer_first_nameNostring(100)Customer first nameJohn
customer_last_nameNostring(100)Customer last nameSnow
customer_phoneNostring(50)Customer phone number380111111111
customer_date_of_birthNostring(50)Birthdate in YYYY-MM-DD format2000-11-21
geo_cityNostring(100)Customer cityNew Castle
languageNostring(2)Customer language settings. Available values: RU - Russian, EN - Englishen
fraudulentNobooleanThe customer is detected by the merchant system to be suspicious one. The payment will be effected via 3DSTRUE
fail_urlNostring(255)URL of the merchant's page, where response with payment result will be senthttp://merchant.example/fail
success_urlNostring(255)URL of merchant page, which a customer will be redirected in case of unsuccessful paymenthttp://merchant.example/success
verifiedNobooleanThe user was verified on the shop sideTRUE
payment_typeNostring(25)Type of recurring payment. Should be provided for correct SCA routing1-click || retry || recurring || rebill || installment
retry_attemptNointegerNumber of retry payment1
traffic_sourceNostring(255)Source of trafficfacebook
transaction_sourceNostring(255)Source of transactions on the websitemain_menu
order_numberNointegerNumber of payments by user2
user_agentNostringUser-agent of customerMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
deviceNostringDevice of customeriPhone 8 iOS 12.0
websiteNostring(255)The website from which transaction took placeGoogle.com
typeNostringThe parameter for transaction-authorization before a recurring paymentauth
settle_intervalNointegerTime (in hours) when auto-settle should be done. Value of null means that the client must request settle on its own. Minimum of 0 means that executed in the near future, and maximum value is 168 hours. 1
force3dsNobooleanRouting payments flag for 3DS flow (enabled by Solid account manager)FALSE
header_acceptYes - 3D 2.0string(255)Header Accepttext/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng
header_accept_languageYes - 3D 2.0string(255)Header Accept Languageru-RU,ru;q=0.9,en-US;q=0.8
browser_color_depthYes - 3D 2.0integerThe colour depth of the browser window32
browser_screen_heightYes - 3D 2.0integerHeight of browser window1920
browser_screen_widthYes - 3D 2.0integerWidth of the browser window1280
browser_java_enabledYes - 3D 2.0booleanIs java enabled on the User's browserFALSE
browser_javascript_enabledYes - 3D 2.0booleanIs javascript enabled on the User browserFALSE
time_zone_offsetYes - 3D 2.0integerThe time difference, in minutes, between UTC time and the local time of the cardholder's browser60
payment_type_dataNoobjectObject with additional customer data to process payments in specific locations. The full list of additional fields is provided in Information section. 
order_metadataNoobjectMetadata is useful for storing additional, structured information about an object. The object consists of a set of key-value pairs (e.g. “coupon_code”: “NY2018", “partner_id”: “123989"). The callback notification returns an order_metadata from the order in each state. The validation of up to 10 fields with an upper limit of 255 characters. 

Recurring Request Sample | Success

{
  "amount": 2575,
  "recurring_token": "7ats8da7sd8-a66dfa7-a9s9das89t",
  "currency": "USD",
  "customer_account_id": "user_id",
  "customer_date_of_birth": "2000-11-21",
  "customer_email": "example.user@example-email.com",
  "customer_first_name": "John",
  "customer_last_name": "Snow",
  "customer_phone": "380000000000",
  "fraudulent": true,
  "geo_city": "New Castle",
  "geo_country": "GBR",
  "ip_address": "8.8.8.8",
  "language": "en",
  "order_date": "2015-12-21 11:21:30",
  "order_description": "Premium package",
  "order_id": "777",
  "order_items": "item 1, item 2",
  "platform": "WEB",
  "success_url": "http://merchant.example/success",
  "fail_url": "http://merchant.example/fail",
  "verified": true,
  "payment_type": "1-click",
  "retry_attempt": "1",
  "traffic_source": "facebook",
  "transaction_source": "main_menu",
  "device": "iPhone 8 iOS 12.0",
  "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36",
  "type": "auth",
  "settle_interval": 1,
  "header_accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng",
  "header_accept_language": "ru-RU,ru;q=0.9,en-US;q=0.8",
  "browser_color_depth": 32,
  "browser_screen_height": 1920,
  "browser_screen_width": 1280,
  "browser_java_enabled": true,
  "browser_javascript_enabled": true,
  "time_zone_offset": 60,
  "order_metadata": {
      "coupon_code": "NY2018",
      "partner_id": "123989",
      "udf_client_type": "vipClient",
      "udf_delivery_group": "fastDelivery"
  }
}

 

    Recurring Response Body Parameters | Success

ParameterTypeDescriptionExample
orderobjectAn object with information of the transaction. 
order:order_idstringOrder ID specified in the merchant system777
order:order_descriptionstringOrder description in UTF-8 code.Premium package
order:traffic_sourcestringSource of trafficfacebook
order:customer_emailstringCustomer emailjondou@gmail.com
order:amountintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.2575
order:currencystringOrder currency (3 letter code under ISO 4217)USD
order:fraudulentbooleanThe customer was detected on the merchant end to be a suspicious oneTRUE
order:marketing_amountintegerOrder amount converted in USD (or any other currency agreed) under open FX sources at the moment of transaction. This can be applied only for marketing forecasting.2575
order:marketing_currencystringThe currency of the order amount for marketing analytics.USD
order:refunded_amountintegerThe amount which was refunded0
order:descriptorstringThe descriptor for the transactionpayhere.com
order:statusstringStatus of payment processed. Types of order statuses are described in the respective directory.processing
transactionobjectAn object with information of the transaction. 
transaction:idstringTransaction identification within the order. The order can have several transactions.1495123020887591dc450088f1
transaction:operationstringTransaction type. Available values - recurring.recurring
transaction:statusstringTransaction status within the order.created
transaction:amountintegerTransaction amount.2575
transaction:currencystringTransaction currency.USD
transaction:created_atstringTransaction created DateTime2019-05-17 9:06:21
transaction:updated_atstringTransaction updated DateTime2019-05-17 9:06:21
transaction:cardobjectAn object with information about the card. Present in payment transactions. 
transaction:card:bankstringBank-emitent.NATIONWIDE BUILDING SOCIETY
transaction:card:binintegerCard BIN.444455
transaction:card:brandstringCard Brand.VISA
transaction:card:countrystringCountry of the bank.USA
transaction:card:numberstringMasked card number.444455XXXXXX6666
transaction:card:card_holderstringCardholder nameTest User
transaction:card:card_exp_monthstringA month of the expiration date on the card. (2-digit format)3
transaction:card:card_exp_yearintegerA year of the expiration date on the card. (4-digit format)2025
transaction:card:card_typestringA type of the card.DEBIT
transaction:card_tokenobject  
transaction:card_token:tokenstringCard token to be used for recurring payments. It will be returned in case of successful payment.b5ddb0a1c...1fc4da81ecdad52c0
transactionsobjectAn object with information of transactions. 
transactions:<transaction_id>objectTransaction identification within the order. It contains an object with detailed information about the specified transaction. The order can have several transactions.1495123020887591dc450088f1
transactions:<transaction_id>:idstringTransactions identification within the order.1495123020887591dc450088f1
transactions:<transaction_id>:operationstringTransaction type.recurring
transactions:<transaction_id>:statusstringTransaction status within the order. Transaction statuses are described in the respective directory.created
transactions:<transaction_id>:descriptorstringThe descriptor for the transactionpayhere.com
transactions:<transaction_id>:amountintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.2575
transactions:<transaction_id>:currencystringThe currency of the order amount for marketing analytics.USD
transactions:<transaction_id>:created_atstringTransaction created DateTime2019-05-17 9:06:21
transactions:<transaction_id>:updated_atstringTransaction updated DateTime2019-05-17 9:06:21
transactions:<transaction_id>:cardobjectAn object with information about the card. Present in payment transactions. 
transactions:<transaction_id>:card:binintegerCard BIN444455
transactions:<transaction_id>:card:brandstringCard BrandVISA
transactions:<transaction_id>:card:numberstringMasked card number444455XXXXXX6666
transactions:<transaction_id>:card:card_holderstringCardholder NameTest User
transactions:<transaction_id>:card:bankstringIssuer bankNATIONWIDE BUILDING SOCIETY
transactions:<transaction_id>:card:countrystringCountry of bankGBR
transactions:<transaction_id>:card:card_exp_monthstringA month of expiration date on card. (2-digit format)3
transactions:<transaction_id>:card:card_exp_yearintegerA year of expiration date on card. (4-digit format)2025
transactions:<transaction_id>:card:card_typestringA type of the card.DEBIT
transactions:<transaction_id>:card_tokenobject  
transactions:<transaction_id>:card_token:tokenstringCard token to be used for recurring payments. It will be returned in case of successful payment.8b5ddb0a1c...1fc4da81ecdad52c0
payment_adviserobject  
payment_adviser:advisestringRecommendation for next paymentpay / resign / recurring

Recurring Response Sample | Success

{
  "transactions": {
    "1495123020887591dc450088f1": {
      "id": "1495123020887591dc450088f1",
      "operation": "recurring",
      "status": "created",
      "amount": 2575,
      "currency": "USD",
      "created_at": "2019-05-17 09:06:21",
      "updated_at": "2019-05-17 09:06:32",
      "card": {
        "bank": "STATE BANK",
        "bin": 444455,
        "brand": "VISA",
        "country": "USA",
        "number": "444455XXXXXX6666",
        "card_holder": "cardholder name",
        "card_exp_month": "03",
        "card_exp_year": 2025,
        "card_type": "DEBIT"
      },
      "card_token": {
        "token": "8b5ddb087c38496bc23fb5a1ce82c9640e1b8128aa9fe5bf54574d10c8a0493c71a1fc4da81e3782397fdc7c142ccdad52c0"
      }
    }
  },
  "order": {
    "order_id": "777",
    "order_description":"Purchase for order group",
    "customer_email":"jondou@gmail.com",
    "traffic_source": "facebook", 
    "amount": 2575,
    "currency": "USD",
    "fraudulent": true,
    "marketing_amount": 2575,
    "marketing_currency": "USD",
    "status": "processing",
    "refunded_amount": 0
  },
  "transaction": {
    "id": "1495123020887591dc450088f1",
    "operation": "recurring",
    "status": "created",
    "amount": 100,
    "currency": "USD",
    "created_at": "2019-05-17 09:06:21",
    "updated_at": "2019-05-17 09:06:32",
    "card": {
      "bin": 344940,
      "bank": "NATIONWIDE BUILDING SOCIETY",
      "brand": "AMEX",
      "country": "USA",
      "number": "344940XXXXXX1496",
      "card_holder": "cardholder name",
      "card_exp_month": "03",
      "card_exp_year": 2025,
      "card_type": "DEBIT"
    },
    "card_token": {
      "token": "8c6ecf6a69fc58f45ead35ed7c2a8f6edde8d7eb20e82263cba3702fcfb8faee8c1684ab910f8bb0ecb69d98386a998bf2fd"
    }
  },
  "payment_adviser": {
    "advise": "pay"
  }
}

In case you want to perform the recurring operation with a parameter type = `auth`, please be informed that availaibility of 2-step transaction flow for recurring payments should be previously confirmed with your Account Manager - it's not available in certain regions.

Recurring Auth Request Sample | Success

{
  "amount": 100,
  "currency": "USD",
  "customer_account_id": "1234567",
  "customer_email": "kurt.Cruickshank.toster@gmail.com",
  "customer_phone": "+380954543322",
  "geo_country": "USA",
  "ip_address": "8.8.8.8",
  "language": "en",
  "order_description": "test",
  "order_id": "1561453107326recurringCascade",
  "order_items": "order_items",
  "platform": "WEB",
  "fraudulent": true,
  "traffic_source": "onOff",
  "recurring_token": "57f3be9f46dee46db195bad976f13cf5a9d682953b9c854ec20b7",
  "type": "auth",
  "order_metadata": {
      "coupon_code": "NY2018",
      "partner_id": "123989",
      "udf_client_type": "vipClient",
      "udf_delivery_group": "fastDelivery"
  }
}

Recurring Auth Response Sample | Success

{
  "transactions": {
    "2e5432e30d1f0eb8fbde8f34604310f05d11e2337e9b0": {
      "id": "2e5432e30d1f0eb8fbde8f34604310f05d11e2337e9b0",
      "operation": "recurring-auth",
      "status": "created",
      "amount": 100,
      "currency": "USD",
      "created_at": "2019-06-25 08:58:27",
      "updated_at": "2019-06-25 08:58:27",
      "card": {
        "bank": "SETEFI S P A",
        "bin": 535572,
        "brand": "MASTERCARD",
        "country": "ITA",
        "number": "535572XXXXXX1833",
        "card_exp_month": "02",
        "card_exp_year": 2022,
        "card_type": "DEBIT",
        "card_holder": "abigail wood"
      },
      "card_token": {
        "token": "57f3be9f46dee46db195bad976f13cf5a9d682953b9c854ec20b7"
      }
    }
  },
  "order": {
    "order_id": "1561453107326recurringCascade",
    "order_description":"Purchase for order group",
    "customer_email":"jondou@gmail.com",
    "traffic_source": "facebook", 
    "status": "processing",
    "amount": 100,
    "refunded_amount": 0,
    "currency": "USD",
    "marketing_amount": 100,
    "marketing_currency": "USD",
    "fraudulent": true
  },
  "transaction": {
    "id": "2e5432e30d1f0eb8fbde8f34604310f05d11e2337e9b0",
    "operation": "recurring-auth",
    "status": "created",
    "amount": 100,
    "currency": "USD",
    "created_at": "2019-06-25 08:58:27",
    "updated_at": "2019-06-25 08:58:27",
    "card": {
      "bank": "SETEFI S P A",
      "bin": 535572,
      "brand": "MASTERCARD",
      "country": "ITA",
      "number": "535572XXXXXX1833",
      "card_exp_month": "02",
      "card_exp_year": 2022,
      "card_type": "DEBIT",
      "card_holder": "abigail wood"
    },
    "card_token": {
      "token": "57f3be9f46dee46db195bad976f13cf5a9d682953b9c854ec20b7"
    }
  }
}

Recurring Auth Response Sample | Final Status

{
  "transactions": {
    "2e5432e30d1f0eb8fbde8f34604310f05d11e2337e9b0": {
      "id": "2e5432e30d1f0eb8fbde8f34604310f05d11e2337e9b0",
      "operation": "recurring",
      "status": "success",
      "descriptor": "FAKE_PSP",
      "amount": 100,
      "currency": "USD",
      "created_at": "2019-06-25 08:58:27",
      "updated_at": "2019-06-25 08:58:28",
      "card": {
        "bank": "SETEFI S P A",
        "bin": "535572",
        "brand": "MASTERCARD",
        "country": "ITA",
        "number": "535572XXXXXX1833",
        "card_exp_month": "02",
        "card_exp_year": 2022,
        "card_type": "DEBIT",
        "card_holder": "abigail wood"
      },
      "card_token": {
        "token": "57f3be9f46dee46db195bad976f13cf5a9d682953b9c854ec20b7"
      }
    }
  },
  "order": {
    "order_id": "1561453107326recurringCascade",
    "order_description":"Purchase for order group",
    "customer_email":"jondou@gmail.com",
    "traffic_source": "facebook", 
    "status": "approved",
    "amount": 100,
    "refunded_amount": 0,
    "currency": "USD",
    "marketing_amount": 100,
    "marketing_currency": "USD",
    "processing_amount": 100,
    "processing_currency": "USD",
    "descriptor": "FAKE_PSP",
    "fraudulent": true,
  },
  "payment_adviser": {
    "advise": "recurring"
  }
}

 

    Recurring Response Body Parameters | Fail

ParameterTypeDescriptionExample
errorobjectObject with the information about the error 
error:"recommended_message_for_user"objectAn object with a list of error messages displayed to the user 
error:"recommended_message_for_user":<error_message>stringError displayed to the user during the decline. (Decline error)"Order not found"
error:codestringError code2.01
error:messagesobjectObject with a list of error messages 
error:messages:<attribute_name>stringThe name of the attribute in which the error was found 
error:messages:<error_message>arrayArray of error messages related to this attributeThis value should not be blank.
error:typestringType of en errorsoft

Recurring Response Sample | Fail

{
  "error": {
    "code": "4.09",
    "type": "soft",
    "messages": [
      "Solid antifraud engine"
    ],
    "recommended_message_for_user": "Solid antifraud engine"
  }
}

Solid can enable 3DS payments for recurring (tokenized) payments. In order to set up this option, you need to contact your account manager at Solid.

You should be ready to show the 3DS bank page (ACS URL) for a user after a recurring request, `verify_url` can be received from the following  requests: Status or Notification.

Request for recurring 3DS is the same as for the recurring method.   

Google Pay

By integrating Google Pay into your website or Android application, your customers can securely make one-touch payments using any credit or debit card connected to their Google account.

To start processing Google Pay™ payments, you must first register with Google. Once the integration is complete, you can add the 'Google Pay™' button to your checkout page and start requesting your customers' encrypted payment information.

For information on integrating with Google Pay, first, refer to the Google Pay API guide, Google Pay Web integration checklist, Google Pay Web Brand Guidelines, Google Pay Android integration checklist and Google Pay Android brand guidelines.

When you submit a payment data request to the Google API, be sure to include the following parameters:

'gateway': 'solid'
'gatewayMerchantId': '<replace with key from SOLID>'

Google Pay Web Request Sample

{
	apiVersion: 2,
	apiVersionMinor: 0,
	allowedPaymentMethods: [{
		type: 'CARD',
		parameters: {
			allowedAuthMethods: ['PAN_ONLY', 'CRYPTOGRAM_3DS'],
			allowedCardNetworks: ['AMEX', 'DISCOVER', 'MASTERCARD', 'VISA']
		},
		tokenizationSpecification: {
			type: 'PAYMENT_GATEWAY',
			parameters: {
				'gateway': 'solid',
				'gatewayMerchantId': ''
			}
		}
	}]
}

POST https://pay.solidgate.com/api/v1/google-pay

Google Pay Request Body Parameters

ParameterMandatoryTypeDescriptionExample
order_idyesstring(100)Order ID specified in the merchant system.1526915864
amountyesintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.2000
currencyyesstring(3)Order currency. 3 letter currency code under ISO-4217.USD
order_descriptionyesstring(100)Order description in UTF-8 code.

Example description

 

customer_emailyesstring(100)Customer email.

example.test@test.com

 

ip_addressyesstring(50)Customer IP (only public ones).8.8.8.8
platformyesstring(6)Customer platform at the moment of payment. Available values: WEB- desktop, MOB - mobile version, APP - application.WEB
geo_countrynostring(3)Customer country subject to ISO 3166-1 alpha-3.GBR
order_datenostring(50)Date of order creation in format YYYY-MM-DD-HH-MM-SS.2015-12-21 11:21:30
order_itemsnostring(255)Order description in UTF-8 code.item 1, item 2
customer_account_idYes, for the subscription workflowstring(100)Customer ID in the merchant's system. 4dad42f808
customer_first_namenostring(100)Customer first name.John
customer_last_namenostring(100)Customer last name.Snow
customer_phonenostring(50)Customer phone number.380111111111
customer_date_of_birthnostring(50)Birthdate in YYYY-MM-DD format.2000-11-21
geo_citynostring(100)Customer City.New Castle
languagenostring(2)Customer language settings. Available values: RU - Russian, EN - English.en
fraudulentnobooleanCustomer is detected by the merchant system to be suspicious one. The payment will be effected via 3DS.TRUE
verifiednobooleanThe user was verified on the shop side.TRUE
retry_attemptnointegerA number of retry payment.1
traffic_sourcenostring(255)Source of traffic.facebook
transaction_sourcenostring(255)Source of transactions on site.main_menu
user_agentnostringUser-agent of the customer.

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36

 

order_numbernointegerA number of payments by the user.1
addressnostring(100)User billing addressNew York, 10005, 15 William St
statenostring(10)User billing stateWA
zip_codenostring(10)Parameter for identifying location (user billing zip code). Mandatory parameter for USA location.10005
citynostring(100)User billing city New York
signedMessageyesstring

A serialized JSON string containing the encryptedMessage, ephemeralPublicKey, and tag. To simplify the signature verification process, this value is serialized.

 

 
protocolVersionyesstring

Identifies which encryption/signing scheme this message has been created. In this way, the protocol can evolve over time if needed. If it is not set, assume ECv0.

 

 
signatureyesstring

Verifies the message came from Google. The signature is created using ECDSA.

 

 
deviceNostringDevice of the customer.

iPhone 8 iOS 12.0

 

websiteNostring(255)Website from which transaction took place.google.com
header_acceptYes - 3D 2.0string(255)Header Accept.text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng
header_accept_languageYes - 3D 2.0string(255)Header Accept Language.ru-RU,ru;q=0.9,en-US;q=0.8
browser_color_depthYes - 3D 2.0integerColor depth of browser window.32
browser_screen_heightYes - 3D 2.0integerHeight of browser window.1920
browser_screen_widthYes - 3D 2.0integerWidth of browser window.1280
browser_java_enabledYes - 3D 2.0booleanIs java enabled on User browser.FALSE
browser_javascript_enabledYes - 3D 2.0booleanIs javascript enabled on User browser.FALSE
time_zone_offsetYes - 3D 2.0integerThe time difference, in minutes, between UTC time and the local time of the cardholder's browser.1
success_urlNostring(255)URL of merchant page, which a customer will be redirected in case of successful paymenthttp://merchant.example/success
fail_urlNostring(255)URL of merchant page, which a customer will be redirected in case of failed paymenthttp://merchant.example/fail
force3dsNobooleanRouting payments flag for 3DS flow (enabled by Solid account manager) FALSE
payment_type_dataNoobjectObject with additional customer data to process payments in specific locations. The full list of additional fields is provided in Information section. 
order_metadataNoobjectMetadata is useful for storing additional, structured information about an object. The object consists of a set of key-value pairs (e.g. “coupon_code”: “NY2018", “partner_id”: “123989"). The callback notification returns an order_metadata from the order in each state. The validation of up to 10 fields with an upper limit of 255 characters. 

Google Pay Request Sample

{
	"order_id": "1530101603341",
	"amount": 2000,
	"currency": "USD",
	"order_description": "Example description",
	"customer_email": "googlepaytoster@gmail.com",
	"ip_address": "8.8.8.8",
	"platform": "WEB",
	"geo_country": "CAN",
	"order_date": "2015-12-21 11:21:30",
	"order_items": "item 1, item 2",
	"customer_account_id": "4dad42f808",
	"customer_first_name": "John",
	"customer_last_name": "Snow",
	"customer_phone": "380111111111",
	"customer_date_of_birth": "2000-11-21",
	"geo_city": "New Castle",
	"language": "en",
	"fraudulent": true,
        "force3ds": false,
	"verified": true,
	"retry_attempt": 1,
	"traffic_source": "googlePay",
	"transaction_source": "main_menu",
	"user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36",
	"order_number": 1,
	"signedMessage": "{S4pvoy+1bCgGkKC4j/3/n5T0CSITOPFkFdV/m0KWkytlc1SLlYs1+OVToxjSNTfdc/pyZ8/7mjqDPrGzi86uJenRYrgadPNw3hwM3rkxKDcHAZswKC2WEvRnU4BnF9LSnSxYslgq+pSzp+BsUBFKGPjMo1ZsdCQLqlavj+VbxQKg4cgknACwWQrnll+gk+dir3BN/jJB/uJwPKglCG79gAge2jeViJUob1NAyFfInEDbVEYiQovCZO3yuwDrNVaL1uAufpB/eogIQQz6LYjW07v3Xni1As9GjGWVZvkmjLUyY9aX02ecEqhCTKFTd4crMsX4Nm8vjgejzUGKvLWcU7vVS3xtVBNp87k3D5NJ6V3tuPJdIHeH0kEq43IQTgTQIku+RnBkU/8KLBWPNWW7FRNm0AGVL8ZcE1ym3f2avl6CkQEWv311NEkbC/NEVFBh/ZFqzezqLyyzaUgepGFD3RbclihwLGvx0WXwe7RPTVh3raCJpDJOofjHg2mMNNL8xSQOWtmZWrxyClp10atxNdrPdcB3YVmbEpWR1d48eOW+AgEDc3bmUg5}",
	"protocolVersion": "ECv1",
	"signature": "MEQCIHZ8oOEXz0DzZTO3uU+zdMfmihpb3OMr3pQQ0HHgVLyiAiBmWqUzv3FuTGQCLyZA20awLfydQiR0IcOUBJlj/ZlaHQ==",
        "order_metadata": {
                      "coupon_code": "NY2018",
                      "partner_id": "123989",
                      "udf_client_type": "vipClient",
                      "udf_delivery_group": "fastDelivery"
         }
}

Google 3DS going through a few steps :

1) Google request
2) Redirect to URL 3DS verification

Please, note, `verify_url` can be received from the following  requests: Status or Notification.

Google Pay Response Body Parameters 

ParameterTypeDescriptionExample
transactionobjectAn object with information of transactions. 
transaction:idobjectTransaction identification within the order. It contains an object with detailed information about the specified transaction. Order can have several transactions.15301021459245b33818384a4e
transaction:operationstringTransaction type.google-pay
transaction:statusstringTransaction status within the order. Transaction statuses are described in respective directory.created
transaction:amountintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.100
transaction:currencystringTransaction currencyUSD
transactions:<transaction_id>:card:card token:tokenstringCard token551c1d70374af08b92cf6e91...087bc05
orderobjectObject with order information. 
order:order_idstringOrder ID specified in the merchant system.1530102145924
order:order_descriptionstringOrder description in UTF-8 code.Premium package
order:traffic_sourcestringSource of trafficfacebook
order:customer_emailstringCustomer emailjondou@gmail.com
order:amountintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.100
order:currencystringOrder currency (3 letter code under ISO 4217).USD
order:refunded amountintegerAmount of refund0
order:fraudulentbooleanThe customer was detected on the merchant end to be suspicious one.true
order:marketing_amountintegerOrder amount converted in USD (or any other currency agreed) under open FX sources at the moment of transaction. This can be applied only for marketing forecasting.100
order:marketing_currencystringThe currency of order amount for marketing analytics.USD
order:statusstringStatus of payment processed. Types of order statuses are described in the respective directory.processing

Google Pay Response Example

{
	"order": {
		"order_id": "155446XXXXXX5742",
                "order_description": "Purchase for order group",
                "customer_email": "jondou@gmail.com",
                "traffic_source": "facebook", 
		"status": "processing",
		"amount": 100,
		"refunded_amount": 0,
		"currency": "USD",
		"marketing_amount": 100,
		"marketing_currency": "USD",
		"fraudulent": true
	},
	"transaction": {
		"id": "155446XXXXXX7425ca743d4db1a1",
		"operation": "google-pay",
		"status": "created",
		"amount": 100,
		"currency": "USD"
	}
}

Apple Pay

Start seamlessly accepting credit card payments and eliminate the need for your customers to type card and shipping details manually. Apple Pay payments are authorized through Touch ID and Face ID.

The merchant must obtain its own Apple Pay certificate. The merchant must pay for and have an active Apple account, and an Apple merchant ID must be created. Below are the required actions to be completed in order to obtain the Apple pay certificates from Apple.

Apple Pay Certification

Login to https://developer.apple.com/

  1. Click on the Certificates, IDs & Profiles option.
  2. From the newly opened screen select Merchant IDs and click on the (+) button.
  3. Select an ID and enter a short description.
  4. Once the ID is created, a confirmation screen appears. It is recommended that the merchant ensures that the entered data is valid.
  5. Click the Register button. If the registration is successful a screen showing ‘Registration complete’ appears.
  6. Click on the row with the newly created ID and choose the Edit button and the options to create Identity and Payment Processing Certificates are shown. On this page, the process of adding/verifying domains can be started.


Creating a Payment Processing Certificate

  1. From the Edit screen of the Merchant IDs panel choose the "Create Certificate" button.
  2. Answer “No” to the question “Will payments associated with this Merchant ID be processed exclusively in China?” and click “Continue”. The next screen contains the instruction on how to create the CSR (and the accompanying it public and private keys).
  3. Get certificate by signing request (.csr) file from Solid Support. This is the file that needs to be uploaded to Apple’s web page.
  4. From the Browse dialogue choose the file by clicking on the “Choose File” button and click “Continue”. If the certificate is successfully created, a screen will appear allowing the signed .cer file to be downloaded. Click on the “Download” button and save the file to the disk.
  5. The Payment Processing Certificate (with a .cer extension) must be sent to Solid Support.
     

Creating an Identity Certificate

The identity certificate is needed when merchants want to process Apple Pay payments that originate from within a web page since Apple needs to verify the ownership of the domain from which the payment is initialized. One identity certificate may be used to identify multiple domains.

  1. From Merchant IDs select the desired ID for creating the identity certificate. Choose the Create Certificate button found in the Merchant Identity Certificate box.
  2. The steps for creating and exporting the certificates are the same as for Payment Processing Certificates with the only difference being that the following type should be chosen: Key Size – 2048 bits; Algorithm: RSA.

Adding Domains to the Apple Merchant ID

To use the “Apple Pay on the Web” each of the domains from which the payment request will be made should be verified. The verification is done by uploading a file on a specified location on the merchant’s website.

  1. Select the Add Domain button from the Merchant IDs screen and the Register Merchant Domain window appears
    NOTE: There are a few requirements to the server on which the domain runs (e.g. the merchant server must support the TLS 1.2 protocol and the pages must be served via https). More information can be found here:https://developer.apple.com/reference/applepayjs. The above link also contains a complete guide on how to verify the domain.
  2. From the Register, Merchant Domain window enter the desired domain to be verified and should press Continue.
  3. Download the file generated by Apple and upload it to the path shown on the screen.
  4. Once the file is uploaded the client must click on the Verify button. The uploaded file must be publicly accessible via https.

Integrate with Apple Pay

To process Apple Pay payments, you must configure your Apple Developer account, complete the certification process, and enhance your iOS app or website to have the capability to access Apple Pay payments.

For Apple Pay configuration resources, please refer to the following:

Devices that work with apple pay

Liability shift

Apple Pay transactions using Mastercard and American Express enjoy a liability shift to the card issuer — similar to 3-D secure transactions. Please be aware that although this is a known practice, the issuers are not bound by these terms and can change the liability agreement at any time.

POST https://pay.solidgate.com/api/v1/apple-pay

 Apple Pay Request Body Parameters 

ParameterMandatoryTypeDescriptionExample
order_idyesstring(100)Order ID specified in the merchant system.1526915864
amountyesintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.2000
currencyyesstring(3)Order currency. 3 letter currency code under ISO-4217.USD
order_descriptionyesstring(100)Order description in UTF-8 code.

Example description

 

customer_emailyesstring(100)Customer email.

example.test@test.com

 

ip_addressyesstring(50)Customer IP (only public ones).8.8.8.8
platformyesstring(6)Customer platform at the moment of payment. Available values: WEB- desktop, MOB - mobile version, APP - application.WEB
geo_countrynostring(3)Customer country subject to ISO 3166-1 alpha-3.GBR
order_datenostring(50)Date of order creation in format YYYY-MM-DD-HH-MM-SS.2015-12-21 11:21:30
order_itemsnostring(255)Order description in UTF-8 code.item 1, item 2
customer_account_idnostring(100)Customer ID in the merchant's system.4dad42f808
customer_first_namenostring(100)Customer first name.John
customer_last_namenostring(100)Customer last name.Snow
customer_phonenostring(50)Customer phone number.380111111111
customer_date_of_birthnostring(50)Birthdate in YYYY-MM-DD format.2000-11-21
geo_citynostring(100)Customer City.New Castle
languagenostring(2)Customer language settings. Available values: RU - Russian, EN - English.en
fraudulentnobooleanA customer is detected by the merchant system to be suspicious one. The payment will be effected via 3DS.TRUE
verifiednobooleanThe user was verified on the shop side.TRUE
retry_attemptnointegerA number of retry payment.1
traffic_sourcenostring(255)Source of traffic.facebook
transaction_sourcenostring(255)Source of transactions on site.main_menu
user_agentnostringUser-agent of the customer.Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
order_numbernointegerA number of payments by the user.1
versionyesstringVersion information about the payment token.EC_v1
datayesstringEncrypted payment data.

qIEHeSmLKw3C5...ZIuf2oPeLhQ1DCaQj

 

signatureyesstringSignature of the payment and header data. The signature includes the signing certificate, its intermediate CA certificate, and information about the signing algorithm.

1UdDwEB/wQEAwIHgDAPBgkqh...92ICIAR2

 

networknostringCard brand

VISA, MASTERCARD

 

headeryesobject

An object with header information.

 

 
header : transactionIdyesstringTransaction identifier, generated on the device.

7126df4ff8ac61dc60278b5cd549cc98d16b8f41

 

header: publicKeyHashyesstringHash of the X.509 encoded public key bytes of the merchant’s certificate.

mQaQhyhrXX3ZDSQv...ByX0iii0MVHthSQiXQ=

 

header: ephemeralPublicKeyyes/nostringEphemeral public key bytes. (Mandatory if the version is EC_v1 only)

wXtTDj1Cc....5sOXCi7FoVgay

 

header: applicationDatanostring

Hash of the applicationData property of the original PKPaymentRequest object.

 

 
header: wrappedKeyyes/nostring

The symmetric key wrapped using your RSA public key. ( Mandatory if the version is RSA_v1 only)

 

 
deviceNostringDevice of customer

iPhone 8 iOS 12.0

 

websiteNostring(255)Website from which transaction took place.google.com
header_acceptYes - 3D 2.0string(255)Header Accept.text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng
header_accept_languageYes - 3D 2.0string(255)Header Accept Language.ru-RU,ru;q=0.9,en-US;q=0.8
browser_color_depthYes - 3D 2.0integerColor depth of browser window.32
browser_screen_heightYes - 3D 2.0integerHeight of browser window.1920
browser_screen_widthYes - 3D 2.0integerWidth of browser window.1280
browser_java_enabledYes - 3D 2.0booleanIs java enabled on User browser.FALSE
browser_javascript_enabledYes - 3D 2.0booleanIs javascript enabled on User browser.FALSE
time_zone_offsetYes - 3D 2.0integerThe time difference, in minutes, between UTC time and the local time of the cardholder's browser.1
success_urlNostring(255)URL of merchant page, which a customer will be redirected in case of successful paymenthttp://merchant.example/success
fail_urlNostring(255)URL of merchant page, which a customer will be redirected in case of failed paymenthttp://merchant.example/fail
payment_type_dataNoobjectObject with additional customer data to process payments in specific locations. The full list of additional fields is provided in Information section. 
order_metadataNoobjectMetadata is useful for storing additional, structured information about an object. The object consists of a set of key-value pairs (e.g. “coupon_code”: “NY2018", “partner_id”: “123989"). The callback notification returns an order_metadata from the order in each state. The validation of up to 10 fields with an upper limit of 255 characters. 

Apple Pay Request Sample

{
	"amount": 2000,
	"version": "EC_v1",
	"data": "ZJmKTt/Etfpu4zdOc02L6kTBAkUVUqKTsygYX3+sJVYJ1z0YW4i+c14gqSTcqIEHeSmLKw3C5...ZIuf2oPeLhQ1DCaQjw2j0F+56NoCxRjhwQ45HK7lGVy3jOS6ntMhR8=",
	"signature": "MIAGCSqGSIb3DQEHAqCAMIACAQExDZiB1tL2FwcGxlYWljYTMuY3JsMA4GA1UdDwEB/wQEAwIHgDAPBgkqh...92ICIAR2zklUTV63nd8KYl/ZAleY/9HRrrq2m9G30eYy6pj1AAAAAAAA",
	"header": {
		"ephemeralPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEwXtTDj1Cc....5sOXCi7FoVgayKwF+dMNAc6rF2m57yZg6HS841je82NRrGN7exAAuVmJg==",
		"publicKeyHash": "mQaQhyhrXX3ZDSQv...ByX0iii0MVHthSQiXQ=",
		"transactionId": "727126df4ff8ac61dc60278b5cd549cc98d16b8f41b0466e5e330178d14fdf38"
	},
	"currency": "USD",
	"order_id": 1526915864,
	"network": "MASTERCARD",
	"platform": "WEB",
	"geo_country": "GBR",
	"customer_email": "example.test@test.com",
	"ip_address": "8.8.8.8",
	"order_description": "Example description",
	"customer_first_name": "First Name",
	"customer_last_name": "Last Name",
	"customer_phone": "2124141241",
	"language": "en",
	"user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36",
        "order_metadata": {
                      "coupon_code": "NY2018",
                      "partner_id": "123989",
                      "udf_client_type": "vipClient",
                      "udf_delivery_group": "fastDelivery"
         }
}

Apple Pay Response Body Parameters 

ParameterTypeDescriptionExample
transactionsobject

An object with information of transactions.

 

 
transactions:<transaction_id>objectTransaction identification within the order. It contains an object with detailed information about the specified transaction. The order can have several transactions.15269093845b02c9c89391d
transactions:<transaction_id>:idstringTransactions identification within the order.15269093845b02c9c89391d
transactions:<transaction_id>:operationstringTransaction type.apple-pay
transactions:<transaction_id>:statusstringTransaction status within the order. Transaction statuses are described in the respective directory.created
transactions:<transaction_id>:amountintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.2000
transactions:<transaction_id>:currencystringTransaction currencyUSD
orderobject

An object with order information.

 

 
order:order_idstringOrder ID specified in the merchant system.123443334
order:order_descriptionstringOrder description in UTF-8 code.Premium package
order:traffic_sourcestringSource of trafficfacebook
order:customer_emailstringCustomer emailjondou@gmail.com
order:amountintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.2575
order:refunded_amountintegerAmount of refund0
order:currencystringOrder currency (3 letter code under ISO 4217).USD
order:fraudulentbooleanThe customer was detected on the merchant side to be suspicious one.TRUE
order:marketing_amountintegerOrder amount converted in USD (or any other currency agreed) under open FX sources at the moment of transaction. This can be applied only for marketing forecasting.2000
order:marketing_currencystringThe currency of the order amount for marketing analytics.USD
order:statusstringStatus of payment processed. Types of order statuses are described in the respective directory.created
transactionobjectAn object with information of the transaction. 
transaction:idstringTransaction identification within the order. The order can have several transactions.15269093845b02c9c89391d
transaction:operationstringTransaction type. Available values - pay.apple-pay
transaction:statusstringTransaction status within the order.created
transaction:amountintegerTransaction amount.20
transaction:currencystringTransaction currency.USD
payment_adviserobject  
payment_adviser:advisestringRecommendation for the next paymentpay / resign / recurring

Apple Pay Response Sample

{
	"transactions": {
		"15269093845b02c9c89391d": {
			"id": "15269093845b02c9c89391d",
			"operation": "apple-pay",
			"status": "created",
			"amount": 20,
			"currency": "USD"
		}
	},
	"order": {
		"order_id": 1526909384,
                "order_description": "Purchase for order group",
                "customer_email": "jondou@gmail.com",
                "traffic_source": "facebook", 
		"status": "processing",
		"amount": 20,
		"refunded_amount": 0,
		"currency": "USD",
		"marketing_amount": 20,
		"marketing_currency": "USD",
		"fraudulent": false
	},
	"transaction": {
		"id": "15269093845b02c9c89391d",
		"operation": "apple-pay",
		"status": "created",
		"amount": 20,
		"currency": "USD"
	},
	"payment_adviser": {
		"advise": "pay"
	}
}

Resign 1-click

Resign 1-click allows you to perform transactions via token (1-click payments) but also requesting a CVV from the user to additionally verify the transaction.

Please note that this request is available only for PCI-DSS certified merchants.

POST https://pay.solidgate.com/api/v1/resign

Resign 3DS going through a few steps :

1) Resign request
2) Redirect to URL of 3-D Secure verification

Please, note, `verify_url` can be received from the following  requests: Status or Notification.

 

    Resign Request Body Parameters

ParameterMandatoryTypeDescriptionExample
order_idYesstring(100)Order ID specified in the merchant system123443334
amountYesintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.1020
currencyYesstring(3)Order currency. 3 letter currency code under ISO-4217USD
recurring_tokenYesstring(255)Card token7ats8da7sd8-a66dfa7-a9s9das89t
card_cvvYesstring(4)CVV2/CVC2 of the card, 3 or 4 digits code123
order_descriptionYesstring(100)Order description in UTF-8 codePremium package
customer_emailYesstring(100)Customer emailjondou@gmail.com
ip_addressYesstring(50)Customer IP (only public ones)8.8.8.8
platformYesstring(6)Customer platform at the moment of payment. Available values: WEB- desktop, MOB - mobile version, APP - application.WEB
fail_urlNostring(255)URL of merchant page, which a customer will be redirected in case of unsuccessful paymenthttp://merchant.example/fail
success_urlNostring(255)URL of merchant page, which a customer will be redirected in case of successful paymenthttp://merchant.example/success
geo_countryNostring(3)Customer country subject to ISO 3166-1 alpha-3GBR
order_dateNostring(50)Date of order creation in format YYYY-MM-DD-HH-MM-SS2015-12-21 11:21:30
order_itemsNostring(255)Order description in UTF-8 codeitem 1, item 2
customer_account_idNostring(100)Customer ID in the merchant's system.4dad42f808
customer_first_nameNostring(100)Customer's first nameJohn
customer_last_nameNostring(100)Customer last nameSnow
customer_phoneNostring(50)Customer phone number380111111111
customer_date_of_birthNostring(50)Birthdate in YYYY-MM-DD format2000-11-21
geo_cityNostring(100)Customer CityNew Castle
languageNostring(2)Customer language settings. Available values: RU - Russian, EN - Englishen
fraudulentNobooleanA customer is detected by the merchant system to be suspicious one. The payment will be effected via 3DS.TRUE
verifiedNobooleanA user was verified on the shop side.TRUE
retry_attemptNointegerNumber of retry payment1
traffic_sourceNostring(255)Source of traffic.facebook
transaction_sourceNostring(255)Source of transactions on the website.main_menu
user_agentNostringUser-agent of customerMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
deviceNostringDevice of customeriPhone 8 iOS 12.0
websiteNostringThe website from which transaction took place.google.com
typeNostringThe parameter for transaction-authorizationauth
order_numberNointegerNumber of payments by user1
force3dsNobooleanRouting payments flag for 3DS flow (enabled by Solid account manager)FALSE
header_acceptYes - 3D 2.0string(255)Header Accept.text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng
header_accept_languageYes - 3D 2.0string(255)Header Accept Language.ru-RU,ru;q=0.9,en-US;q=0.8
browser_color_depthYes - 3D 2.0integerThe colour depth of the browser window.32
browser_screen_heightYes - 3D 2.0integerHeight of browser window.1920
browser_screen_widthYes - 3D 2.0integerWidth of the browser window.1280
browser_java_enabledYes - 3D 2.0booleanIs java enabled on User's browser.FALSE
browser_javascript_enabledYes - 3D 2.0booleanIs javascript enabled on User's browser.FALSE
time_zone_offsetYes - 3D 2.0integerThe time difference, in minutes, between UTC time and the local time of the cardholder's browser.-1
settle_intervalNointegerTime (in hours) when auto-settle should be done. Value of null means that the client must request settle on its own. Minimum of 0 means that executed in the near future, and maximum value is 168 hours. 1
payment_type_dataNoobjectObject with additional customer data to process payments in specific locations. The full list of additional fields is provided in Information section. 
order_metadataNoobjectMetadata is useful for storing additional, structured information about an object. The object consists of a set of key-value pairs (e.g. “coupon_code”: “NY2018", “partner_id”: “123989"). The callback notification returns an order_metadata from the order in each state. The validation of up to 10 fields with an upper limit of 255 characters. 

Please, note, that `success_url` and `fail_url`  is a mandatory field that is needed to redirect a user after completed 3-D Secure verification.

Resign Request Sample | Success

{
  "amount": 2575,
  "recurring_token": "7ats8da7sd8-a66dfa7-a9s9das89t",
  "card_cvv": "123",
  "currency": "USD",
  "customer_account_id": "user_id",
  "customer_date_of_birth": "2000-11-21",
  "customer_email": "example.user@example-email.com",
  "customer_first_name": "John",
  "customer_last_name": "Snow",
  "customer_phone": "380000000000",
  "fraudulent": true,
  "geo_city": "New Castle",
  "geo_country": "GBR",
  "ip_address": "8.8.8.8",
  "language": "en",
  "order_date": "2015-12-21 11:21:30",
  "order_description": "Premium package",
  "order_id": "777",
  "order_items": "item 1, item 2",
  "platform": "WEB",
  "success_url": "http://merchant.example/success",
  "fail_url": "http://merchant.example/fail",
  "order_number": "1",
  "header_accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng",
  "header_accept_language": "ru-RU,ru;q=0.9,en-US;q=0.8",
  "browser_color_depth": 32,
  "browser_screen_height": 1920,
  "browser_screen_width": 1280,
  "browser_java_enabled": true,
  "browser_javascript_enabled": true,
  "time_zone_offset": 60,
  "order_metadata": {
          "coupon_code": "NY2018",
          "partner_id": "123989",
          "udf_client_type": "vipClient",
          "udf_delivery_group": "fastDelivery"
  }
}

 

    Resign Response Body Parameters | Success

ParameterTypeDescriptionExample
orderobjectAn object with order information 
order:order_idstringOrder ID specified in the merchant system777
order:order_descriptionstringOrder description in UTF-8 code.Premium package
order:traffic_sourcestringSource of trafficfacebook
order:customer_emailstringCustomer emailjondou@gmail.com
order: amountintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.2575
order:currencystringOrder currency (3 letter code under ISO 4217)USD
order:fraudulentbooleanA customer was detected on the merchant end to be a suspicious oneTRUE
order:marketing_amountintegerOrder amount converted in USD (or any other currency agreed) under open FX sources at the moment of transaction. This can be applied only for marketing forecasting.2575
order:marketing_currencystringThe currency of the order amount for marketing analytics.USD
order:statusstringStatus of payment processed. Types of order statuses are described in the respective directory.created
order:refunded_amountintegerAn amount which was refunded0
order:descriptorstringThe descriptor for the transactionpayhere.com
transactionsobjectAn object with information of transactions. 
transactions:<transaction_id>objectTransaction identification within order. It contains an object with detailed information of specified transaction. Order can have several transactions.00016857481e16b07fc
transactions:<transaction_id>:idstringTransactions identification within order.00016857481e16b07fc
transactions:<transaction_id>:operationstringTransaction type.pay
transactions:<transaction_id>:statusstringTransaction status within order.
Transaction statuses are described in respective directory.
created
transactions:<transaction_id>:descriptorstringThe descriptor for the transactionpayhere.com
transactions:<transaction_id>:amountintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.2575
transactions:<transaction_id>:currencystringTransaction currency.USD
transactions:<transaction_id>:created_atstringTransaction created DateTime2019-05-17 9:06:21
transactions:<transaction_id>:updated_atstringTransaction updated DateTime2019-05-17 9:06:21
transactions:<transaction_id>:cardobjectAn object with information about the card. Present in payment transactions. 
transactions:<transaction_id>:card:binstringCard BIN444455
transactions:<transaction_id>:card:brandstringCard BrandVISA
transactions:<transaction_id>:card:numberstringMasked card number444455XXXXXX6666
transactions:<transaction_id>:card:card_holderstringCardholder nameTest User
transactions:<transaction_id>:card:bankstringBank emitentSTATE BANK
transactions:<transaction_id>:card:countrystringCountry of bankUSA
transactions:<transaction_id>:card:card_exp_monthstringA month of card expiration (2-digit format).3
transactions:<transaction_id>:card:card_exp_yearintegerA year of card expiration (4-digit format).2025
transactions:<transaction_id>:card:card_typestringA type of the card.DEBIT
transactions:<transaction_id>:card_tokenobject  
transactions:<transaction_id>:card_token:tokenstringCard token to be used for recurring payments. It will be returned in case of successful payment.22f1cdc766a318...e8fa3a68f
transactionobjectAn object with information of the transaction. 
transaction:idstringTransaction identification within the order. The order can have several transactions.00016857481e16b07fc
transaction:operationstringTransaction type. Available values - pay.pay
transaction:statusstringTransaction status within the order.created
transaction:amountintegerTransaction mount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.2575
transaction:currencystringTransaction currency.USD
transaction:created_atstringTransaction created DateTime2019-05-17 9:06:21
transaction:updated_atstringTransaction updated DateTime2019-05-17 9:06:21
transaction:cardobjectAn object with information about the card. Present in payment transactions. 
transaction:card:bankstringA bank that issued the card.STATE BANK
transaction:card:binstringCard BIN.444455
transaction:card:brandstringCard Brand.VISA
transaction:card:countrystringCountry of the bank.USA
transaction:card:numberstringMasked card number.444455XXXXXX6666
transaction:card:card_holderstringCardholder NameTest User
transaction:card:card_exp_monthstringThe month of card expiration (2-digit format).3
transaction:card:card_exp_yearintegerYear of card expiration (4-digit format).2025
transaction:card:card_typestringA type of the card.DEBIT
transaction:card_tokenobject  
transaction:card_token: tokenstringCard token to be used for recurring payments. It will be returned in case of successful payment.22f1cdcb8a318...e8fae0a68f
payment_adviserobject  
payment_adviser:advisestringRecommendation for next paymentpay / resign / recurring

Resign Response Sample | Success

{
  "transactions": {
    "00016857481e16b07fc": {
      "id": "00016857481e16b07fc",
      "operation": "resign",
      "status": "created",
      "amount": 2575,
      "currency": "USD",
      "created_at": "2019-05-17 09:06:21",
      "updated_at": "2019-05-17 09:06:32",
      "card": {
        "bank": "STATE BANK",
        "bin": "444455",
        "brand": "VISA",
        "country": "USA",
        "number": "444455XXXXXX6666",
        "card_holder": "cardholder name",
        "card_exp_month": "03",
        "card_exp_year": 2025,
        "card_type": "DEBIT"
      },
      "card_token": {
        "token": "22f1cdcb85fbd81ac6766a318d03432f862a310a104c4a39fcc9e881a8d07cdc1afa0d3801628c5cc938338e8fae0963a68f"
      }
    }
  },
  "order": {
    "order_id": "777",
    "order_description": "Purchase for order group",
    "customer_email": "jondou@gmail.com",
    "traffic_source": "facebook", 
    "amount": 2575,
    "currency": "USD",
    "fraudulent": true,
    "marketing_amount": 2575,
    "marketing_currency": "USD",
    "refunded_amount": 0,
    "status": "created"
  },
  "transaction": {
    "id": "00016857481e16b07fc",
    "operation": "resign",
    "status": "created",
    "amount": 2575,
    "currency": "USD",
    "created_at": "2019-05-17 09:06:21",
    "updated_at": "2019-05-17 09:06:32",
    "card": {
      "bank": "STATE BANK",
      "bin": "444455",
      "brand": "VISA",
      "country": "USA",
      "number": "444455XXXXXX6666",
      "card_holder": "cardholder name",
      "card_exp_month": "03",
      "card_exp_year": 2025,
      "card_type": "DEBIT"
    },
    "card_token": {
      "token": "22f1cdcb85fbd81ac6766a318d03432f862a310a104c4a39fcc9e881a8d07cdc1afa0d3801628c5cc938338e8fae0963a68f"
    }
  },
  "payment_adviser": {
    "advise": "pay"
  }
}

 

    Resign Status Response Body Parameters | 3Ds

ParameterTypeDescriptionExample
orderobjectAn object with information of the transaction 
order:order_idstringOrder ID specified in the merchant system777
order:order_descriptionstringOrder description in UTF-8 code.Premium package
order:traffic_sourcestringSource of trafficfacebook
order:customer_emailstringCustomer emailjondou@gmail.com
order:statusstringStatus of processed payment. Types of order statuses are described in respective directoryapproved
order:amountintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.2575
order:refunded_amountintegerThe amount which was refunded0
order:currencystringOrder currency (3 letter code under ISO 4217)USD
order:marketing_amountintegerOrder amount converted in USD (or any other currency agreed) under open FX sources at the moment of transaction. This can be applied only for marketing forecasting2575
order:marketing_currencystringThe currency of the order amount for marketing analyticsUSD
order:processing_currencystringThe currency of the order amount for marketing analyticsUSD
order:processing_amountintegerThe amount in processing currency2575
order:descriptorstringThe descriptor for the transaction payhere.com
order:fraudulentbooleanThe customer is detected by the merchant system to be suspicious oneTRUE
transactionsobjectAn object with information of transactions 
transactions:<transaction_id>stringTransaction identification within order. It contains an object with detailed information of specified transaction. Order can have several transactions1495123020887591dc450088f1
transactions:<transaction_id>:idstringTransactions identification within order1495123020887591dc450088f1
transactions:<transaction_id>:operationstringTransaction typeresign
transactions:<transaction_id>:statusstringTransaction status within order. Transaction statuses are described in respective directory.success
transactions:<transaction_id>:descriptorstringThe descriptor for the transaction payhere.com
transactions:<transaction_id>:amountintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.2575
transactions:<transaction_id>:currencystring USD
transactions:<transaction_id>:created_atstringTransaction created DateTime2019-05-17 9:06:21
transactions:<transaction_id>:updated_atstringTransaction updated DateTime2019-05-17 9:06:21
transactions:<transaction_id>:cardobjectObject with information about card. Present in payment transactions 
transactions:<transaction_id>:card:bankstringBank emitentSTATE BANK
transactions:<transaction_id>:card:binstringCard BIN444455
transactions:<transaction_id>:card:brandstringCard BrandVISA
transactions:<transaction_id>:card:numberstringMasked card number444455XXXXXX6666
transactions:<transaction_id>:card:card_holderstringCardholder nameTest User
transactions:<transaction_id>:card:card_exp_monthstringA month of card expiration (2-digit format)3
transactions:<transaction_id>:card:card_exp_yearintegerA year of card expiration (4-digit format)2025
transactions:<transaction_id>:card:card_typestringA type of the cardDEBIT
transactions:<transaction_id>:card:card_tokenobject  
transactions:<transaction_id>:card:card_token:tokenstringCard token to be used for recurring payments. It will be returned in case of successful payment4056cd8cccf96...40015a997d74
transactions:<transaction_id>:card_tokenobject  
transactions:<transaction_id>:card_token:tokenstringThe old card token which was used by previous payments7926cd8cccf96...400415a217d74
verify_urlstringUrl for 3DS verificationhttps://acs.solidgate.com/api/v1/verify-3ds/554293692/96454d39ed80f256e9f77bb36271b2aff0c2af3ec769911dfd

Resign Status Response Sample | Success

{
    "transactions": {
    "15027983907575992e23bec0c8": {
      "id": "15027983907575992e23bec0c8",
      "operation": "resign",
      "status": "success",
      "descriptor": "descriptor",
      "amount": 2575,
      "currency": "USD",
      "created_at": "2019-05-17 09:06:21",
      "updated_at": "2019-05-17 09:06:32",
      "card": {
        "bank": "STATE BANK",
        "bin": "453245",
        "brand": "VISA",
        "country": "USA",
        "number": "453245XXXXXX2692",
        "card_holder": "cardholder name",
        "card_exp_month": "03",
        "card_exp_year": 2025,
        "card_type": "DEBIT",
        "card_token": {
          "token": "36657ccf9d36a00b13e8f4af47e8e2c041b16458bc83cb7aaa36fd236d2d474d211636b20c51a7a713b4881ae7cc516be6"
        }
      },
      "card_token": {
        "token": "126cc63b62dbb98c314562da1fabb0056747dcfffAeec75bf50d5d7a091b556888a95fdd39b38027daee0db7bcbf7c1714cd"
      }
    }
  },
  "verify_url": "https://acs.solidgate.com/api/v1/verify-3ds/554293692/96454d39ed80f256e9f77bb36271b2aff0c2af3ec769911dfd",
  "order": {
    "order_id": "1502798390757",
    "order_description": "Purchase for order group",
    "customer_email": "jondou@gmail.com",
   "traffic_source": "facebook", 
    "status": "approved",
    "refunded_amount": 0,
    "amount": 2575,
    "currency": "USD",
    "descriptor": "descriptor",
    "fraudulent": false,
    "marketing_amount": 2575,
    "marketing_currency": "USD",
    "processing_amount": 2575,
    "processing_currency": "USD"
  }
}

Check Order Status

Check order status is a request for getting current order status.

POST https://pay.solidgate.com/api/v1/status

 

        Check Order Status Request Body Parameters 

ParameterMandatoryTypeDescriptionExample
order_idYesstring(255)Order ID specified in the merchant system123443334

Status Request Sample | Success

{
  "order_id": "123443334"
}

 

    Status Response Body Parameters | Success

ParameterTypeDescriptionExample
orderobjectAn object with information of the transaction. 
order:order_idstringOrder ID specified in the merchant system123443334
order:order_descriptionstringOrder description in UTF-8 code.Premium package
order:traffic_sourcestringSource of trafficfacebook
order:customer_emailstringCustomer emailjondou@gmail.com
order:amountintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.2575
order:currencystringOrder currency (3 letter code under ISO 4217)USD
order:descriptorstringThe descriptor for the transaction payhere.com
order:fraudulentbooleanThe customer is detected by the merchant system to be suspicious one.TRUE
order:marketing_amountintegerOrder amount converted in USD (or any other currency agreed) under open FX sources at the moment of transaction. This can be applied only for marketing forecasting.2575
order:marketing_currencystringThe currency of the order amount for marketing analytics.USD
order:processing_amountintegerProcessing amount of the order2575
order:processing_currencystringProcessing currency of the orderUSD
order:statusstringStatus of processed payment. Types of order statuses are described in respective directorycreated
order:subscription_idstringThe ID of the user’s subscription83b19018-cbc4-4df0-899a-dda84fd2705e
order:refunded_amountintegerThe amount which was refunded500
transactionsobjectAn object with information of transactions.83b11418-cbc4-4df0-899a-dda84fd2705e
transactions:<transaction_id>objectTransaction identification within order. It contains an object with detailed information of specified transaction. Order can have several transactions.1495123020887591dc450088f1
transactions:<transaction_id>:idstringTransactions identification within order.1495123020887591dc450088f1
transactions:<transaction_id>:operationstringTransaction type. Transaction types are described in respective directory.pay
transactions:<transaction_id>:statusstringTransaction status within order. Transaction statuses are described in respective directory.success
transactions:<transaction_id>:descriptorstringThe descriptor for the transaction payhere.com
transactions:<transaction_id>:amountintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.2575
transactions:<transaction_id>:currencystringProcessing currency of orderUSD
transactions:<transaction_id>:created_atstringTransaction created DateTime2019-05-17 9:06:21
transactions:<transaction_id>:updated_atstringTransaction updated DateTime2019-05-17 9:06:21
transactions:<transaction_id>:cardobjectObject with information about card. Present in payment transactions. 
transactions:<transaction_id>:card:binstringCard BIN444455
transactions:<transaction_id>:card:brandstringCard BrandVISA
transactions:<transaction_id>:card:numberstringMasked card number444455XXXXXX6666
transactions:<transaction_id>:card:card_holderstringCardholder nameTest User
transactions:<transaction_id>:card:bankstringBank emitentBUILDING SOCIETY
transactions:<transaction_id>:card:countrystringCountry of bankGBR
transactions:<transaction_id>:card:card_exp_monthstringA month of card expiration (2-digit format).3
transactions:<transaction_id>:card:card_exp_yearintegerA year of card expiration (4-digit format).2025
transactions:<transaction_id>:card:card_typestringA type of the card.DEBIT
transactions:<transaction_id>:card:card_tokenobject  
transactions:<transaction_id>:card:card_token:tokenstringCard token to be used for recurring payments. It will be returned in case of successful payment.4056cd8cccf96...40015a997d74
billing_detailsobjectBilling Details 
billing_details:addressstringAddress of the billing8th Ave, Bowie Lane
billing_details:zipstringZIP for the billing10001
billing_details:countrystringCountry of the billingUSA
billing_details:citystringCity of the billingNew York
billing_details:statestringState of the billingFL
verify_urlstringUrl for 3DS verificationhttps://acs.solidgate.com/api/v1/verify-3ds/554293692/96454d39ed80f256e9f77bb36271b2aff0c2af3ec769911dfd
chargebacksobjectThe object with information of the chargeback. 
chargebacks:<chargebacks_id>stringChargeback identification within order. It contains an object with detailed information of specified chargeback.2
chargebacks:<chargebacks_id> :idintegerChargeback identification within order.2
chargebacks:<chargebacks_id> :dispute_datestringThe date on which the chargeback was created by the Issuer.2017-07-04
chargebacks:<chargebacks_id> :settlement_datestringThe date on which the chargeback was financially settled.2017-07-04
chargebacks:<chargebacks_id> :amountintegerChargeback amount1000
chargebacks:<chargebacks_id> :currencystringChargeback currencyUSD
chargebacks:<chargebacks_id> :reason_codestringReason code of chargeback10.4
chargebacks:<chargebacks_id>: reason_groupstringChargeback Reason GroupFraud 
chargebacks:<chargebacks_id>: reason_descriptionstringChargeback Reason DescriptionFraud – Card-Absent Environment
chargebacks:<chargebacks_id> :statusstringStatus chargebackin_progress, document_sent, reversed, accepted, reversed, resolved, resolved_reversal
chargebacks:<chargebacks_id>: typestringStage of the chargeback flow1st_chb, 2nd_chb, arbitration
chargebacks:<chargebacks_id> :chargeback_flowobjectChargeback operations 
chargebacks:<chargebacks_id> :chargeback_flow: <id>objectChargeback identification within chb operations.269323
chargebacks:<chargebacks_id> :chargeback_flow: <id>:idintegerUnique id for the chargeback flow269323
chargebacks:<chargebacks_id> :chargeback_flow: <id>:amountintegerAmount as an integer without fractions (i.e cents)100
chargebacks:<chargebacks_id> :chargeback_flow: <id>:dispute_amountintegerThe amount which would be disputed as an integer without fractions (i.e. in cents) in the chb_currency100
chargebacks:<chargebacks_id> :chargeback_flow: <id>: currencystring3 letter currency code under ISO 4217USD
chargebacks:<chargebacks_id> :chargeback_flow: <id>: typestringStage of the chargeback flow1st_chb, 2nd_chb, arbitration
chargebacks:<chargebacks_id> :chargeback_flow: <id>: statusstringStatus of the chargeback flow in the chargeback cyclein_progress, document_sent, reversed, accepted, reversed, resolved, resolved_reversal
chargebacks:<chargebacks_id> :chargeback_flow: <id>: datestringSettlement date2019-06-14
chargebacks:<chargebacks_id> :chargeback_flow: <id>: updated_datestringDate when the chargeback flow was updated2019-06-14
chargebacks:<chargebacks_id> :chargeback_flow: <id>: deadline_datestringDate till the chargeback flow should be updated or decision made2019-06-14
chargebacks:<chargebacks_id> :chargeback_flow: <id>: arn_codestringAcquirer reference number for the chargeback21edw
payment_adviserobject  
payment_adviser:advisestringRecommendation for next paymentpay / resign / recurring
device_infoobject  
device_info:user_agentstringDevice user agent infoMozilla/5.0 (Linux; U; Android 4.4.2; zh-cn; GT-I9500 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.0 QQ-URL-Manager Mobile Safari/537.36

Status Response Sample | Success

{
  "transactions": {
    "1499079426595a2302db936": {
      "id": "1499079426595a2302db936",
      "operation": "pay",
      "status": "success",
      "descriptor": "descriptor",
      "amount": 10000,
      "currency": "EUR",
      "created_at": "2019-05-17 09:06:21",
      "updated_at": "2019-05-17 09:06:32",
      "card": {
        "bank": "STATE BANK",
        "bin": "453245",
        "brand": "VISA",
        "country": "USA",
        "number": "453245XXXXXX2692",
        "card_holder": "cardholder name",
        "card_exp_month": "03",
        "card_exp_year": 2025,
        "card_type": "DEBIT",
        "card_token": {
          "token": "64edcaea1441e2bde37b8afd0d0160dbd8d9db0abedf685af7b4fd0e529c8caf19abf3acd0b9b7e0bb884c85d7a21c0926a4"
        },
        "billing_details": {
        "address": "11437 Woodmeadow Pkwy",
        "zip": "85001",
        "country": "USA",
        "city": "New Delhi",
        "state": "TX"
      }
    },
    "1499079426595b4ade6e24b": {
      "id": "1499079426595b4ade6e24b",
      "operation": "refund",
      "status": "success",
      "descriptor": "descriptor",
      "amount": 10000,
      "currency": "EUR",
    }
  },
  "chargebacks": {
    "2": {
      "id": 2,
      "dispute_date": "2017-07-04",
      "settlement_date": "2017-07-04",
      "amount": 1000,
      "currency": "EUR",
      "reason_code": "222",
      "status": "approved"
    }
  },
  "order": {
    "order_id": "1499079426",
    "order_description": "Purchase for order group",
    "customer_email": "jondou@gmail.com",
    "traffic_source": "facebook", 
    "status": "refunded",
    "amount": 10000,
    "refunded_amount": 10000,
    "currency": "EUR",
    "marketing_amount": 11415,
    "marketing_currency": "USD",
    "processing_amount": 10000,
    "processing_currency": "EUR",
    "subscription_id": "74345ef8-d511-4506-91e1-1c785553b8bd",
    "descriptor": "qwerty",
    "fraudulent": true
  },
  "chargebacks":{
      "494531":{
         "id":494531,
         "dispute_date":"2021-07-13",
         "settlement_date":"2021-07-13",
         "amount":1200,
         "status":"accepted",
         "reason_code":"4853",
         "currency":"USD",
         "type":"1st_chb",
         "chargeback_flow":{
            "759854":{
               "id":759854,
               "amount":1200,
               "currency":"USD",
               "type":"1st_chb",
               "status":"accepted",
               "date":"2021-07-13",
               "updated_date":"2021-07-13",
               "deadline_date":"2021-07-23",
               "arn_code":"21edw"
               }
         }
     }
},
  "payment_adviser": {
    "advise": "pay"
  },
  "device_info": {
    "user_agent": "Mozilla/5.0 (Linux; U; Android 4.4.2; zh-cn; GT-I9500 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.0 QQ-URL-Manager Mobile Safari/537.36"
  }
}

Status Response Sample | 3DS

{
 "transactions": {
   "15009770463205977179b0ca46": {
     "id": "15009770463205977179b0ca46",
     "operation": "pay",
     "status": "verify",
     "descriptor": "descriptor.com",
     "amount": 50,
     "currency": "EUR",
     "created_at": "2019-05-17 09:06:21",
     "updated_at": "2019-05-17 09:06:32",
     "card": {
       "bank": "CB BANK",
       "bin": "411118",
       "brand": "VISA",
       "country": "UKR",
       "number": "411118XXXXXX4220",
       "card_holder": "cardholder name",      
       "card_exp_month": "03",
       "card_exp_year": 2025,
       "card_type": "DEBIT"
     },
      "billing_details": {
        "address": "11437 Woodmeadow Pkwy",
        "zip": "85001",
        "country": "USA",
        "city": "New Delhi",
        "state": "TX"
   }
 },
 "verify_url": "https://acs.solidgate.com/api/v1/verify-3ds/554293692/96454d39ed80f256e9f77bb36271b2aff0c2af3ec769911dfd7",
 "order": {
   "amount": 50,
   "currency": "EUR",
   "descriptor": "descriptor.com",
   "fraudulent": true,
   "marketing_amount": 59,
   "marketing_currency": "USD",
   "processing_amount": 59,
   "processing_currency": "USD",
   "order_id": "1500977046320",
   "order_description": "Purchase for order group",
   "customer_email": "jondou@gmail.com",
   "traffic_source": "facebook", 
   "status": "3ds_verify"
 },
 "payment_adviser": {
    "advise": "pay"
 },
 "device_info": {
    "user_agent": "Mozilla/5.0 (Linux; U; Android 4.4.2; zh-cn; GT-I9500 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.0 QQ-URL-Manager Mobile Safari/537.36"
 }
}

 

        Check Order Status Response Body Parameters | Fail

ParameterTypeDescriptionExample
orderobjectAn object with information of the order 
order:order_idstringOrder ID specified in the merchant system777
order:order_descriptionstringOrder description in UTF-8 code.Premium package
order:traffic_sourcestringSource of trafficfacebook
order:customer_emailstringCustomer emailjondou@gmail.com
order:amountintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.2575
order:currencystringOrder currency (3 letter code under ISO 4217)USD
order:descriptorstringThe descriptor for the transaction payhere.com
order:fraudulentbooleanThe customer was detected on the merchant end to be a suspicious oneTRUE
order:marketing_amountintegerOrder amount converted in USD (or any other currency agreed) under open FX sources at the moment of transaction. This can be applied only for marketing forecasting2575
order:marketing_currencystringThe currency of the order amount for marketing analyticsUSD
order:statusstringStatus of payment processed. Types of statuses are described in respective directoriescreated
order:refunded_amountintegerThe amount which was refunded500
order:processing_amountintegerProcessing amount of the order2575
order:processing_currencystringProcessing currency of the orderUSD
transactionsobjectAn object with information of transactions 
transactions:<transaction_id>stringTransaction identification within order. It contains an object with detailed information of specified transaction. Order can have several transactions1495123020887591dc450088f1
transactions:<transaction_id>:idstringTransaction identification within order1495123020887591dc450088f1
transactions:<transaction_id>:operationstringTransaction type. Transaction types are described in respective directorypay
transactions:<transaction_id>:statusstringTransaction status within order. Transaction statuses are described in respective directorysuccess
transactions:<transaction_id>:descriptorstringThe descriptor for the transaction payhere.com
transactions:<transaction_id>:amountintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.2575
transactions:<transaction_id>:currencystring USD
transactions:<transaction_id>:created_atstringTransaction created DateTime2019-05-17 9:06:21
transactions:<transaction_id>:updated_atstringTransaction updated DateTime2019-05-17 9:06:21
transactions:<transaction_id>:cardobjectObject with information about card. Present in payment transactions 
transactions:<transaction_id>:card:bankstringBank-emitentBUILDING SOCIETY
transactions:<transaction_id>:card:binstringCard BIN444455
transactions:<transaction_id>:card:brandstringCard brandVISA
transactions:<transaction_id>:card:numberstringMasked card number444455XXXXXX6666
transactions:<transaction_id>:card:card_holderstringCardholder nameTest User
transactions:<transaction_id>:card:countrystringCountry of bankGBR
transactions:<transaction_id>:card:card_exp_monthstringA month of card expiration (2-digit format).3
transactions:<transaction_id>:card:card_exp_yearintegerA year of card expiration (4-digit format).2025
transactions:<transaction_id>:card:card_typestringA type of the card.DEBIT
transactions:<transaction_id>:card:card_tokenobject  
transactions:<transaction_id>:card:card_token:tokenstringCard token to be used for recurring payments.4056cd8cccf96...40015a997d74
errorobjectObject with information on errors 
error:codestringError code3.02
error: messagesarrayObject with error listInsufficient funds
error:recommended_message_for_userstringRecommended error message for the userInsufficient funds
payment_adviserobject  
payment_adviser:advisestringRecommendation for the next paymentpay / resign / recurring
verify_urlstringUrl for 3DS verificationhttps://acs.solidgate.com/api/v1/verify-3ds/554293692/96454d39ed80f256e9f77bb36271b2aff0c2af3ec769911dfd
chargebacksobjectThe object with information of the chargeback 
chargebacks:<chargebacks_id>stringChargeback identification within order. It contains an object with detailed information of specified chargeback2
chargebacks:<chargebacks_id> :idintegerChargeback identification within order2
chargebacks:<chargebacks_id> :dispute_datestringThe date on which the chargeback was created by the Issuer2017-07-04
chargebacks:<chargebacks_id> :settlement_datestringThe date on which the chargeback was financially settled2017-07-04
chargebacks:<chargebacks_id> :amountintegerChargeback amount1000
chargebacks:<chargebacks_id> :currencystringChargeback currencyUSD
chargebacks:<chargebacks_id> :reason_codestringReason code of chargeback222
chargebacks:<chargebacks_id> :statusstringStatus chargebackapproved
payment_adviserobject  
payment_adviser:advisestringRecommendation for next paymentpay / resign / recurring
device_infoobject  
user_agentstringDevice user agent infoMozilla/5.0 (Linux; U; Android 4.4.2; zh-cn; GT-I9500 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.0 QQ-URL-Manager Mobile Safari/537.36

Status Response Sample | Fail

{
  "order": {
    "amount": 1,
    "currency": "USD",
    "descriptor": "DESCRIPTOR",
    "fraudulent": false,
    "refunded_amount": 0,
    "marketing_amount": 1,
    "marketing_currency": "USD",
    "processing_amount": 0,
    "processing_currency": "EUR",
    "order_id": "1495182314822",
    "order_description": "Purchase for order group",
    "customer_email": "jondou@gmail.com",
    "traffic_source": "facebook", 
    "status": "declined"
  },
  "error": {
    "code": "3.02",
    "messages": [
      "Insufficient funds"
    ],
    "recommended_message_for_user": "Insufficient funds"
  },
  "transactions": {
    "1495182314822591eabeec4198": {
      "id": "1495182314822591eabeec4198",
      "operation": "pay",
      "status": "fail",
      "descriptor": "DESCRIPTOR",
      "amount": 1,
      "currency": "USD",
      "created_at": "2019-05-17 09:06:21",
      "updated_at": "2019-05-17 09:06:32",
      "card": {
        "bank": "STATE BANK",
        "bin": "444455",
        "brand": "VISA",
        "country": "USA",
        "number": "444455XXXXXX6666",
        "card_holder": "cardholder name",
        "card_exp_month": "03",
        "card_exp_year": 2025,
        "card_type": "DEBIT"
      },
      "billing_details": {
        "address": "11437 Woodmeadow Pkwy",
        "zip": "85001",
        "country": "USA",
        "city": "New Delhi",
        "state": "TX"
    }
  },
  "payment_adviser": {
    "advise": "pay"
  },
  "device_info": {
    "user_agent": "Mozilla/5.0 (Linux; U; Android 4.4.2; zh-cn; GT-I9500 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.0 QQ-URL-Manager Mobile Safari/537.36"
  }
}

Refund transaction

Refund is a request for transferring funds back to the cardholder. Refunds can be made only for successful transactions.

POST https://pay.solidgate.com/api/v1/refund

 

    Refund Request Body Parameters

ParameterMandatoryTypeDescriptionExample
order_idYesstring(100)Order ID specified in the merchant system123443334
amountYesintegerRefund amount - integer without fractional component (i.e cents). For instance, 1020 (USD) means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.1020
refund_reason_codeNostringRefund reason - 4 digit code, specified in the refund reason list0012

Refund Request Sample | Success

{
  "order_id": "777",
  "amount": 2575
}

 

        Refund Response Body Parameters | Success

ParameterTypeDescriptionExample
orderobjectObject with information on transactions 
order:order_idstringOrder ID specified in the merchant system777
order:order_descriptionstringOrder description in UTF-8 code.Premium package
order:traffic_sourcestringSource of trafficfacebook
order:customer_emailstringCustomer emailjondou@gmail.com
order:amountintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.2575
order:currencystringOrder currency (3 letter code under ISO 4217)USD
order:descriptorstringThe descriptor for the transaction payhere.com
order:fraudulentbooleanThe customer was detected on the merchant end to be suspicious oneTRUE
order:marketing_amountintegerOrder amount converted in USD (or any other currency agreed) under open FX sources at the moment of transaction. This can be applied only for marketing forecasting2575
order:marketing_currencystringThe currency of order amount for marketing analyticsUSD
order:processing_amountintegerAmount in processing currency2575
order: processing_currencystringProcessing currencyUSD
order:statusstringStatus of payment processed. Types of statuses are described in respective directoriescreated
order:refunded_amountintegerThe amount which was refunded500
transactionobjectObject with information on the transaction 
transaction:idstringTransaction identification within the order. Order can have several transactions1495123020887591dc450088f1
transaction:operationstringTransaction type. Available values - refundrefund
transaction:statusstringTransaction status within the ordercreated
transaction: descriptorstringThe descriptor for the transactionpayhere.com
transaction:amountintegerTransaction amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.2575
transaction:currencystringTransaction currencyUSD
transaction:refund_reasonstringReason of the refundSystem Error - PSP
transaction:refund_reason_codestringReason code as specified in the refund reason list12
transaction:created_atstringTransaction created DateTime2019-05-17 9:06:21
transaction:updated_atstringTransaction updated DateTime2019-05-17 9:06:21
transactionsobjectObject with information on transactions 
transactions:<transaction_id>stringTransaction identification within order. It contain an object with detailed information of specified transaction. Order can have several transactions1495123020887591dc450088f1
transactions:<transaction_id>:idstringTransaction identification within order1495123020887591dc450088f1
transactions:<transaction_id>:operationstringTransaction type. Transaction types are described in respective directorypay
transactions:<transaction_id>:statusstringTransaction status within order. Transaction statuses are described in respective directorysuccess
transactions:<transaction_id>:descriptorstringThe descriptor for the transactionpayhere.com
transactions:<transaction_id>:amountintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cent. For example, if the currency is JPY, then 1000 means 1000 JPY.2575
transactions:<transaction_id>:currencystringCurrency of transaction - 3 letter code under ISO 4217.USD
transactions:<transaction_id>:refund_reasonstringReason of the refundSystem Error - PSP
transactions:<transaction_id>:refund_reason_codestringReason code as specified in the refund reason list12
transactions:<transaction_id>:created_atstringTransaction created DateTime2019-05-17 9:06:21
transactions:<transaction_id>:updated_atstringTransaction updated DateTime2019-05-17 9:06:21
transactions:<transaction_id>:cardobjectObject with information about the card. Present in payment transactions 
transactions:<transaction_id>:card:binstringCard BIN444455
transactions:<transaction_id>:card:brandstringCard brandVISA
transactions:<transaction_id>:card:numberstringMasked card number444455XXXXXX6666
transactions:<transaction_id>:card:card_holderstringCardholder nameTest User
transactions:<transaction_id>:card:card_exp_monthstringA month of expiration date on a card. (2-digit format)3
transactions:<transaction_id>:card:card_exp_yearintegerA year of expiration date on a card. (4-digit format)2025
transactions:<transaction_id>:card:card_typestringA type of the cardDEBIT
transactions:<transaction_id>:card:card_tokenobject  
transactions:<transaction_id>:card:card_token:tokenstringCard token to be used for recurring payments. It will be returned in case of successful payment4056cd8cccf96...40015a997d74

Refund Response Sample | Success

{
  "order": {
    "order_id": "777",
    "order_description": "Purchase for order group",
    "customer_email": "jondou@gmail.com",
    "traffic_source": "facebook", 
    "amount": 2575,
    "currency": "USD",
    "fraudulent": true,
    "marketing_amount": 2575,
    "marketing_currency": "USD",
    "processing_amount": 2575,
    "processing_currency": "USD",
    "status": "refunded",
    "refunded_amount": 50
  },
  "transaction": {
    "id": "149310695572758ff0116380f7",
    "operation": "refund",
    "status": "success",
    "descriptor": "DESCRIPTOR",
    "amount": 2575,
    "currency": "USD",
    "refund_reason": "System Error - PSP",
    "refund_reason_code": "0012",
    "created_at": "2019-05-17 09:06:21",
    "updated_at": "2019-05-17 09:06:32",
  },
  "transactions": {
    "149310695572758ff0116380f7": {
      "id": "149310695572758ff0116380f7",
      "operation": "refund",
      "status": "success",
      "descriptor": "DESCRIPTOR",
      "amount": 2575,
      "currency": "USD",
      "refund_reason": "System Error - PSP",
      "refund_reason_code": "0012",
      "created_at": "2019-05-17 09:06:21",
      "updated_at": "2019-05-17 09:06:32",
    },
    "149310695572758ff010f5d352": {
      "id": "149310695572758ff010f5d352",
      "operation": "pay",
      "status": "success",
      "descriptor": "DESCRIPTOR",
      "amount": 2575,
      "currency": "USD",
      "created_at": "2019-05-17 09:06:21",
      "updated_at": "2019-05-17 09:06:32",
      "card": {
        "bin": "444455",
        "brand": "VISA",
        "country": "USA",
        "number": "444455XXXXXX6666",
        "card_holder": "cardholder name",
        "card_exp_month": "03",
        "card_exp_year": 2025,
        "card_type": "DEBIT"
        "card_token": {
          "token": "140dc2f1bd02c...f806d4db669ef"
        }
      }
    }
  }
}

VOID transaction

The VOID request is used for voiding a previously performed AUTH transactions.

POST https://pay.solidgate.com/api/v1/void

 

    Void Request Body Parameters

ParameterMandatoryTypeDescriptionExample
order_idYesstring(100)Order ID specified in the merchant system 

Void Request Sample

{
  "order_id": "123443334"
}

 

    Void Response Body Parameters | Success

ParameterTypeDescriptionExample
orderobjectAn object with information of the transaction 
order:order_idstringOrder ID specified in the merchant system1517501959601
order:order_descriptionstringOrder description in UTF-8 code.Premium package
order:traffic_sourcestringSource of trafficfacebook
order:customer_emailstringCustomer emailjondou@gmail.com
order:statusstringStatus of processed payment . Types of order statuses are described in respective directoryvoid_ok
order:amountintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.2575
order:currencystringOrder currency (3 letter code under ISO 4217)USD
order:descriptorstringThe descriptor for the transaction payhere.com
order:fraudulentbooleanA customer is detected by the merchant system to be suspicious onetrue
order:marketing_amountintegerOrder amount converted in USD (or any other currency agreed) under open FX sources at the moment of transaction. This can be applied only for marketing forecasting2575
order:marketing_currencystringThe currency of the order amount for marketing analyticsUSD
order:processing_amountintegerAmount of order for marketing analytics2575
order:processing_currencystringProcessing amount of orderUSD
order:refunded_amountintegerRefunded amount0
transactionsobjectAn object with information on transactions 
transactions:<transaction_id>objectTransaction identification within the order. It contains an object with detailed information about the specified transaction. Order can have several transactions15175019596015a733f7a4f91a
transactions:<transaction_id>:idstringTransactions identification within the order15175019596015a733f7a4f91a
transactions:<transaction_id>:operationstringTransaction type. Transaction types are described in respective directoryvoid
transactions:<transaction_id>:statusstringTransaction status within the order. Transaction statuses are described in respective directorysuccess
transactions:<transaction_id>:descriptorstringThe descriptor for the transactionpayhere.com
transactions:<transaction_id>:amountintegerTransactions amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents2575
transactions:<transaction_id>:currencystringTransactions currencyUSD
transactions:<transaction_id>:created_atstringTransaction created DateTime2019-05-17 09:06:21
transactions:<transaction_id>:updated_atstringTransaction updated DateTime2019-05-17 09:06:21
transactions:<transaction_id>:cardobjectAn object with information about the card. Present in payment transactions 
transactions:<transaction_id>:card:binstringCard BIN411111
transactions:<transaction_id>:card:brandstringCard BrandVISA
transactions:<transaction_id>:card:numberstringMasked card number411111XXXXXX1111
transactions:<transaction_id>:card:card_holderstringCardholder nameTest User
transactions:<transaction_id>:card:bankstringBank that issues the cardSTATE BANK
transactions:<transaction_id>:card:countrystringCountry of bankUSA
transactions:<transaction_id>:card:card_exp_monthstringA month of expiration date on a card. (2-digit format)03
transactions:<transaction_id>:card:card_exp_yearintegerA year of expiration date on a card. (4-digit format)2025
transactions:<transaction_id>:card:card_typestringA type of the cardDEBIT
transactions:<transaction_id>:card:card_tokenobject  
transactions:<transaction_id>:card:card_token:tokenstringCard token to be used for recurring payments. It will be returned in case of successful payment86c1b0416c3...e2c99a20
transactionobjectAn object with information on the transaction 
transaction:idstringTransaction identification within the order. The order can have several transactions00016857481e16b07fc
transaction:operationstringTransaction typevoid
transaction: statusstringTransaction status within the ordercreated
transaction: descriptorstringThe descriptor for the transaction payhere.com
transaction:amountintegerTransaction amount2575
transaction:currencystringTransaction currency.USD
transaction:created_atstringTransaction created DateTime2019-05-17 09:06:21
transaction:updated_atstringTransaction updated DateTime2019-05-17 09:06:21

Void Response Sample | Success

{
  "transactions": {
    "15175019596015a733f7a4f91a": {
      "id": "15175019596015a733f7a4f91a",
      "operation": "void",
      "status": "success",
      "descriptor": "DESCRIPTOR",
      "amount": 2575,
      "currency": "USD",
      "created_at": "2019-05-17 09:06:21",
      "updated_at": "2019-05-17 09:06:32"
    },
    "15175019596015a733e0929df7": {
      "id": "15175019596015a733e0929df7",
      "operation": "auth",
      "status": "success",
      "descriptor": "DESCRIPTOR",
      "amount": 2575,
      "currency": "USD",
      "created_at": "2019-05-17 09:06:21",
      "updated_at": "2019-05-17 09:06:32",
      "card": {
        "bank": "STATE BANK",
        "bin": "411111",
        "brand": "VISA",
        "country": "USA",
        "number": "411111XXXXXX1111",
        "card_holder": "cardholder name",
        "card_exp_month": "03",
        "card_exp_year": 2025,
        "card_exp_type": "DEBIT",
        "card_token": {
          "token": "86c1b0416c3088a6ca3de9998f934c6be2a3f7964ba883c4f67886041898584747d361116832107b563790ea99a5e2c99a20"
        }
      }
    }
  },
  "order": {
    "order_id": "1517501959601",
    "order_description": "Purchase for order group",
    "customer_email": "jondou@gmail.com",
    "traffic_source": "facebook", 
    "status": "void_ok",
    "amount": 2575,
    "refunded_amount": 0,
    "currency": "USD",
    "marketing_amount": 2575,
    "marketing_currency": "USD",
    "processing_amount": 2575,
    "processing_currency": "USD",
    "descriptor": "DESCRIPTOR",
    "fraudulent": true
  },
  "transaction": {
    "id": "15175019596015a733f7a4f91a",
    "operation": "void",
    "status": "success",
    "descriptor": "DESCRIPTOR",
    "amount": 2575,
    "currency": "USD",
    "created_at": "2019-05-17 09:06:21",
    "updated_at": "2019-05-17 09:06:32"
  }
}

SETTLE transaction

The Settle method is used for settling an authorized transaction that was previously performed.

POST https://pay.solidgate.com/api/v1/settle

 

    Settle Request Body Parameters

ParameterMandatoryTypeDescriptionExample
order_idYesstring(100)Order ID specified in merchant system1517502021714
amountYesintegerSettle amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.2575

Please, note, if the subsequent Settle amount is less than the amount of initial AUTH transaction - the difference will be returned to the cardholder's account.

Settle Request Sample | Success

{
  "order_id": "1517502021714",
  "amount": 2575
}

 

    Settle Response Body Parameters | Success

ParameterTypeDescriptionExample
orderobjectAn object with information of the transaction 
order:order_idstringOrder ID specified in the merchant system1517502021714
order:order_descriptionstringOrder description in UTF-8 code.Premium package
order:traffic_sourcestringSource of trafficfacebook
order:customer_emailstringCustomer emailjondou@gmail.com
order:statusstringStatus of processed payment. Types of order statuses are described in the  respective directorysettle_ok
order:amountintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.2575
order:currencystringOrder currency (3 letter code under ISO 4217)USD
order:descriptorstringThe descriptor for the transaction payhere.com
order:fraudulentbooleanA customer is detected by the merchant system to be suspicious onetrue
order:marketing_amountintegerOrder amount converted in USD (or any other currency agreed) under open FX sources at the moment of transaction. This can be applied only for marketing forecasting2575
order:marketing_currencystringThe currency of the order amount for marketing analyticsUSD
order:processing_amountintegerAmount of order for marketing analytics2575
order:processing_currencystringProcessing amount of order

USD

0

order:refunded_amountintegerRefunded amount
transactionsobjectAn object with information on transactions 
transactions:<transaction_id>objectTransaction identification within the order. It contains an object with detailed information about the specified transaction. Order can have several transactions15175020217145a73465797e66
transactions:<transaction_id>:idstringTransactions identification within the order15175020217145a73465797e66
transactions:<transaction_id>:operationstringTransaction type. Transaction types are described in the respective directorysettle
transactions:<transaction_id>:statusstringTransaction status within the order. Transaction statuses are described in the respective directorysuccess
transactions:<transaction_id>:descriptorstringThe descriptor for the transaction payhere.com
transactions:<transaction_id>:amountintegerTransactions amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents2575
transactions:<transaction_id>:currencystringTransactions currencyUSD
transactions:<transaction_id>:created_atstringTransaction created DateTime2019-05-17 09:06:21
transactions:<transaction_id>:updated_atstringTransaction updated DateTime2019-05-17 09:06:21
transactions:<transaction_id>:cardobjectAn object with information about the card. Present in payment transactions 
transactions:<transaction_id>:card:binstringCard BIN411111
transactions:<transaction_id>:card:brandstringCard BrandVISA
transactions:<transaction_id>:card:numberstringMasked card number411111XXXXXX1111
transactions:<transaction_id>:card:card_holderstringCardholder nameTest User
transactions:<transaction_id>:card:bankstringBank emitent STATE BANK
transactions:<transaction_id>:card:countrystringCountry of bankUSA
transactions:<transaction_id>:card:card_exp_monthstringA month of expiration date on a card. (2-digit format)03
transactions:<transaction_id>:card:card_exp_yearintegerA year of expiration date on a card. (4-digit format)2025
transactions:<transaction_id>:card:card_typestringA type of the cardDEBIT
transactions:<transaction_id>:card:card_tokenobject  
transactions:<transaction_id>:card:card_token:tokenstringCard token to be used for recurring payments. It will be returned in case of successful paymentd89f0b146fdffd...98b6d5d076
transactionobjectAn object with information on the transaction 
transaction:idstringTransaction identification within the order. The order can have several transactions15175020217145a73465797e66
transaction:operationstringTransaction typesettle
transaction:statusstringTransaction status within the ordercreated
transaction:descriptorstringThe descriptor for the transaction payhere.com
transaction:amountintegerSettle amount2575
transaction:currencystringTransactions currency.USD
transaction:created_atstringTransaction created DateTime2019-05-17 09:06:21
transaction:updated_atstringTransaction updated DateTime2019-05-17 09:06:21

Settle Response Sample | Success

{
  "transactions": {
    "15175020217145a73465797e66": {
      "id": "15175020217145a73465797e66",
      "operation": "settle",
      "status": "success",
      "descriptor": "DESCRIPTOR",
      "amount": 2575,
      "currency": "USD",
      "created_at": "2019-05-17 09:06:21",
      "updated_at": "2019-05-17 09:06:32"
    },
    "15175020217145a733e4756ba3": {
      "id": "15175020217145a733e4756ba3",
      "operation": "auth",
      "status": "success",
      "descriptor": "DESCRIPTOR",
      "amount": 2575,
      "currency": "USD",
      "created_at": "2019-05-17 09:06:21",
      "updated_at": "2019-05-17 09:06:32",
      "card": {
        "bank": "STATE BANK",
        "bin": "411111",
        "brand": "VISA",
        "country": "USA",
        "number": "411111XXXXXX1111",
        "card_holder": "cardholder name",
        "card_exp_month": "03",
        "card_exp_year": 2025,
        "card_type": "DEBIT",
        "card_token": {
          "token": "d89f0b146fdffd94f7a7a906e6194a34edas452fdf681111695a597317d3602942d9014175c63bf88751198b6d5d076"
        }
      }
    }
  },
  "order": {
    "order_id": "1517502021714",
    "order_description": "Purchase for order group",
    "customer_email": "jondou@gmail.com",
    "traffic_source": "facebook", 
    "status": "settle_ok",
    "amount": 2575,
    "refunded_amount": 0,
    "currency": "USD",
    "marketing_amount": 2575,
    "marketing_currency": "USD",
    "processing_amount": 2575,
    "processing_currency": "USD",
    "descriptor": "DESCRIPTOR",
    "fraudulent": true
  },
  "transaction": {
    "id": "15175020217145a73465797e66",
    "operation": "settle",
    "status": "success",
    "descriptor": "DESCRIPTOR",
    "amount": 2575,
    "currency": "USD",
    "created_at": "2019-05-17 09:06:21",
    "updated_at": "2019-05-17 09:06:32"
  }
}

ARN Codes

Request for receiving ARN code. 

POST https://pay.solidgate.com/api/v1/arn-code

 

    Receive ARN Request Body Parameters

ParameterMandatoryTypeDescriptionExample
order_idYesstring(255)Order ID specified in the merchant system123443334

ARN is available only for refunded transactions.

Receive ARN Request Sample | Success

{
  "order_id": "123443334"
}

 

    Receive ARN Response Body Parameters | Success

ParameterTypeDescriptionExample
arn_codesobjectArray data with information about ARN codes corresponding to the order requested 
arn_codes:arn_codestringARN code for a refund transaction. If PSP hasn't assigned ARN code yet, the value is equal to null. It can take up to 48 hours for a payment provider to assign ARN code for the transaction74208328039016341469667
arn_codes:amount_refundedintegerOrder amount - integer without fractional components (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY1020
arn_codes:currencystringOrder currency (3 letter code under ISO 4217)USD
arn_codes:transaction_statusstringTransaction status of a refund within the order. Transaction statuses are described in transaction status directorysuccess
arn_codes:sp_transaction_idstringThe ID of respective SP transaction if matched. If a refund is performed through PSP's admin-panel, it's difficult to establish a direct link with SP transaction in our system2045
arn_codes:created_atstringDate and time of refund performed on the PSP end2018-02-07 12:42:09

Receive ARN Response Sample | Success


{
    "arn_codes":[
        {
            "transaction_status":"success",
            "arn_code":"74208328039016341469667",
            "amount_refunded":100,
            "currency":"USD",
            "sp_transaction_id":2045,
            "created_at":"2018-02-07 12:42:09"
        }
    ]
}

Receive ARN Response Sample | Success without ARN

{
    "arn_codes":[
        {
            "transaction_status":"success",
            "arn_code":null,
            "amount_refunded":100,
            "currency":"USD",
            "sp_transaction_id":2045,
            "created_at":"2018-02-07 12:42:09"
        }
    ]
}

Resign in iFrame

Iframe for resign-payment is generated according to the following parameters:

Merchant - this is the unique merchant ID, provided to you during the integration process;

Form_Data - encrypted aes-cbc-256 string of JSON request data with random IV and the key is first 16bytes of merchant private key encrypted in AEC key - first 15 bytes of the private key.

Signature - Signature of request. It allows verifying whether the request from the merchant is genuine on the payment gateway server. In this case, it’s generated not from JSON, but from Form_data.

GET https://form.solidgate.com/api/v1/form/resign?merchant={merchant_id}&signature={signature}&form_data={form_data}

 

    Resign Form Request Body Parameters

ParameterMandatoryTypeDescriptionExample
order_idYesstring(100)Order ID specified in the merchant’s system123443334
amountYesintegerOrder amount - integer without fractional component (i.e cents). For instance, 1020 means 10 USD and 20 cents. For example, if the currency is JPY, then 1000 means 1000 JPY.1020
currencyYesstring(3)Order currency. 3 letter currency code under ISO-4217USD
recurring_tokenYesstring(255)Card token7ats8da7sd8-a66dfa7-a9s9das89t
order_descriptionYesstring(100)Order description in UTF-8 codePremium package
customer_emailYesstring(100)Customer emailjondou@gmail.com
ip_addressYesstring(50)Customer IP (only public ones)8.8.8.8
platformYesstring(6)Customer platform at the moment of payment. Available values: WEB- desktop, MOB - mobile version, APP - applicationWEB
fail_urlNostring(255)URL of merchant page, which a customer will be redirected in case of unsuccessful payment http://merchant.example/fail
success_urlNostring(255)URL of merchant page, which a customer will be redirected in case of successful paymenthttp://merchant.example/success
geo_countryNostring(3)Customer’s country subject to ISO 3166-1 alpha-3GBR
order_dateNostring(50)Date of the order creation in format YYYY-MM-DD-HH-MM-SS2015-12-21 11:21:30
order_itemsNostring(255)Order description in UTF-8 codeitem 1, item 2
customer_account_idNostring(100)Customer ID in the merchant's system.4dad42f808
customer_first_nameNostring(100)Customer’s first nameJohn
customer_last_nameNostring(100)Customer’s last nameSnow
customer_phoneNostring(50)Phone number of the customer380111111111
customer_date_of_birthNostring(50)Birthdate in YYYY-MM-DD format2000-11-21
geo_cityNostring(100)Customer’s CityNew Castle
languageNostring(2)Customer’s language settings. Available values: RU - Russian, EN - Englishen
fraudulentNobooleanCustomer is detected by the merchant’s system to be suspicious one. The payment will be effected via 3DSTRUE
verifiedNobooleanA user was verified on the shop sideTRUE
typeNostringThe parameter for transaction-authorizationauth
websiteNostring(255)The website from which transaction took placeGoogle.com
retry_attemptNointegerNumber of retry payment1
traffic_sourceNostring(255)Source of trafficfacebook
transaction_sourceNostring(255)Source of the transactions on the websitemain_menu
user_agentNostringUser-agent of customerMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
deviceNostringDevice of customeriPhone 8 iOS 12.0
order_numberNointegerNumber of payments by a user1
force3dsNobooleanRouting payments flag for 3DS flow (enabled by Solid account manager)FALSE
header_acceptYes - 3D 2.0string(255)Header Accepttext/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng
header_accept_languageYes - 3D 2.0string(255)Header Accept-Languageru-RU,ru;q=0.9,en-US;q=0.8
browser_color_depthYes - 3D 2.0integerColour depth of browser window32
browser_screen_heightYes - 3D 2.0integerHeight of browser window1920
browser_screen_widthYes - 3D 2.0integerWidth of the browser window1280
browser_java_enabledYes - 3D 2.0booleanIs java enabled on User's browserFALSE
browser_javascript_enabledYes - 3D 2.0booleanIs javascript enabled on User's browserFALSE
time_zone_offsetYes - 3D 2.0integerThe time difference, in minutes, between UTC time and the local time of the cardholder's browser1

In case of the successful response, you will receive a short version of the payment form, where the cardholder will need to enter CVV only.

/media/19/download/7314c2a1-a7b0-4e1c-8bea-99981fb608c1.png?v=1&inline=0

Retry logic

If a card payment operation (charge operation) fails, it can be due to various reasons such as insufficient funds on the card, incorrect data entry, banking system issues, etc. However, if a payment is unsuccessful, it is not always necessary to cancel the entire transaction and refund the money to a customer. Instead, a retry payment attempt can be made using a payment token. A payment token is a unique identifier generated during a charge operation and used to identify data (such as credit card information) for future transactions.

Charge - basic operation of funds withdrawal from cardholder's account. This operation can be performed with additional cardholder verification via 3-D Secure. When an operation is successfully done, cardholder data is tokenized so that the subsequent payments can be made by token (tokenized payment).

If the payment fails due to a network error or a decline from the issuing bank, a recurring request needs to be made using the token from the unsuccessful first attempt. This allows for a seamless experience for the customer and can increase the chances of a successful transaction.

It is important to note that:

  • the retry logic should be implemented with consideration for all possible risks such as multiple charges to the same payment token or the risk of infinite retries. To minimize the risks, the retry logic should be configured with the maximum number of retry attempts, and the interval between retry attempts. It is also necessary to have the ability to apply a mechanism for canceling or refunding payments that have failed after several retry attempts.
  • our product enables merchants to organize retry logic on their side.

There are several key points to implementing retry logic in a first payment with token parameters:

  • Retry logic:
    • Limit on the number of retries: The retry logic should be configured with a limit on the number of retries, to prevent infinite retries and unnecessary charges to the customer's payment method. That is, the system must stop retrying the payment after a certain number of retries.
    • The interval between retry attempts: To avoid overloading the issuing bank with too many requests in a short period of time (which may be perceived as fraud), the retry logic should include a back-off time between retries, such as waiting a few minutes before trying again or to increase the time between retries as the number of failed attempts increases.
  • Handling of decline reasons: The retry logic should be able to handle decline reasons for rejection and respond appropriately. For example, repeating attempts when receiving a permissible decline code (incorrect card number) and, at the same time, analyzing/counting and setting limits on identical decline codes.
    • Customizable retry rules: The retry logic can allow for customizable retry rules, such as retrying only on specific decline codes.
  • Cancellation or refund: If the payment fails after several retries, it is desirable to have a way to cancel or refund the payment to avoid multiple deductions from the customer's payment method.
  • Handling of declined transactions: The retry logic must handle declined transactions in a specific way, such as by prompting the customer to update their payment information or by offering alternative payment methods.
  • Notification: On the merchant side, it is necessary to additionally notify the customer of the result of the transaction, successful or unsuccessful.
  • Retry history tracking: This information can be used to analyze transaction patterns and improve the retry logic. It is desirable for the merchant side to have a system that can track the history of retry attempts for a transaction, including the number of retry attempts, the time of each retry attempt, and the result of each retry attempt.

It is important to note that the retry logic must be implemented with caution to ensure that the customer's payment details are secure and to avoid any unexpected charges. The retry logic can improve the success rate of the transactions and provide a better user experience. It is always recommended to test the retry logic and monitor it in production to make sure it is working as expected.

If you're using the recurring method for payment retries, you need to pass the corresponding value in the traffic_source field (please inform your manager of the value you'll be using). We can suggest using the value retry for the traffic_source field, but the client should inform us of what they will specify in this field, and we will configure our processing cards accordingly.

This is necessary so that we can differentiate between regular recurring payments and payment retry attempts.

Handling of decline reason

The system can include error handling mechanisms to handle any errors that occur during the retry process and to ensure that the customer is informed of the issue and provided with an appropriate resolution. You should identify the reason for the decline when a payment is declined. There could be several reasons for a decline, such as insufficient funds, expired cards, or invalid card details.

Here is an example of certain reasons for a declined transaction, where there is still a chance of a successful payment:

  • 4.02 Stolen card
  • 4.04 Lost card
  • 4.07 Trusted antifraud system
  • 4.03 Restricted card
  • etc.

However, it is important to note that after the first attempt, the probability of a successful payment may decrease by up to three times.

Based on the reviewed statistics, we can recommend not retrying transactions for the following reasons:

  • 2.08 Invalid card number
  • 2.09 Invalid expiration date
  • 5.02 Invalid card token

As if these data have not changed, the payment will still be unsuccessful.

Customizable retry rules

When implementing retry logic for payments, you can customize the rules for retrying based on specific error codes or payment methods, for:

  • error codes, you can set up your retry logic to only retry when a specific error code is returned from the payment gateway. For example, if the error code "Invalid card number" is returned, you may want to retry the payment.
  • payment methods, you can set up your retry logic to only retry certain types of payment methods. For example, you may want to retry only when the payment method is a credit card, but not when it is a bank transfer.

In order to customize retry rules for specific error codes or payment methods, you will need to implement some additional logic in your code.

For example, via using Solidgate create() method to create a recurring. If a solidgate.error.CardError is raised, check the code attribute of the exception to see if it is "Authentication failed". If it is, we retry the payment using the same payment method. If it is not, we do not retry the payment and instead raise the exception.

To implement retry logic for specific payment methods, you could add a check before retrying the payment.

For example, via checking the type attribute of the payment_method object to see if it is a "card" before retrying the payment.