# Reporting API

## Overview <a href="#overview" id="overview"></a>

The Sola Reporting API enables you to generate transaction reports based on specified parameters, such as date ranges. Reports can be created for single accounts or multiple accounts.

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

| Parameter | Description | Comment                               |
| --------- | ----------- | ------------------------------------- |
| xKey      | Credential  | Max Size: 250 Alphanumeric Characters |

### Universally Required Parameters <a href="#universally-required-parameters" id="universally-required-parameters"></a>

| Parameter        | Description                     | Comment                              |
| ---------------- | ------------------------------- | ------------------------------------ |
| xVersion         | Gateway API version             | The current version is 5.0.0         |
| xSoftwareName    | The name of your software       |                                      |
| xSoftwareVersion | Version number of your software | 2.1                                  |
| xCommand         | Transaction type                | Samples: report:all, report:approved |

### Other Parameters

| Parameter          | Description                                                                                                                    | Comment                                                                                                                                                |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| xReturnDownloadURL | A boolean flag indicating if response should include `xReportURL` to use for downloading the results instead of `xReportData`. | If you are running reports that are returning more than 5MB of data we recommend that you use this parameter. The URL returned is valid for 5 minutes. |

### Endpoints <a href="#endpoints" id="endpoints"></a>

Base URL: [https://x1.cardknox.com](https://x1.cardknox.com/)

Sola reporting API allows you to send the data in **FormData** and **JSON** formats.\
Add to the base URL any of the following formats to indicate which format you are sending it as:

| FormData | /report     | <https://x1.cardknox.com/report>     |
| -------- | ----------- | ------------------------------------ |
| JSON     | /reportjson | <https://x1.cardknox.com/reportjson> |

#### Request Method <a href="#request-method" id="request-method"></a>

Method: POST\
The Cardknox gateway requires the POST method to be used for enhanced security. We do not support the GET method.

### Pagination <a href="#pagination" id="pagination"></a>

1. Submit the first request.
2. If xRecordsReturned equals xReportingMaxTransactions, submit another report request and adjust the beginning date and time according to the last transaction returned.

### Filter Options <a href="#filter-options" id="filter-options"></a>

Available filtering options include the following:

**Required Parameters**

| Parameter   | Description                                                      | Sample Value                                                                                                                             |
| ----------- | ---------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| xgetnewest  | Returns the most recent transactions in the requested date range | True/False                                                                                                                               |
| xmaxrecords | Sets the maximum number of records to return on the report       | <p>Integer value between 1 – 1000\*</p><p>If the date range on the report is within 24 hours you can request up to 5000 transactions</p> |

For date-based reports, you can filter results using the following operators for any of the reporting fields:

| Parameter | Operator  | Description                                                                                          | Example               |
| --------- | --------- | ---------------------------------------------------------------------------------------------------- | --------------------- |
| ai        | In        | Use for an exact match.                                                                              | xBillCountry=aiCanada |
| a=        | Like      | Use for fields that include your search string, but sometimes also include other information.        | xAmount=a=40          |
| a!        | Not Like  | Use for fields that do not include your search string, but sometimes also include other information. | xCardLastFour=a!4444  |
| an        | Not In    | Shows results that don’t have the value you enter.                                                   | xBillPhone=an212      |
| as        | Ends With | Use when you know what your value starts with.                                                       | xName=asJane          |
| ae        | Ends With | Use when you know what your value ends with.                                                         | xEmail=aeOrg          |

### Customize report parameters  <a href="#customize-report-parameters" id="customize-report-parameters"></a>

To customize the transaction parameters included in a generated report, you can utilize the "xFields" parameter and specify the desired field names. Refer to the available parameters listed [here](https://docs.solapayments.com/#response-parameters).

| Parameter | Description                                      | Sample Value                                                                                |
| --------- | ------------------------------------------------ | ------------------------------------------------------------------------------------------- |
| xFields   | Specify parameters to be returned in the report. | xrefnum, xcommand, xname, xmaskedcardnumber, xtoken, xamount, xentereddate, xresponseresult |

## Report Types <a href="#report-types" id="report-types"></a>

Available report types include the following:

### Date-Based Reports <a href="#date-based-reports" id="date-based-reports"></a>

#### Report:Approved

xCommand: **Report:Approved**

The Report:Approved command returns the following transactions:

* CC:Sale
* CC:Capture
* CC:PostAuth
* CC:Save
* CC:Credit
* CC:Refund

The Report:Approved command does not return authorization-only transactions that have not been captured.

**Required Parameters**

| Parameter  | Description                                                        | Sample Value                                |
| ---------- | ------------------------------------------------------------------ | ------------------------------------------- |
| xBeginDate | Transaction begin date in YYYY-MM-DD or YYYY-MM-DD HH:MM:SS format | <p>2020-01-01</p><p>2019-08-15 09:00:00</p> |
| xEndDate   | Transaction end date in YYYY-MM-DD or YYYY-MM-DD HH:MM:SS format   | <p>2019-10-31</p><p>2020-06-30 12:00:00</p> |

#### Report:Declined

xCommand: **Report:Declined**

The Report:Declined command returns the following transactions:

* CC:Sale
* CC:AuthOnly
* CC:Capture
* CC:PostAuth
* CC:Save
* CC:Credit
* CC:Refund

**Required Parameters**

| Parameter  | Description                                                        | Sample Value                                |
| ---------- | ------------------------------------------------------------------ | ------------------------------------------- |
| xBeginDate | Transaction begin date in YYYY-MM-DD or YYYY-MM-DD HH:MM:SS format | <p>2020-01-01</p><p>2019-08-15 09:00:00</p> |
| xEndDate   | Transaction end date in YYYY-MM-DD or YYYY-MM-DD HH:MM:SS format   | <p>2019-10-31</p><p>2020-06-30 12:00:00</p> |

#### Report:Auth

xCommand: **ReportAuth**

The Report:Auth command returns the following transaction:

* CC:AuthOnly

The ReportAuth command only returns approved authorizations.

**Required Parameters**

| Parameter  | Description                                                        | Sample Value                                |
| ---------- | ------------------------------------------------------------------ | ------------------------------------------- |
| xBeginDate | Transaction begin date in YYYY-MM-DD or YYYY-MM-DD HH:MM:SS format | <p>2020-01-01</p><p>2019-08-15 09:00:00</p> |
| xEndDate   | Transaction end date in YYYY-MM-DD or YYYY-MM-DD HH:MM:SS format   | <p>2019-10-31</p><p>2020-06-30 12:00:00</p> |

#### Report:All

xCommand: **Report:All**

The Report:All command returns the following transactions:

* CC:Sale
* CC:AuthOnly
* CC:Capture
* CC:PostAuth
* CC:Save
* CC:Credit
* CC:Refund

**Required Parameters**

| Parameter  | Description                                                        | Sample Value                                |
| ---------- | ------------------------------------------------------------------ | ------------------------------------------- |
| xBeginDate | Transaction begin date in YYYY-MM-DD or YYYY-MM-DD HH:MM:SS format | <p>2020-01-01</p><p>2019-08-15 09:00:00</p> |
| xEndDate   | Transaction end date in YYYY-MM-DD or YYYY-MM-DD HH:MM:SS format   | <p>2019-10-31</p><p>2020-06-30 12:00:00</p> |

{% hint style="info" %}
**Note**: You can run a report against all accounts by adding the search parameter xSecondaryKeys:\[comma-delimited xKeys] and use all the xKeys for all accounts for the following date-based reports
{% endhint %}

| Parameter      | Description                                                                                                          | Sample Value                                                                                                                           |
| -------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| xSecondaryKeys | <p>Run a report for secondary accounts.</p><p>For multiple account keys, you can include comma-separated values.</p> | Bread\_Butter\_xxxdxxxecbxxxxaxxxdbexxx, Other\_Account\_xxxxfxxxexxfxxxfxbxxx, Yet\_Another\_Account\_xxxbexaxxddxxbabbxexcxxxafxfexx |

Optional Field: xBatch:\[batch#]to get only the transactions of a specific batch.

#### Report:Deposit

xCommand: **Report:Deposit**

{% hint style="warning" %}
The **Report:Deposit** command will only return valid responses for accounts that have ongoing ACHQ activity. The Deposit ID given as a parameter must be an ACHQ deposit ID and the values shown in the response are only pertaining to ACHQ transaction activity.
{% endhint %}

The Report:Deposit command returns the following values:

* Deposit Id
* Deposit Date
* Total Amount
* Transactions
  * Refnum
  * Amount

**Required Parameters**

| **Parameter** | **Description**                                        | **Sample Value**                            |
| ------------- | ------------------------------------------------------ | ------------------------------------------- |
| xDepositId\*  |                                                        |                                             |
| xBeginDate\*  | Begin date in YYYY-MM-DD or YYYY-MM-DD HH:MM:SS format | <p>2020-01-01</p><p>2019-08-15 09:00:00</p> |
| xEnd Date\*   | End date in YYYY-MM-DD or YYYY-MM-DD HH:MM:SS format   | <p>2019-10-31</p><p>2020-06-30 12:00:00</p> |

\*Either xDepositId or xBeginDate and xEndDate are required.

### Transaction-Based Reports <a href="#transaction-based-reports" id="transaction-based-reports"></a>

Single transaction

* report:transaction

xCommand: **Report:Transaction**

**Required Parameters**

| Parameter | Description                                                                                                                                            | Sample Value                                       |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------- |
| xRefnum   | <p>Reference number</p><p>Multiple reference numbers are comma delimited.</p><p>This value is required only if you do not enter an Invoice number.</p> | <p>r10000001</p><p>r10000001,r2000001,r3000001</p> |

#### Multiple transactions

* report:transactions

xCommand: **Report:Transactions**

{% hint style="info" %}
Reports queried without `xBeginDate` and `xEndDate` will only return transactions from the past 2 years.
{% endhint %}

**Required Parameters**

| Parameter | Description                                                                                                                                            | Sample Value                                       |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------- |
| xRefnum   | <p>Reference number</p><p>Multiple reference numbers are comma delimited.</p><p>This value is required only if you do not enter an Invoice number.</p> | <p>r10000001</p><p>r10000001,r2000001,r3000001</p> |
| xInvoice  | <p>Invoice number</p><p>Multiple invoice numbers are comma delimited.</p><p>This value is required only if you do not enter a Reference number.</p>    | <p>1234</p><p>1234,5678,9012</p>                   |

#### Related Transactions <a href="#related-transactions" id="related-transactions"></a>

xCommand: **Report:Related**

**Required Parameters**

| Parameter | Description                                                                                                                                            | Sample Value                                       |
| --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------- |
| xRefnum   | <p>Reference number</p><p>Multiple reference numbers are comma delimited.</p><p>This value is required only if you do not enter an Invoice number.</p> | <p>r10000001</p><p>r10000001,r2000001,r3000001</p> |

#### Gift:Approved <a href="#gift-approved" id="gift-approved"></a>

xCommand: **Report:GiftApproved**

**Required Parameters**

| xKey             | Your Sola API key                         | Max Size: 250 Alphanumeric Characters       |
| ---------------- | ----------------------------------------- | ------------------------------------------- |
| xCommand         | Sola transaction type                     | Report:GiftApproved                         |
| xBeginDate       | Beginning date of range                   | <p>2020-01-01</p><p>2019-08-15 09:00:00</p> |
| xEndDate         | Ending date of range                      | <p>2020-01-01</p><p>2019-08-15 09:00:00</p> |
| xSoftwareName    | Name of your software                     | \[xsoftwarecredentials]                     |
| xSoftwareVersion | Version number of your software           | The current version is 4.5.8                |
| xFields          | Optional. If not used, returns all fields |                                             |

**Response Fields**

| xResult          | “A”           |
| ---------------- | ------------- |
| xStatus          | “Approved”    |
| xError           | ““            |
| xRefNum          | "10000016875" |
| xRecordsReturned | “20”          |
| xReportData      |               |

#### Gift:Summary <a href="#gift-summary" id="gift-summary"></a>

xCommand: **Report:GiftSummary**

**Required Parameters**

| xKey             | Your Sola API key                         | \[xkeycredentials]                          |
| ---------------- | ----------------------------------------- | ------------------------------------------- |
| xCommand         | Sola transaction type                     | Report:GiftSummary                          |
| xBeginDate       | Beginning date of range                   | <p>2020-01-01</p><p>2019-08-15 09:00:00</p> |
| xEndDate         | Ending date of range                      | <p>2020-01-01</p><p>2019-08-15 09:00:00</p> |
| xSoftwareName    | Name of your software                     | \[xsoftwarecredentials]                     |
| xSoftwareVersion | Version number of your software           | The current version is 4.5.8                |
| xFields          | Optional. If not used, returns all fields |                                             |

**Response Fields**

| xResult          | “A”           |
| ---------------- | ------------- |
| xStatus          | “Approved”    |
| xError           | ““            |
| xRefNum          | "10000016875" |
| xRecordsReturned | “20”          |
| xReportData      |               |

#### Liability <a href="#liability" id="liability"></a>

xCommand: **Report:Liability**

**Required Parameters**

| xKey             | Your Sola API key               | \[xkeycredentials]           |
| ---------------- | ------------------------------- | ---------------------------- |
| xCommand         | Sola transaction type           | Report:Liability             |
| xSoftwareName    | Name of your software           | \[xsoftwarecredentials]      |
| xSoftwareVersion | Version number of your software | The current version is 4.5.8 |

**Response Fields**

| Parameter        | Example       |
| ---------------- | ------------- |
| xResult          | “A”           |
| xStatus          | “Approved”    |
| xError           | ““            |
| xRefNum          | "10000016875" |
| xRecordsReturned | “20”          |
| xReportData      |               |

### Batch Report <a href="#batch-report" id="batch-report"></a>

Obtain batch summary by date

* report:batch

xCommand: **Report:Batch**

**Required Parameters**

| Parameter  | Description                                            | Sample Value                                |
| ---------- | ------------------------------------------------------ | ------------------------------------------- |
| xBeginDate | Begin date in YYYY-MM-DD or YYYY-MM-DD HH:MM:SS format | <p>2020-01-01</p><p>2019-08-15 09:00:00</p> |
| xEndDate   | End date in YYYY-MM-DD or YYYY-MM-DD HH:MM:SS format   | <p>2019-10-31</p><p>2020-06-30 12:00:00</p> |

## Send a Receipt for a Completed Transaction <a href="#send-a-receipt-for-a-completed-transaction" id="send-a-receipt-for-a-completed-transaction"></a>

You can use the **Reporting API** feature to send a receipt for a completed transaction.

### Reporting URL <a href="#reporting-url" id="reporting-url"></a>

Use the following Sola URL: <https://x1.cardknox.com/report>

### Required Variables: <a href="#required-variables" id="required-variables"></a>

| Parameter        | Description                          | Comments                              |
| ---------------- | ------------------------------------ | ------------------------------------- |
| xKey             | Credential                           | Max Size: 250 Alphanumeric Characters |
| xVersion         | Gateway API version                  | The current version is 4.5.8          |
| xSoftwareName    | The name of your software            |                                       |
| xSoftwareVersion | Version number of your software      |                                       |
| xCommand         | Transaction type                     | Report:Transaction                    |
| xRefnum          | Reference number                     |                                       |
| xEmail           | Email address of receipt destination |                                       |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.solapayments.com/api/reporting.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
