Information

In the following part of documentation you will find a supportive information for easy integration with SolidGate. 

Processing payments in specific locations

You should collect and send us additional customer data to successfully accept payments via card or other methods in specific locations. This data should be sent within the payment request in the "payment_type_data" object. 

In the table below, you can find the fields required within specific countries and alternative payment methods. 

ParameterTypeRegular ExpressionDescriptionCountryMethod
argentina_dnistring[0-9]{7,9}A national identity document code should be collected and provided for Argentinian cardholders.ArgentinaCard
bangladesh_nicstring[0-9]{13,17}National Identity CardBangladeshCard
bolivia_cistring[0-9]{5,20}Cedula de IdentidadBoliviaCard
brazil_cpfstring[0-9]{11,14}CPFBrazilCard
cameroon_cnistring[0-9]{8}СNICameroonCard
chile_cistring.{8,9}Rol Único TributarioChileCard
china_idstring[0-9]{5,20}Citizen ID NumberChinaCard
colombia_ccstring[0-9]{6,10}Cedula de CiudadaniaColombiaCard
costa_rica_cistring[0-9]{9}Cédula de IdentidadCosta RicaCard
dominicana_idstring[0-9]{11}Identity cardDominican RepublicCard
ecuador_cistring[0-9]{5,20}Cédula de IdentidadEcuadorCard
el_salvador_idstring[0-9]{9,11}Personal Identification CardEl SalvadorCard
egypt_idstring[0-9]{14}Identity cardEgyptCard
ghana_cardstring[a-zA-Z0-9]{13}Ghana CardGhanaCard
guatemala_cuistring[0-9]{13}CUIGuatemalaCard
india_panstring[a-zA-Z]{5}[0-9]{4}[a-zA-Z]{1}PANIndiaCard
indonesia_nikstring[0-9]{16}NIKIndonesiaCard
japan_idstring[0-9]{12}My NumberJapanCard
kenya_idstring[0-9]{8}National ID CardKenyaCard
malaysia_nricstring[0-9]{12}NRICMalaysiaCard
mexico_curpstring[a-zA-Z0-9]{10,18}CURPMexicoCard
morocco_cniestring[a-zA-Z0-9]{5,20}CNIEMoroccoCard
nigeria_ninstring[0-9]{11}NINNigeriaCard
panama_idstring[0-9]{8}Cedula de IdentidadPanamaCard
paraguay_cistring[0-9]{5,20}Cedula de IdentidadParaguayCard
peru_dnistring[0-9]{8,9}A national identity document code should be collected and provided for Peruvian cardholders.PeruCard
philipines_psnstring[0-9]{12}PSNPhilippinesCard
senegal_cnistring[0-9]{13,17}CNI or ECOWAS ID CardSenegalCard
south_africa_idstring[0-9]{13}South African Identity CardSouth AfricaCard
tanzania_idstring[0-9]{20}National Identity CardTanzaniaCard
thailand_idstring[0-9]{13}Thai Identity CardThailandCard
turkey_tc_kimlik_nostring[0-9]{5,20}T.C. Kimlik No.TurkeyCard
uganda_nicstring[a-zA-Z0-9]{14}National ID number (NIC)UgandaCard
uriguay_cistring[0-9]{6,8}Cédula de IdentidadUruguayCard
vietnam_vnidstring^[0-9]{9}$|^[0-9]{12}$VNIDVietnamCard

Error codes

CodeDescription
0.01General decline
0.02Order expired
0.03Illegal operation (violation of law)
1.01Authentication failed
2.01Invalid Data
2.02Invalid Amount
2.03Invalid Currency
2.05Order not found
2.06Invalid CVV2 code
2.07Request Is empty
2.08Invalid card number
2.09Invalid expiration date
2.10Invalid 3DS flow on the merchant side
2.11Invalid 3DS flow on the bank side
2.12Invalid 3DS flow
2.13Invalid IP
2.14Subscription Error
2.15SCA require 3D authentication 
2.16Subscription is locked
3.01Card is blocked
3.02Insufficient funds
3.03Payment amount limit excess
3.04The transaction is declined by the issuer
3.05Call your bank
3.06Debit card not supported
3.07Card brand is not supported
3.08Do not honor
3.093D-Secure authentication required 
3.10Suspected fraud 
4.01Card is in a black list
4.02Stolen card
4.03Restricted card
4.04Lost card
4.05PSP fraud
4.06Blocked by Country/IP
4.07Trusted antifraud system
4.08AVS mismatch
4.09Solid antifraud engine
5.013D secure verification failed
5.02Invalid Card Token
5.03Application error
5.04Merchant is not configured correctly
5.05Merchant is not activated yet
5.06Duplicate order
5.07Exceeded API calls limits
5.08Invalid transaction
5.09Merchant not found
5.10Processor does not support requested API method
5.11Invalid routing
6.01Unknown decline code
6.02Connection error
7.01Card token not found
7.02Google payment error
7.03Smart cascade decline
7.043DS cascade to 2D
7.05Apple online payment error
7.06Token generation error

Orders status

ValueFinal stateDescription
createdNoThe order was created. It stays in this state until a payment is attempted on it.
processingNoThe order is in processing. An order moves to this state when a payment is first attempted on it. It remains in the state until one payment associated with that order is captured.
3ds_verifyNoThe order goes through 3DS verification
settle_pendingNoThe payment has been confirmed but not yet credited to the merchant's account. This logic applies only to Giropay/iDeal/Sofort payment methods.
approvedYesThe order is approved and the payment is successful 
declinedYesThe order was declined
refundedYesFunds by the order were transferred back to the cardholder
auth_okYesFunds were successfully reserved 
auth_failedYesReservation of the funds is failed 
settle_okYesFunds were successfully settled
partial_settledNoPart of the funds was successfully settled
void_okYesOperation of fund reservation was voided

The final state means the one in which the order can remain until the subsequent operations (settle, void, refund) and this is a reasonable logic of system processing.

Status of transactions

ValueDescription
createdThe transaction was created
settle_pendingThe payment has been confirmed but not yet credited to the merchant's account. This logic applies only to Giropay/iDeal/Sofort payment methods.
processingThe transaction is in processing
successTransaction successfully processed
failAn error processing the transaction
verifyThe transaction is going through 3DS verification

Types of transactions

ValueDescription
payOperation of funds reservation
recurringOperation of payment by the token
recurring-authOperation of funds reservation by the token
refundOperation for transferring funds back to the cardholder
resignOperation of payment by the token + cvv
resign-authOperation of hold amounts by the token + cvv
authOperation of funds reservation
settleOperation of settling funds reservation
voidOperation of canceling the funds reservation
apple-payApple Pay Payment
google-payGoogle Pay Payment

Refund reasons

Refund reason codes are provided for both Void and Refund operations. You could use them for the analysis of the return structure or trigger specific events on your side.

CodeDescriptionWhen is used
0021Solid - Request by UserThis refund reason is used for all manual refunds via My.Solid
0022Solid - Issuer Fraud NotificationWhen the issuer reports a fraudulent charge directly to Solid, our Team may do a refund after contacting the client.
0023Solid - Risk DepartmentAfter our team detects fraud, the client may ask to refund transactions. 
0024Solid - Retrieval RequestIf the issuer posts a Retrieval Request, the client could choose to refund the transactions.
0025Solid - Prevention AlertRefunds are automatically issued with this code when we receive a prevention alert. Previously, the following refund codes 0016,0017,0018,0019 were used.
0026Solid - System ErrorThis code is used rarely, only in case of technical problems between Solid, providers, and payment networks. 
0027Solid - AntifraudThis code is used for automatic refund action in our antifraud.
0028Solid - Expired AuthorizationAfter auth expires, we will issue the void with this code.
0001Request by Support userDeprecated
0002Fraud - PSP
0003Fraud - SP Antifraud
0004Fraud - SP Antifraud
0005Fraud - MaxMind
0006Fraud - Threatmetrix
0007Fraud - Manual check
0008Potential Chargeback - Retrieval Request
0009Potential Chargeback - Refund after Chargeback
0010System Error - Product
0011System Error - SignedPay
0012System Error - PSP
0013Ethoca alert - Fraud
0014Ethoca alert - Friendly Fraud
0015Ethoca alert - Potential Chargeback
0016Verifi alert - Fraud
0017Verifi alert - Friendly Fraud
0018Verifi alert - Potential Chargeback
0019VMPI Alert
0020Mismatch status (Decline - Approved)

Disputes

Disputes are the general term for actions that are performed by a user to cancel the transaction without interacting with the merchant. 

Retry Strategies

Solid provides a feature of smart retrying failed subscriptions payments, which helps our merchants to recover revenue and decrease the involuntary churn rate of the customers.

How does it work?

After the initial collection of the invoice is failed, the retry mode would turn On, and the state of the subscription would change to "redemption".

While the subscription is in state "redemption", we would retry the invoice collection four times. The interval between the retries is based on the customer, payment method and card data features.

Moreover, we provide the option to automatically apply a Discount in % if we receive a decline "Insufficient Funds" during the last payment attempt.

How could you configure it?

You could select the predefined retry strategies in the Hub while creating or editing Subscription Product details.

The description of all available retry strategies is provided below.

#1 Retry Strategy for Weekly Subscription

Name in Hub: "#1 - Weekly 0% /0% /0% /0%"

#Retry IntervalDiscount
11 day after initial collection-
2On the nearest Friday-
32 days after the previous retry-
45 days after the previous retry-

#2 Retry Strategy for Weekly Subscription 25% Discount on the last retry

Name in Hub: "#2 - Weekly 0% /0% /0% /25%"

#Retry IntervalDiscount
11 day after initial collection-
2On the nearest Friday-
32 days after the previous retry-
45 days after the previous retry25%

#3 Retry Strategy for Weekly Subscription 50% Discount on the last retry

Name in Hub: "#3 - Weekly 0% /0% /50% /0%"

#Retry IntervalDiscount
11 day after initial collection-
2On the nearest Friday-
32 days after the previous retry50%
45 days after the previous retry-

#4 Retry Strategy for Weekly Subscription 75% Discount on the last retry

Name in Hub: "#4 - Weekly 0% /0% /0% /75%"

#Retry IntervalDiscount
11 day after initial collection-
2On the nearest Friday-
32 days after the previous retry-
45 days after the previous retry75%

#5 Retry Strategy for Weekly Subscription 3-25%,  4 - 50%

Name in Hub: "#5 - Weekly 0% /0% /25% /50%"

#Retry IntervalDiscount
11 day after initial collection-
2On the nearest Friday-
32 days after the previous retry25%
45 days after the previous retry50%

#6 Retry Strategy for Weekly Subscription 1-10%, 2 - 25%, 3 - 50%, 4 - 75%

Name in Hub: "#6 - Weekly 10% /25% /50% /75%"

#Retry IntervalDiscount
11 day after initial collection10%
2On the nearest Friday25%
32 days after the previous retry50%
45 days after the previous retry75%

#7 Retry Strategy for Weekly Subscription 1 - 25%, 2 - 50%, 3 - 75%,  4 - 75%

Name in Hub: "#7 - Weekly 25% /50% /75% /75%"

#Retry IntervalDiscount
11 day after initial collection25%
2On the nearest Friday50%
32 days after the previous retry75%
45 days after the previous retry75%

#8 Retry Strategy for Weekly Subscription 2 - 15%, 3 - 40%,  4 - 65%

Name in Hub: "#8 - Weekly 0% /15% /40% /65%"

#Retry IntervalDiscount
11 day after initial collection-
2On the nearest Friday15%
32 days after the previous retry40%
45 days after the previous retry65%

#9 Retry Strategy for Monthly Subscription w/o Discounts

Name in Hub: "#9 - Monthly 0% /0% /0% /0%"

#Retry IntervalDiscount
11 day after initial collection-
2On the nearest Friday-
39 days after the previous retry-
419 days after the previous retry-

#10 Retry Strategy for Monthly Subscription with 25% Discount on the last retry

Name in Hub: "#10 - Monthly 0% /0% /0% /25%"

#Retry IntervalDiscount
11 day after initial collection-
2On the nearest Friday-
39 days after the previous retry-
419 days after the previous retry25%

#11 Retry Strategy for Monthly Subscription with 50% Discount on the last retry

Name in Hub: "#11 - Monthly 0% /0% /0% /50%"

#Retry IntervalDiscount
11 day after initial collection-
2On the nearest Friday-
39 days after the previous retry-
419 days after the previous retry50%

#12 Retry Strategy for Monthly Subscription with 75% Discount on the last retry

Name in Hub: "#12 - Monthly 0% /0% /0% /75%"

#Retry IntervalDiscount
11 day after initial collection-
2On the nearest Friday-
39 days after the previous retry-
419 days after the previous retry75%

#13 Retry Strategy for Monthly Subscription 3 - 25%, 4 - 50%

Name in Hub: "#13 - Monthly 0% /0% /25% /50%"

#Retry IntervalDiscount
11 day after initial collection-
2On the nearest Friday-
39 days after the previous retry25%
419 days after the previous retry50%

#14 Retry Strategy for Monthly Subscription 2 - 25%, 3 - 50%, 4 - 75%

Name in Hub: "#14 - Monthly 0% /25% /50% /75%"

#Retry IntervalDiscount
11 day after initial collection-
2On the nearest Friday25%
39 days after the previous retry50%
419 days after the previous retry75%

#15 Retry Strategy for Monthly Subscription 1 - 25%, 2 - 50%, 3 - 50%, 4 - 75%

Name in Hub: "#15 - Monthly 25% /50% /50% /75%"

#Retry IntervalDiscount
11 day after initial collection25%
2On the nearest Friday50%
39 days after the previous retry50%
419 days after the previous retry75%

#16 Retry Strategy for Monthly Subscription 2 - 15%, 3 - 40%, 4 - 65%

Name in Hub: "#16 - Monthly 0% /15% /40% /65%"

#Retry IntervalDiscount
11 day after initial collection-
2On the nearest Friday15%
39 days after the previous retry40%
419 days after the previous retry65%

#17 Retry Strategy for Monthly Subscription 4 - 30%

Name in Hub: "#17 - Monthly 0% /0% /0% /30%"

#Retry IntervalDiscount
11 day after initial collection-
2On the nearest Friday-
39 days after the previous retry-
419 days after the previous retry30%

#18 Retry Strategy for Monthly Subscription 3 - 50%

Name in Hub: "#18 - Monthly 0% /0% /50% /0%"

#Retry IntervalDiscount
11 day after initial collection-
2On the nearest Friday-
39 days after the previous retry50%
419 days after the previous retry-

Cards for test payments

Test cardResult of using
1

card_number: “4532456618142692”
card_holder: “Kurt Cruickshank”
card_exp_month: “03”
card_exp_year: “2029”
card_cvv: “967”
card_token: “card4532456618142692”
card_bin: USA

zip_code: 99801

charge: success,

recurring: success,

refund: success

2card_number: “5589800801939886”
card_holder: “TRINITY SIMON”
card_exp_month: “01”
card_exp_year: “2029”
card_cvv: “695”
card_token: “card5589800801939886”
card_bin: CURACAO

charge: success,

recurring: success,

refund: success

3card_number: “6763428189229070”
card_holder: “JOHN SNOW”
card_exp_month: “11”
card_exp_year: “2029”
card_cvv: “111”
card_token: “card6763428189229070"
card_bin: ITALY

charge: success,

recurring: success,

refund: success

4

card_number: “4916400491851”
card_holder: “Elenora Boehm”
card_exp_month: “09”
card_exp_year: “2029”
card_cvv: “492”
card_token: “card4916400491851”
card_bin: USA

zip_code: 99801

charge: success

recurring: fail

refund: success

5card_number: "4024007166621440"
card_exp_month: "09"
card_exp_year: "2029"
card_holder: "KAITLYN BECKER"
card_cvv: "137"
card_token: “card4024007166621440”
card_bin: UNITED KINGDOM

charge: success

recurring: Decline - “Insufficient funds

refund: success

6

card_number: “4929360879023”
card_holder: “Jeanette Russel”
card_exp_month: “07”
card_exp_year: “2029”
card_cvv: “519”
card_bin: USA

zip_code: 99801

error: {code: 0.01 , message: “General decline”}
7

card_number: “5151948477715326”
card_holder: “STEVEN EDWARDS”
card_exp_month: “10”
card_exp_year: “2029”
card_cvv: “100”
card_bin: USA

zip_code: 99801

error: {code: 3.02, message: “Insufficient funds”}
8card_number: “4532003312475364”
card_holder: “BRANDON BROWN”
card_exp_month: “05”
card_exp_year: “2029”
card_cvv: “957”
card_bin: SPAIN
error: {code: 0.02, message: “Order expired”}
9card_number: “4929213352238223”
card_holder: “LANDON GILSON”
card_exp_month: “06”
card_exp_year: “2029”
card_cvv: “204”
card_bin: UNITED KINGDOM
error: {code: 0.03, message: “Illegal operation”}
10

card_number: “5462413335551193”
card_holder: “AMIA HAILEY”
card_exp_month: “07”
card_exp_year: “2029”
card_cvv: “369”
card_bin: USA

zip_code: 99801

error: {code: 3.01, message: “Card is blocked”}
11

card_number: “4485664001324176”
card_holder: “JENNA WIFKINSON”
card_exp_month: “08”
card_exp_year: “2029”
card_cvv: “383”
card_bin: USA

zip_code: 99801

error: {code: 3.03, message: “Payment amount limit excess”}
12card_number: “5361250317309261”
card_holder: “JESSICA DICKINSON”
card_exp_month: “09”
card_exp_year: “2029”
card_cvv: “629”
card_bin: REPUBLIC OF KOREA
error: {code: 3.04, message: “Transaction is declined by issuer”}
13card_number: “4916242642369774”
card_holder: “BLAKE YOUNG”
card_exp_month: “04”
card_exp_year: “2029”
card_cvv: “595”
card_bin: UNITED KINGDOM
error: {code: 3.05, message: “Call your bank”}
14card_number: “5299389115628964”
card_holder: “GABRIELLE WINTER”
card_exp_month: “03”
card_exp_year: “2029”
card_cvv: “772”
card_bin: RUSSIAN FEDERATION
error: {code: 2.06, message: “Invalid CVV2 code”}
15card_number: “4539146503757117”
card_holder: “DIANA GIMSON”
card_exp_month: “02”
card_exp_year: “2029”
card_cvv: “661”
card_bin: PHILIPPINES
error: {code: 2.08, message: “Invalid card number”}
16

card_number: “5199914302370491”
card_holder: “GABRIEL CARRINGTON”
card_exp_month: “01”
card_exp_year: “2029”
card_cvv: “820”
card_bin: USA

zip_code: 99801

error: {code: 5.08, message: “Invalid transaction”}
17

card_number: “4945960509912296”
card_holder: “ERIN BALD”
card_exp_month: “01”
card_exp_year: “2029"
card_cvv: “420”
card_bin: USA

zip_code: 99801

error: {code: 2.09, message: “Invalid expiration date”}
18

card_number: “5261820900437819”
card_holder: “SEAN DUNCAN”
card_exp_month: “01”
card_exp_year: “2029"
card_cvv: “272”
card_bin: USA

zip_code: 99801

error: {code: 3.06, message: “Debit card not supported.”}
19card_number: “4857027008185133”
card_holder: “DRAEN BARROS  ”
card_exp_month: “09”
card_exp_year: “2029"
card_cvv: “478”
card_bin: GERMANY
error: {code: 2.10, message: “Invalid 3DS flow on the merchant side.”}
20card_number: “5539974195624197”
card_holder: “JAXON PECIGUS  ”
card_exp_month: “07”
card_exp_year: “2029"
card_cvv: “472”
card_bin: SPAUN
error: {code: 5.01, message: “3D secure verification failed.”}
21

card_number: “5134431550984251”
card_holder: “SREBRENKO FREY  ”
card_exp_month: “05”
card_exp_year: “2029"
card_cvv: “584”
card_bin: USA

zip_code: 99801

error: {code: 3.07, message: “Card token not found.”}

for recurrent transactions only

22card_number: “4983102885450335  ”
card_holder: “ERROR AGAIN  ”
card_exp_month: “01”
card_exp_year: “2029"
card_cvv: “111”
card_bin: FRANCE
error: {code: 4.02, message: “Stolen card.”}
23card_number: “4222192107639022  ”
card_holder: “Aleksandr Nabalnii  ”
card_exp_month: “08”
card_exp_year: “2029"
card_cvv: “759”
card_bin: GERMANY
error: {code: 4.04, message: "Lost card.”}
24card_number: “4907428874384745  ”
card_holder: “Boris Mentsov  ”
card_exp_month: “10”
card_exp_year: “2029"
card_cvv: “123”
card_bin: GERMANY
error: {code: 3.08, message: “Do not honor.”}
25card_number: “4283184051091165  ”
card_holder: “Elina Usamov  ”
card_exp_month: “08”
card_exp_year: “2028"
card_cvv: “058”
card_bin: INDIA
error: {code: 3.10, message: “Suspected Fraud.”}