In the following part of documentation you will find a supportive information for easy integration with SolidGate.
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.
Parameter | Type | Regular Expression | Description | Country | Method |
---|---|---|---|---|---|
argentina_dni | string | [0-9]{7,9} | A national identity document code should be collected and provided for Argentinian cardholders. | Argentina | Card |
bangladesh_nic | string | [0-9]{13,17} | National Identity Card | Bangladesh | Card |
bolivia_ci | string | [0-9]{5,20} | Cedula de Identidad | Bolivia | Card |
brazil_cpf | string | [0-9]{11,14} | CPF | Brazil | Card |
cameroon_cni | string | [0-9]{8} | СNI | Cameroon | Card |
chile_ci | string | .{8,9} | Rol Único Tributario | Chile | Card |
china_id | string | [0-9]{5,20} | Citizen ID Number | China | Card |
colombia_cc | string | [0-9]{6,10} | Cedula de Ciudadania | Colombia | Card |
costa_rica_ci | string | [0-9]{9} | Cédula de Identidad | Costa Rica | Card |
dominicana_id | string | [0-9]{11} | Identity card | Dominican Republic | Card |
ecuador_ci | string | [0-9]{5,20} | Cédula de Identidad | Ecuador | Card |
el_salvador_id | string | [0-9]{9,11} | Personal Identification Card | El Salvador | Card |
egypt_id | string | [0-9]{14} | Identity card | Egypt | Card |
ghana_card | string | [a-zA-Z0-9]{13} | Ghana Card | Ghana | Card |
guatemala_cui | string | [0-9]{13} | CUI | Guatemala | Card |
india_pan | string | [a-zA-Z]{5}[0-9]{4}[a-zA-Z]{1} | PAN | India | Card |
indonesia_nik | string | [0-9]{16} | NIK | Indonesia | Card |
japan_id | string | [0-9]{12} | My Number | Japan | Card |
kenya_id | string | [0-9]{8} | National ID Card | Kenya | Card |
malaysia_nric | string | [0-9]{12} | NRIC | Malaysia | Card |
mexico_curp | string | [a-zA-Z0-9]{10,18} | CURP | Mexico | Card |
morocco_cnie | string | [a-zA-Z0-9]{5,20} | CNIE | Morocco | Card |
nigeria_nin | string | [0-9]{11} | NIN | Nigeria | Card |
panama_id | string | [0-9]{8} | Cedula de Identidad | Panama | Card |
paraguay_ci | string | [0-9]{5,20} | Cedula de Identidad | Paraguay | Card |
peru_dni | string | [0-9]{8,9} | A national identity document code should be collected and provided for Peruvian cardholders. | Peru | Card |
philipines_psn | string | [0-9]{12} | PSN | Philippines | Card |
senegal_cni | string | [0-9]{13,17} | CNI or ECOWAS ID Card | Senegal | Card |
south_africa_id | string | [0-9]{13} | South African Identity Card | South Africa | Card |
tanzania_id | string | [0-9]{20} | National Identity Card | Tanzania | Card |
thailand_id | string | [0-9]{13} | Thai Identity Card | Thailand | Card |
turkey_tc_kimlik_no | string | [0-9]{5,20} | T.C. Kimlik No. | Turkey | Card |
uganda_nic | string | [a-zA-Z0-9]{14} | National ID number (NIC) | Uganda | Card |
uriguay_ci | string | [0-9]{6,8} | Cédula de Identidad | Uruguay | Card |
vietnam_vnid | string | ^[0-9]{9}$|^[0-9]{12}$ | VNID | Vietnam | Card |
Code | Description |
---|---|
0.01 | General decline |
0.02 | Order expired |
0.03 | Illegal operation (violation of law) |
1.01 | Authentication failed |
2.01 | Invalid data/Order not found "Invalid data" code message is used for validation errors, with the reason for the validation triggering specified in the body (object error) of the response. |
2.02 | Invalid Amount |
2.03 | Invalid Currency |
2.05 | Order not found |
2.06 | Invalid CVV2 code |
2.07 | Request Is empty |
2.08 | Invalid card number |
2.09 | Invalid expiration date |
2.10 | Invalid 3DS flow on the merchant side |
2.11 | Invalid 3DS flow on the bank side |
2.12 | Invalid 3DS flow |
2.13 | Invalid IP |
2.14 | Subscription Error |
2.15 | SCA require 3D authentication |
2.16 | Subscription is locked |
3.01 | Card is blocked |
3.02 | Insufficient funds |
3.03 | Payment amount limit excess |
3.04 | The transaction is declined by the issuer |
3.05 | Call your bank |
3.06 | Debit card not supported |
3.07 | Card brand is not supported |
3.08 | Do not honor |
3.09 | 3D-Secure authentication required |
3.10 | Suspected fraud |
4.01 | Card is in a black list |
4.02 | Stolen card |
4.03 | Restricted card |
4.04 | Lost card |
4.05 | PSP fraud |
4.06 | Blocked by Country/IP |
4.07 | Trusted antifraud system |
4.08 | AVS mismatch |
4.09 | Solid antifraud engine |
5.01 | 3D secure verification failed |
5.02 | Invalid Card Token |
5.03 | Application error |
5.04 | Merchant is not configured correctly |
5.05 | Merchant is not activated yet |
5.06 | Duplicate order |
5.07 | Exceeded API calls limits |
5.08 | Invalid transaction |
5.09 | Merchant not found |
5.10 | Processor does not support requested API method |
5.11 | Invalid routing |
5.12 | Account is blocked |
6.01 | Unknown decline code |
6.02 | Connection error |
7.01 | Card token not found |
7.02 | Google payment error |
7.03 | Smart cascade decline |
7.04 | 3DS cascade to 2D |
7.05 | Apple online payment error |
7.06 | Token generation error |
7.07 | SCA engine error |
Value | Final state | Description |
---|---|---|
created | No | The order was created. It stays in this state until a payment is attempted on it. |
processing | No | The 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_verify | No | The order goes through 3DS verification |
settle_pending | No | The payment has been confirmed but not yet credited to the merchant's account. This logic applies only to Giropay/iDeal/Sofort payment methods. |
approved | Yes | The order is approved and the payment is successful |
declined | Yes | The order was declined |
refunded | Yes | Funds by the order were transferred back to the cardholder |
auth_ok | Yes | Funds were successfully reserved |
auth_failed | Yes | Reservation of the funds is failed |
settle_ok | Yes | Funds were successfully settled |
partial_settled | No | Part of the funds was successfully settled |
void_ok | Yes | Operation 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.
Value | Description |
---|---|
created | The transaction was created |
settle_pending | The payment has been confirmed but not yet credited to the merchant's account. This logic applies only to Giropay/iDeal/Sofort payment methods. |
processing | The transaction is in processing |
success | Transaction successfully processed |
fail | An error processing the transaction |
verify | The transaction is going through 3DS verification |
Value | Description |
---|---|
pay | Operation of funds reservation |
recurring | Operation of payment by the token |
recurring-auth | Operation of funds reservation by the token |
refund | Operation for transferring funds back to the cardholder |
resign | Operation of payment by the token + cvv |
resign-auth | Operation of hold amounts by the token + cvv |
auth | Operation of funds reservation |
settle | Operation of settling funds reservation |
void | Operation of canceling the funds reservation |
apple-pay | Apple Pay Payment |
google-pay | Google Pay Payment |
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.
Code | Description | When is used |
0021 | Solid - Request by User | This refund reason is used for all manual refunds via My.Solid |
0022 | Solid - Issuer Fraud Notification | When the issuer reports a fraudulent charge directly to Solid, our Team may do a refund after contacting the client. |
0023 | Solid - Risk Department | After our team detects fraud, the client may ask to refund transactions. |
0024 | Solid - Retrieval Request | If the issuer posts a Retrieval Request, the client could choose to refund the transactions. |
0025 | Solid - Prevention Alert | Refunds are automatically issued with this code when we receive a prevention alert. Previously, the following refund codes 0016,0017,0018,0019 were used. |
0026 | Solid - System Error | This code is used rarely, only in case of technical problems between Solid, providers, and payment networks. |
0027 | Solid - Antifraud | This code is used for automatic refund action in our antifraud. |
0028 | Solid - Expired Authorization | After auth expires, we will issue the void with this code. |
0001 | Request by Support user | Deprecated |
0002 | Fraud - PSP | |
0003 | Fraud - SP Antifraud | |
0004 | Fraud - SP Antifraud | |
0005 | Fraud - MaxMind | |
0006 | Fraud - Threatmetrix | |
0007 | Fraud - Manual check | |
0008 | Potential Chargeback - Retrieval Request | |
0009 | Potential Chargeback - Refund after Chargeback | |
0010 | System Error - Product | |
0011 | System Error - SignedPay | |
0012 | System Error - PSP | |
0013 | Ethoca alert - Fraud | |
0014 | Ethoca alert - Friendly Fraud | |
0015 | Ethoca alert - Potential Chargeback | |
0016 | Verifi alert - Fraud | |
0017 | Verifi alert - Friendly Fraud | |
0018 | Verifi alert - Potential Chargeback | |
0019 | VMPI Alert | |
0020 | Mismatch status (Decline - Approved) |
Disputes are the general term for actions that are performed by a user to cancel the transaction without interacting with the merchant.
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.
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.
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.
Name in Hub: "#1 - Weekly 0% /0% /0% /0%"
# | Retry Interval | Discount |
---|---|---|
1 | 1 day after initial collection | - |
2 | On the nearest Friday | - |
3 | 2 days after the previous retry | - |
4 | 5 days after the previous retry | - |
Name in Hub: "#2 - Weekly 0% /0% /0% /25%"
# | Retry Interval | Discount |
---|---|---|
1 | 1 day after initial collection | - |
2 | On the nearest Friday | - |
3 | 2 days after the previous retry | - |
4 | 5 days after the previous retry | 25% |
Name in Hub: "#3 - Weekly 0% /0% /50% /0%"
# | Retry Interval | Discount |
---|---|---|
1 | 1 day after initial collection | - |
2 | On the nearest Friday | - |
3 | 2 days after the previous retry | 50% |
4 | 5 days after the previous retry | - |
Name in Hub: "#4 - Weekly 0% /0% /0% /75%"
# | Retry Interval | Discount |
---|---|---|
1 | 1 day after initial collection | - |
2 | On the nearest Friday | - |
3 | 2 days after the previous retry | - |
4 | 5 days after the previous retry | 75% |
Name in Hub: "#5 - Weekly 0% /0% /25% /50%"
# | Retry Interval | Discount |
---|---|---|
1 | 1 day after initial collection | - |
2 | On the nearest Friday | - |
3 | 2 days after the previous retry | 25% |
4 | 5 days after the previous retry | 50% |
Name in Hub: "#6 - Weekly 10% /25% /50% /75%"
# | Retry Interval | Discount |
---|---|---|
1 | 1 day after initial collection | 10% |
2 | On the nearest Friday | 25% |
3 | 2 days after the previous retry | 50% |
4 | 5 days after the previous retry | 75% |
Name in Hub: "#7 - Weekly 25% /50% /75% /75%"
# | Retry Interval | Discount |
---|---|---|
1 | 1 day after initial collection | 25% |
2 | On the nearest Friday | 50% |
3 | 2 days after the previous retry | 75% |
4 | 5 days after the previous retry | 75% |
Name in Hub: "#8 - Weekly 0% /15% /40% /65%"
# | Retry Interval | Discount |
---|---|---|
1 | 1 day after initial collection | - |
2 | On the nearest Friday | 15% |
3 | 2 days after the previous retry | 40% |
4 | 5 days after the previous retry | 65% |
Name in Hub: "#9 - Monthly 0% /0% /0% /0%"
# | Retry Interval | Discount |
---|---|---|
1 | 1 day after initial collection | - |
2 | On the nearest Friday | - |
3 | 9 days after the previous retry | - |
4 | 19 days after the previous retry | - |
Name in Hub: "#10 - Monthly 0% /0% /0% /25%"
# | Retry Interval | Discount |
---|---|---|
1 | 1 day after initial collection | - |
2 | On the nearest Friday | - |
3 | 9 days after the previous retry | - |
4 | 19 days after the previous retry | 25% |
Name in Hub: "#11 - Monthly 0% /0% /0% /50%"
# | Retry Interval | Discount |
---|---|---|
1 | 1 day after initial collection | - |
2 | On the nearest Friday | - |
3 | 9 days after the previous retry | - |
4 | 19 days after the previous retry | 50% |
Name in Hub: "#12 - Monthly 0% /0% /0% /75%"
# | Retry Interval | Discount |
---|---|---|
1 | 1 day after initial collection | - |
2 | On the nearest Friday | - |
3 | 9 days after the previous retry | - |
4 | 19 days after the previous retry | 75% |
Name in Hub: "#13 - Monthly 0% /0% /25% /50%"
# | Retry Interval | Discount |
---|---|---|
1 | 1 day after initial collection | - |
2 | On the nearest Friday | - |
3 | 9 days after the previous retry | 25% |
4 | 19 days after the previous retry | 50% |
Name in Hub: "#14 - Monthly 0% /25% /50% /75%"
# | Retry Interval | Discount |
---|---|---|
1 | 1 day after initial collection | - |
2 | On the nearest Friday | 25% |
3 | 9 days after the previous retry | 50% |
4 | 19 days after the previous retry | 75% |
Name in Hub: "#15 - Monthly 25% /50% /50% /75%"
# | Retry Interval | Discount |
---|---|---|
1 | 1 day after initial collection | 25% |
2 | On the nearest Friday | 50% |
3 | 9 days after the previous retry | 50% |
4 | 19 days after the previous retry | 75% |
Name in Hub: "#16 - Monthly 0% /15% /40% /65%"
# | Retry Interval | Discount |
---|---|---|
1 | 1 day after initial collection | - |
2 | On the nearest Friday | 15% |
3 | 9 days after the previous retry | 40% |
4 | 19 days after the previous retry | 65% |
Name in Hub: "#17 - Monthly 0% /0% /0% /30%"
# | Retry Interval | Discount |
---|---|---|
1 | 1 day after initial collection | - |
2 | On the nearest Friday | - |
3 | 9 days after the previous retry | - |
4 | 19 days after the previous retry | 30% |
Name in Hub: "#18 - Monthly 0% /0% /50% /0%"
# | Retry Interval | Discount |
---|---|---|
1 | 1 day after initial collection | - |
2 | On the nearest Friday | - |
3 | 9 days after the previous retry | 50% |
4 | 19 days after the previous retry | - |
№ | Test card | Result of using |
---|---|---|
1 | card_number: “4532456618142692” zip_code: 99801 | charge: success, recurring: success, refund: success |
2 | card_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 |
3 | card_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” zip_code: 99801 | charge: success recurring: fail refund: success |
5 | card_number: "4024007166621440" card_exp_month: "09" card_exp_year: "2029" card_holder: "KAITLYN BECKER" card_cvv: "137" card_token: “card4024007166621440” card_bin: USA | charge: success recurring: Decline - “Insufficient funds refund: success |
6 | card_number: “4929360879023” zip_code: 99801 | error: {code: 0.01 , message: “General decline”} |
7 | card_number: “5151948477715326” zip_code: 99801 | error: {code: 3.02, message: “Insufficient funds”} |
8 | card_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”} |
9 | card_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” zip_code: 99801 | error: {code: 3.01, message: “Card is blocked”} |
11 | card_number: “4485664001324176” zip_code: 99801 | error: {code: 3.03, message: “Payment amount limit excess”} |
12 | card_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”} |
13 | card_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”} |
14 | card_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”} |
15 | card_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” zip_code: 99801 | error: {code: 5.08, message: “Invalid transaction”} |
17 | card_number: “4945960509912296” zip_code: 99801 | error: {code: 2.09, message: “Invalid expiration date”} |
18 | card_number: “5261820900437819” zip_code: 99801 | error: {code: 3.06, message: “Debit card not supported.”} |
19 | card_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.”} |
20 | card_number: “5539974195624197” card_holder: “JAXON PECIGUS ” card_exp_month: “07” card_exp_year: “2029" card_cvv: “472” card_bin: SPAIN | error: {code: 5.01, message: “3D secure verification failed.”} |
21 | card_number: “5134431550984251” zip_code: 99801 | error: {code: 3.07, message: “Card token not found.”} for recurrent transactions only |
22 | card_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.”} |
23 | card_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.”} |
24 | card_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.”} |
25 | card_number: “4283184051091165 ” card_holder: “Elina Usamov ” card_exp_month: “08” card_exp_year: “2028" card_cvv: “058” card_bin: AUSTRALIA | error: {code: 3.10, message: “Suspected Fraud.”} |