> ## Documentation Index
> Fetch the complete documentation index at: https://docs.slickerhq.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Zuora

> Learn how to connect Zuora to Slicker

### Prerequisites

Slicker integrates with Zuora via Zuora's Quickstart API. To use the Quickstart API, your Zuora tenant must have the following features enabled:

* [Orders](https://knowledgecenter.zuora.com/Billing/Subscriptions/Orders) or [Orders Harmonization](https://knowledgecenter.zuora.com/Billing/Subscriptions/Orders/Orders_Harmonization)
* [Invoice Settlement](https://knowledgecenter.zuora.com/Billing/Billing_and_Payments/Invoice_Settlement)

Only Zuora users with the appropriate permissions can create API credentials - the tenant administrator can grant these permissions and can create API credentials.

### Create credentials

Zuora API authentication requires an OAuth client ID and secret.
You should follow the [official Zuora documentation](https://developer.zuora.com/docs/get-started/introduction/#oauth-client-setup) to create these credentials. Some points to note:

* The Zuora user associated with the OAuth credentials should have a [Platform role](https://docs.zuora.com/en/zuora-platform/security-and-identity/administrator-settings/user-roles/platform-roles) with **API Write Access**.
* Assign the user the **Zuora Billing Standard User** and **Zuora Payments Standard User** roles. Together, these standard roles provide the permissions Slicker needs to read billing and payment data and recover failed payments, including:
  * **Process Electronic Payment** ([Payments roles](https://docs.zuora.com/en/zuora-platform/security-and-identity/administrator-settings/user-roles/payments-roles)) — needed to retry payment collection on invoices.
  * **Change Payment Methods** ([Billing roles](https://docs.zuora.com/en/zuora-platform/security-and-identity/administrator-settings/user-roles/billing-roles)) — needed to temporarily disable Zuora's built-in retry rules on a payment method so that Slicker controls the retry timing during an experiment, and then re-enable them afterwards.
  * **Modify Invoice** ([Billing roles](https://docs.zuora.com/en/zuora-platform/security-and-identity/administrator-settings/user-roles/billing-roles)) — needed to set custom fields on invoices for experiment tracking.
* No additional Reporting role is required. Slicker reads accounts, subscriptions, invoices, payments, payment methods, and related records through Zuora's REST and AQuA APIs. If you prefer least-privilege access, contact Slicker before creating custom Billing and Payments roles. We will provide the current list of required Zuora objects and permissions for your integration, including any features you plan to enable. This list may expand as Slicker adds capabilities to the integration. Zuora [rejects or skips AQuA queries](https://docs.zuora.com/en/zuora-platform/data/aggregate-query-api-aqua/aqua-api-error-codes) when the API user cannot access a required object.
* Make sure that the `UI Access` box is unchecked. Zuora recommends API credentials are never used for UI access.
* Copy the `Client ID` and `Client Secret` - we will need them later.

### Create integration in Slicker

1. Go to the Slicker's [new integration page](https://app.slickerhq.com/integrations/new).
2. Select `Zuora` from the list of integrations.
3. Give the integration a name and description to help you identify it later.
4. Enter the Client ID and Secret you copied earlier.
5. Select the base URL of your tenant from the dropdown. This is based on the data center where your Zuora tenant is hosted as detailed in [Zuora's documentation](https://knowledgecenter.zuora.com/Zuora_Environments/Zuora_Data_Centers).
6. Click the `Submit` button to create the integration.

### Troubleshooting

On integration creation, Slicker will attempt to connect to Zuora using the provided API key.
If the connection fails, you will see an error message like the one below.
Please double-check the API key, make sure it has the correct permissions, and try again.

<Frame>
  <img src="https://mintcdn.com/slicker/HZZPLdXP1aKdz94r/images/integrations/integration-failure.png?fit=max&auto=format&n=HZZPLdXP1aKdz94r&q=85&s=59f6f532473345be5919699e5de59427" alt="Failed integration creation message" width="946" height="177" data-path="images/integrations/integration-failure.png" />
</Frame>
