# Introduction

Sola Payments is a complete payment platform that you can tailor to your ambition. Delivered with step-by-step support to power you forward from day one.

## How to Integrate with Sola Payments <a href="#how-to-integrate-with-sola-payments" id="how-to-integrate-with-sola-payments"></a>

### Card Not Present Payments <a href="#card-not-present-payments" id="card-not-present-payments"></a>

### [iFields](https://docs.solapayments.com/products/ifields) & [Transaction API](https://docs.solapayments.com/api/transaction) <a href="#ifields-and-transaction-api" id="ifields-and-transaction-api"></a>

This integration allows developers to build fully custom payment pages while keeping card data secure. iFields generates single-use tokens (SUT) for each transaction, which is then submitted via the Transaction API for processing.

**Key Benefits:**

* Full control over the user interface and payment experience.
* Secure handling of card data, as sensitive information never touches your servers.
* Flexible API integration that aligns with your system workflows.

### Card-on-File & Recurring Payments <a href="#card-on-file-and-recurring-payments" id="card-on-file-and-recurring-payments"></a>

#### Store [Tokens](https://docs.solapayments.com/#knowledgebase-tokenization) in Your System <a href="#store-tokens-in-your-system" id="store-tokens-in-your-system"></a>

Sola generates tokenized card representations (xToken) that can be safely stored in your database and used for card-on-file or recurring transactions.\
**Ideal for:** Platforms with existing customer records that trigger payments programmatically via API.

#### [Customer & Recurring API](https://docs.solapayments.com/api/recurring) <a href="#customer-and-recurring-api" id="customer-and-recurring-api"></a>

Create customers, payment methods, and recurring schedules directly within Sola. Sola returns identifiers for customers, payment methods, and schedules, which can be used for card on file transactions or to set up automated schedules that will run independently in the Sola gateway.\
**Ideal for:** Systems without a customer database or when you prefer Sola to run recurring billing logic.

### Card-Present Payments <a href="#card-present-payments-cloudim-api" id="card-present-payments-cloudim-api"></a>

#### [CloudIM API](https://docs.solapayments.com/products/cloudim-developer-guide) <a href="#card-present-payments-cloudim-api" id="card-present-payments-cloudim-api"></a>

CloudIM enables seamless integration with Sola devices via a cloud-based API, eliminating the need for physical connections, drivers, or local SDKs. Once the device is connected to the merchant’s network, you can process transactions using simple REST API calls.

**Key Benefits:**

* No local SDKs, drivers, or complicated setup required.
* Works over the cloud, allowing remote device management.
* Simplifies card-present transaction handling while maintaining PCI compliance.

### PayFac for Marketplaces & Platforms  <a href="#payfac-for-marketplaces-and-platforms" id="payfac-for-marketplaces-and-platforms"></a>

Sola’s PayFac solution enables marketplaces and multi-merchant platforms to onboard, manage, and monitor sub-merchants under a single master account through the Partner portal. sub-merchant onboarding can also be handled programmatically via our [PayFac onboarding API](https://docs.solapayments.com/api/account-boarding-api).

You can monetize payments by taking a portion of each transaction your sub-merchants process. This amount is transferred to your master account on a per-transaction basis and is handled automatically by our system. Fees can be configured at the account level as either a percentage or a flat amount, or passed dynamically via the [Transaction API](https://docs.solapayments.com/api/transaction) or [Customer & Recurring API](https://docs.solapayments.com/api/recurring).

**Key Benefits:**

* Scalable Sub-Merchant Onboarding
* Automated monetization

## Credentials <a href="#knowledgebase-credentials" id="knowledgebase-credentials"></a>

Across all Sola's products we use a key (`xKey`) to identify on what account to process a specific transaction. Each Sola product doc will guide you where to set the `xKey` (for example: in the body of the request along with all other parameters, in the request header as “Authorization”, in the app settings etc.). You will have a unique `xKey` for [sandbox ](https://solapayments.com/devsdk/)and production accounts.

## Best practices <a href="#best-practices" id="best-practices"></a>

* **Transaction response**\
  Transaction responses contain valuable information that you can utilize. The most important one is `xResult`; this will inform your system if the transaction was approved or declined. `xAuthAmount` will indicate how much was actually authorized by the bank, so it is a good idea to make sure that it matches the requested amount. By default, transactions will only approve for the full amount. If the full amount is not available, the transaction will be declined. Every transaction will receive a unique `xRefnum` that is used to identify this unique transaction. It is helpful during troubleshooting and is also used in case of a follow-up transaction (void refund, etc.). It is a good idea to display this `xRefNum` to the user and add it to receipts. You can find a full list of available response parameters [here](https://docs.cardknox.com/#response-parameters).
* **Logs**

  When submitting transaction requests to the Sola gateway, it is highly recommended to log the full request and response, including both the content body and headers. By logging this information, you ensure that critical details are readily available. In the event of any questions or troubleshooting needs, providing this information to the Sola support team will significantly reduce the time required to assist you or resolve the issue.
* **Declines**\
  When a payment fails, you will get a `xResult` of `D` or `E`. Typically, you would simply want to display the failure notification to the user and show them the `xError` in the response that may, at times, contain helpful information to identify the reason for the decline. You can choose to allow the user to try another card. There is no need to handle different error messages or error codes specifically.
* **Duplicates**\
  It is a good idea to pass in a unique xInvoice with each transaction that is sent for processing so Sola can try to catch unintentional duplicate payments. You can also give the user an option to intentionally process a duplicate payment by incrementing the invoice number or adding `xAllowDuplicate=true` to the transaction request. You can see more about duplicate payment handling [here](https://docs.cardknox.com/#knowledgebase-duplicatehandling).

## Vendor Settings *(optional)* <a href="#vendor-settings-optional" id="vendor-settings-optional"></a>

A Vendor ID is a unique identifier associated with your vendor account. This feature is useful when you will be processing payments across multiple Sola accounts. It allows for specific settings to be configured on your vendor account, and these settings will be applied on transactions that include your Vendor ID in the transaction request. When using this feature, It is optimal to include your vendor ID across all transactions that you process on the Sola gateway.

#### **Setup** <a href="#setup" id="setup"></a>

Our support team can enable your vendor account and provide you with the ID.

#### **Usage** <a href="#usage" id="usage"></a>

To use Vendor settings, include the `xVendorID` = {yourvendorid} in the transactions request.

#### **Features/Benefits** <a href="#features" id="features"></a>

**iFields key:** Use a single iFields key across all your accounts.

**Tokenization:** Tokens can be used across accounts.

**Licenses:** Unlimited device licenses

## Tokenization <a href="#knowledgebase-tokenization" id="knowledgebase-tokenization"></a>

Tokenization is the process of replacing sensitive payment data with a non-sensitive algorithm-generated `string` called a **token (`xToken`).** Each time you send a card or bank account number with a transaction, the response will include a token represented by `xToken`.

As a merchant’s [PCI-compliance scope](https://solapayments.com/guides/pci-compliance-the-biggest-myths-explained/) significantly increases when storing sensitive data, the best practice is to store the token in your database rather than sensitive data. You use the token for follow-up transactions.

> With this approach, **sensitive data will not be at risk** if a data breach occurs on your local system.

Sola references the payment information on our servers associated with the token sent and processes the transaction. A new token will be returned on every new transaction processed.

You can reuse the original token multiple times. However, you should use the new returned token in the following scenarios:

* If the card has a new expiration date.
* If a response flag indicates, the card was updated/modified.

A token only stores the data sent with a transaction that is necessary to process future transactions. It does not store general customer information such as billing and contact information.<br>

As an example, for a credit card transaction, only the credit card number, expiration date, street address, and zip code (which can be required for Address Verification System (AVS) validation) are stored with the token.

{% hint style="info" %}
**Note:** The 3 or 4 digit CVV number is never stored on Sola servers as per PCI regulations, and in extension, is not associated with tokens. CVV data is only used when processing initial transactions where the cardholder is generating the transaction with their physical card in hand.
{% endhint %}

{% hint style="info" %}
Tokens can be used only on the account it was generated on unless linked to another account via **cross tokenization**&#x20;

You can request **account linking for tokenization** via [Support](https://solapayments.com/support/).

The best practice is to generate tokens on one account and link all other accounts to your first account instead of generating tokens for each.
{% endhint %}

To generate a token for a payment method without processing a transaction, use the save command.

* For credit card transactions: `cc:save`.
* For check transactions: `check:save`.

## Duplicate Handling <a href="#knowledgebase-duplicatehandling" id="knowledgebase-duplicatehandling"></a>

The Sola Gateway automatically blocks a transaction considered a “duplicate” of another transaction based on certain identifying features and if the transactions are within 10 minutes (*default timeframe*) of each other.\
\
The transaction will error with a message of: `Duplicate Transaction`

Identifying Features:

* Key
* Credit Card Number
* Transaction Amount
* Invoice Number
* Check Account Number
* Check Routing Number

You can allow the transaction to go through by changing any of the above. Alternatively, you can pass through "`xAllowDuplicate` = True" in the transaction request.

You can set `xDuplicateWindow` with the number of minutes on a transaction request to override the default 10-minute timeframe of the duplicate checker.

{% hint style="info" %}
By default, you can set it up to 1440 (24 Hours) max.\
Your account can be set to allow up to 43200 (30 Days) via [Support](https://solapayments.com/support/).
{% endhint %}

## Batches <a href="#knowledgebase-batches" id="knowledgebase-batches"></a>

Each day, all captured transactions are added to a batch file. Once the batch cutoff time is reached (determined by the processing bank), Sola automatically “batches out”, which sends the related transactions to the bank for settlement. A batch report is available in the Sola portal.

## Response Parameters

Transactions that are submitted to the Sola API will return a response with one or more of the fields below. Below are the standard parameters and their values. The field names in parentheses are the fields for the reporting API.

| **Field Name**                        | **Description**                                                                                                                                                                                                                          | **Sample values**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **xResult** (xGatewayResult)          | Single character code indicating if the transaction was Approved or not. A = Approved E = Error D = Declined                                                                                                                             | <p>A<br>E<br>D</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| **xStatus** (xResponseResult)         | Verbiage indicating if the transaction was approved or not.                                                                                                                                                                              | <p>Approved<br>Error<br>Declined</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| **xError** (xResponseError)           | Error message, if applicable                                                                                                                                                                                                             | See error code                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| **xErrorCode**                        | Error code                                                                                                                                                                                                                               | <p>Most common error codes:<br>00000 = Approved<br>01332 = Duplicate Transaction<br>01334 = Declined Transaction<br>01479 = Invalid Card</p><p><a href="api/error-codes">See All Error Codes</a></p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| **xRefNum**                           | <p>Sola transaction reference number<br>Note: xRefnum is always returned regardless of the outcome of the transaction<br><br>Note: <code>xRefnum</code> can be a 64-bit number and should be stored as BIGINT, Long, Int64 or String</p> |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| **xInvoice**                          | Invoice number                                                                                                                                                                                                                           |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| **xExp**                              | The card expiration number                                                                                                                                                                                                               |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| **xAuthCode** (xResponseAuthCode)     | Authorization code, for approved transactions only                                                                                                                                                                                       |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| **xBatch** (xResponseBatch)           | Batch into which the transaction will settle                                                                                                                                                                                             |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| **xAvsResultCode** (xResponseAVSCode) | The Address Verification Service (AVS) response code                                                                                                                                                                                     | <p>YYY = Address: Match & 5 Digit Zip: Match<br>NYZ = Address: <strong>No Match</strong> & 5 Digit Zip: Match<br>YNA = Address: Match & 5 Digit Zip: <strong>No Match</strong><br>NNN = Address: <strong>No Match</strong> & 5 Digit Zip: <strong>No Match</strong><br>XXU = Address Information not verified for domestic transaction<br>YYX = Address: Match & 9 Digit Zip: Match<br>NYW = Address: No Match & 9 Digit Zip: Match<br>XXR = Retry / System Unavailable<br>XXS = Service Not Supported<br>XXW = Card Number Not On File<br>XXE = Address Verification Not Allowed For Card Type<br>XXG = Global Non-AVS participant<br>YYG = International Address: Match & Zip: Not Compatible<br>GGG = International Address: Match & Zip: Match<br>YGG = International Address: Not Compatible & Zip: Match</p><p>Alternative Responses</p><p>AvsResultCodexAvsResultYAddress: Match & 5 Digit Zip: MatchZNo Match & 5 Digit Zip: MatchAAddress: Match & 5 Digit Zip: No MatchNAddress: No Match & 5 Digit Zip: No MatchXAddress: Match & 9 Digit Zip: MatchWAddress: No Match & 9 Digit Zip: MatchRRetry / System UnavailableSService Not Supported</p> |
| **xAvsResult**                        | AVS verbiage                                                                                                                                                                                                                             | See AVS result code                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| **xCvvResultCode** (xResponseCVVCode) | Card code verification (CCV) response code                                                                                                                                                                                               | <p>M = Match<br>N = No Match<br>P = Not Processed<br>S = Should be on card, but not so indicated<br>U = Issuer Not Certified<br>X = No Response from Association</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| **xCvvResult**                        | CVV verbiage                                                                                                                                                                                                                             | See CVV result code                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| **xAuthAmount** (xAmount)             | The total amount authorized, inclusive of tax and tip (if applicable)                                                                                                                                                                    |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| **xMaskedCardNumber**                 | A masked version of the credit card used for the transaction                                                                                                                                                                             |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| **xCardType**                         | Type of credit card used for the transaction                                                                                                                                                                                             | <p>Unknown<br>EBT<br>GiftCard<br>Amex<br>Visa<br>MasterCard<br>Discover<br>Diners<br>JCB<br>DonorsFund<br>OJC<br>Pledger</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| **xName**                             | Name of cardholder                                                                                                                                                                                                                       | John                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| **xToken**                            | Token returned for use with future transaction                                                                                                                                                                                           | gh3hpn46mp0g785915gn7h79q502976n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| **xCurrency**                         | Currency that the transaction was processed in                                                                                                                                                                                           | USD                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| **xEntryMethod**                      | Transaction method                                                                                                                                                                                                                       | <p>Keyed<br>EMV<br>Swipe</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| **xDate**                             | Date and time the transaction was processed                                                                                                                                                                                              | 1/1/2020 10:00:00 AM                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| **xRefnumCurrent**                    | Current reference number                                                                                                                                                                                                                 | **Used for troubleshooting purposes only.** Returned when using a command that modifies an existing transaction, such as cc:void, cc:capture, or cc:adjust.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| **xReviewed**                         | This will be returned only if account is configured to return this response field.                                                                                                                                                       | <p>Y = Transaction was authenticated by 3ds. If authentication was submitted to the bank, the merchant will have chargeback protection. </p><p>P = Transaction was authenticated by 3ds. If authentication was submitted to the bank, the merchant may not have chargeback protection. </p><p>N =Transaction was not able to achieve 3ds authentication. If authentication was submitted to the bank, the merchant may not have chargeback protection. </p><p>F = The 3ds authentication process completed but the bank response indicated that the results were invalid. The merchant will not have fraud chargeback protection.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| x3dsSubmitted                         | This indicates if the bank request included 3ds data elements.                                                                                                                                                                           | 1 = The bank request included 3ds data elements.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| (xStatus)                             | The ACH status that you receive in webhooks                                                                                                                                                                                              | <p>0 (Pending)</p><p>20 (Rejected)</p><p>5 (Cancelled)</p><p>6 (Awaiting Response)</p><p>14 (Chargeback)</p><p>16 (Settled)</p><p>18 (Returned)</p><p>19 (Hold)</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| xIssuerResponseCode                   | This code received from the card association / issuer will be returned when available.                                                                                                                                                   |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |

## Sandbox Account Testing Info and Triggers <a href="#sandbox-account-testing-info-and-triggers" id="sandbox-account-testing-info-and-triggers"></a>

A sandbox account is used to simulate transactions as if it is in production. It is designed to act exactly like a production account. However, there can sometimes be unique account setups where the production account won't match the sandbox account exactly to a T. Therefore, we recommend that you do all your testing in the sandbox account and then doing one final test when going live and swapping out your sandbox key with your production key.

#### Test Credit Card and Account Numbers <a href="#credit-card-and-account-numbers-hardbreak" id="credit-card-and-account-numbers-hardbreak"></a>

Test credit card and account numbers are available for testing and development. You can use any valid card number to submit transactions while using a sandbox account. The card will not actually be charged as long as you are using your sandbox key. To avoid your system unintentionally going live while still configured with your sandbox credentials, transactions in the sandbox account are limited to $10. You can bypass that limit by using the below numbers.

{% tabs %}
{% tab title="Credit Card" %}

| Card Type        | Card Number         |
| ---------------- | ------------------- |
| Visa             | 4444333322221111    |
| Visa             | 4111111111111111    |
| Visa (3DS)       | 4000000000002503    |
| Mastercard       | 5454545454545454    |
| Discover         | 6011208703331119    |
| American Express | 370276000431054     |
| EBT              | 6004861944321111844 |
| Pledger          | 6599973548556861    |
| DonorsFund       | 6599993776775348    |
| OJC              | 6900664467242419    |
| {% endtab %}     |                     |

{% tab title="Check (ACH)" %}

| Account Number | Routing Number                       |
| -------------- | ------------------------------------ |
| 999999999      | 021000021 (any valid routing number) |
| {% endtab %}   |                                      |
| {% endtabs %}  |                                      |

### Triggers

{% tabs %}
{% tab title="Declined/Error Transaction" %}

| **xName** | **Response** |
| --------- | ------------ |
| Decline   | Declined     |

| xAmount      | Response      |
| ------------ | ------------- |
| **9.91**     | Declined      |
| **9.92**     | Gateway Error |
| {% endtab %} |               |

{% tab title="Partial Auth" %}

(AllowPartialAuth must be set to True)

| **xAmount**  | **AuthAmount** |
| ------------ | -------------- |
| **7.5**      | 1.5            |
| **7.23**     | 1.23           |
| {% endtab %} |                |

{% tab title="Delay/Timeout" %}

| xAmount  | Behavior                    | Response  |
| -------- | --------------------------- | --------- |
| **7.31** | Response delayed 30 seconds | Try Again |
| **7.32** | Response delayed 30 seconds | Try Again |
| **7.29** | Response delayed 30 seconds | Approved  |

| **xDescription**      | **Behavior**                 | **Response** |
| --------------------- | ---------------------------- | ------------ |
| **Delay**             | Response delayed 30 seconds  | Approved     |
| **Timeout**           | Response delayed 30 seconds  | Try Again    |
| **Timeout\_Extended** | Response delayed 120 seconds | Try Again    |
| {% endtab %}          |                              |              |

{% tab title="CVV Responses" %}

| **xCVV**      | **CVV Result** | **CVV Result Code**                     |
| ------------- | -------------- | --------------------------------------- |
|               |                |                                         |
| **123**       | M              | Match                                   |
| **1234**      | M              | Match                                   |
| **111**       | M              | Match                                   |
| **1111**      | M              | Match                                   |
| **222**       | N              | No Match                                |
| **2222**      | N              | No Match                                |
| **555**       | P              | Not Processed                           |
| **444**       | S              | Should be on card, but not so indicated |
| **8888**      | U              | Issuer Not Certified                    |
| **7777**      | X              | No Response from Association            |
| {% endtab %}  |                |                                         |
| {% endtabs %} |                |                                         |

{% tabs %}
{% tab title="AVS Responses" %}

<table data-header-hidden><thead><tr><th width="170">xStreet</th><th>xZip</th><th>AvsResultCode</th><th>xAvsResult</th></tr></thead><tbody><tr><td><strong>xStreet</strong></td><td><strong>xZip</strong></td><td><strong>AvsResultCode</strong></td><td><strong>xAvsResult</strong></td></tr><tr><td><strong>111</strong></td><td>11111</td><td>YYY</td><td>Address: Match &#x26; 5 Digit Zip: Match</td></tr><tr><td><strong>999</strong></td><td>99999</td><td>NNN</td><td>Address: No Match &#x26; 5 Digit Zip: No Match</td></tr><tr><td><strong>111</strong></td><td>111111111</td><td>YYX</td><td>Address: Match &#x26; 9 Digit Zip: Match</td></tr><tr><td><strong>111</strong></td><td>99999</td><td>YNA</td><td>Address: Match &#x26; 5 Digit Zip: No Match</td></tr><tr><td><strong>999</strong></td><td>111111111</td><td>NYW</td><td>Address: No Match &#x26; 9 Digit Zip: Match</td></tr><tr><td><strong>999</strong></td><td>11111</td><td>NYZ</td><td>Address: No Match &#x26; 5 Digit Zip: Match</td></tr><tr><td><strong>888</strong></td><td>88888</td><td>XXR</td><td>Retry / System Unavailable</td></tr><tr><td><strong>777</strong></td><td>77777</td><td>XXU</td><td>Address Information not verified for domestic transaction</td></tr><tr><td><strong>666</strong></td><td>66666</td><td>XXS</td><td>Service Not Supported</td></tr></tbody></table>
{% endtab %}

{% tab title="Alternative AVS Responses" %}

| **AvsResultCode** | **xAvsResult**                            |
| ----------------- | ----------------------------------------- |
| **Y**             | Address: Match & 5 Digit Zip: Match       |
| **Z**             | No Match & 5 Digit Zip: Match             |
| **A**             | Address: Match & 5 Digit Zip: No Match    |
| **N**             | Address: No Match & 5 Digit Zip: No Match |
| **X**             | Address: Match & 9 Digit Zip: Match       |
| **W**             | Address: No Match & 9 Digit Zip: Match    |
| **R**             | Retry / System Unavailable                |
| **S**             | Service Not Supported                     |
| {% endtab %}      |                                           |
| {% endtabs %}     |                                           |

The Sola gateway does not require developers to go through a certification process. We do provide a process to self-certify if developers choose to do so. You can download the Sola Self-certification Guide.
