# Intacct (v1)

Information note **Intacct is supported by the Singer community**   
This integration is powered by [Singer's](https://www.singer.io/) Intacct tap. For support, [visit the GitHub repo](https://github.com/singer-io/tap-intacct) or [join the Singer Slack](https://singer-slackin.herokuapp.com/).

## Intacct integration summary

Stitch’s Intacct integration relies on Intacct’s [Data Delivery Service (DDS)](https://developer.intacct.com/data-delivery-service/) for Amazon S3. Intacct DDS exports reports in CSV format to Amazon S3, which Stitch will then replicate using [Key-based Incremental Replication](https://help.qlik.com/en-US/stitch/integrations/saas/intacct#replication).

While DDS supports other export targets, Stitch only supports replicating Intacct data through Amazon S3 at this time.

For more info about DDS, [refer to Intacct’s documentation](https://www.intacct.com/ia/docs/help/More/Data_Delivery_Service/dds-overview.htm).

**Note**: This integration does not use the Intacct API. Only data available via DDS will be available for replication through Stitch.

## Intacct feature snapshot

A high-level look at Stitch's Intacct (v1) integration, including release status, useful links, and the features supported in Stitch.

| **STITCH** |  |  |  |
| --- | --- | --- | --- |
| **[Release status](https://help.qlik.com/en-US/stitch/integrations/identify-an-integration-version)** | Released on July 12, 2019 | **Supported by**<br><br>the Info icon<br><br>Indicates if the integration is supported by Stitch or the Singer community. | [Singer Community](https://www.singer.io/) |
| **Stitch plan**<br><br>the Info icon<br><br>The type of Stitch plan required to use the integration. | Standard | **[API availability](https://help.qlik.com/en-US/stitch/developers/stitch-connect/guides/source-destination-reference)**<br><br>the Info icon<br><br>Indicates if the integration is available as a source in Stitch Connect. | the Success icon<br><br>This version of the integration is available via the API.<br><br><br>Available |
| **Singer GitHub repository** | [singer-io/tap-intacct](https://github.com/singer-io/tap-intacct) |  |  |
| **REPLICATION SETTINGS** |  |  |  |
| **[Anchor Scheduling](https://help.qlik.com/en-US/stitch/replication/replication-scheduling/anchor-scheduling)**<br><br>the Info icon<br><br>A type of replication scheduling where an integration's Replication Frequency is anchored to a time you select. | the Success icon<br><br>This feature is supported for this version of the integration.<br><br><br>Supported | **[Advanced Scheduling](https://help.qlik.com/en-US/stitch/replication/replication-scheduling/advanced-scheduling)**<br><br>the Info icon<br><br>A type of replication scheduling that allows you to specify granular start times for data extraction using cron expressions. | the Success icon<br><br>This feature is supported for this version of the integration.<br><br><br>Supported |
| **Table-level reset**<br><br>the Info icon<br><br>Indicates if data can be reset at the table level. If unsupported, data can only be reset at the integration level. | the Remove icon<br><br>Table-level resets are not supported for this integration. Resets are only supported at the integration level.<br><br><br>Unsupported | **[Configurable Replication Methods](https://help.qlik.com/en-US/stitch/replication/replication-methods)**<br><br>the Info icon<br><br>Indicates if Replication Methods can be defined by you for tables in the integration. | the Remove icon<br><br>Configurable Replication Methods are not supported for this integration. Stitch will use pre-defined replication methods for tables you set to replicate.<br><br><br>Unsupported |
| **DATA SELECTION** |  |  |  |
| **Table selection**<br><br>the Info icon<br><br>The ability to select individual tables for replication in the Stitch interface. If table selection is unavailable, all tables and all the columns they contain will be set to replicate by default. | the Success icon<br><br>This feature is supported for this version of the integration.<br><br><br>Supported | **Column selection**<br><br>the Info icon<br><br>The ability to select individual columns for replication in the Stitch interface. If column selection is unavailable, all columns will be set to replicate by default. | the Success icon<br><br>This feature is supported for this version of the integration.<br><br><br>Supported |
| **Select all**<br><br>the Info icon<br><br>Indicates if the integration supports selecting all available tables and columns. | the Success icon<br><br>Supported<br><br><br>Supported |  |  |
| **TRANSPARENCY** |  |  |  |
| **[Extraction Logs](https://help.qlik.com/en-US/stitch/replication/extractions/integration-extraction-logs)**<br><br>the Info icon<br><br>Logs detailing the Extraction phase of the replication process for a given integration. Includes error info, should an error occur. | the Success icon<br><br>This feature is supported for this version of the integration.<br><br><br>Supported | **[Loading Reports](https://help.qlik.com/en-US/stitch/replication/integration-loading-reports)**<br><br>the Info icon<br><br>Reports detailing the Loading phase of the replication process for a given integration. Includes the number of rows loaded for each table and error info, should an error occur. | the Success icon<br><br>This feature is supported for this version of the integration.<br><br><br>Supported |

## Connecting Intacct

### Intacct setup requirements

To set up Intacct in Stitch, you need:

* **An active subscription to Intacct’s [Data Delivery Service (DDS)](https://developer.intacct.com/data-delivery-service/)**. Stitch’s Intacct integration currently only replicates data from Amazon S3 buckets used by this Intacct feature.

* **An existing Amazon S3 bucket where Intacct publishes data via DDS.** Stitch will not create a bucket for you.

* **Permissions in AWS Identity Access Management (IAM) that allow you to create policies, create roles, and attach policies to roles**. This is required to grant Stitch authorization to your S3 bucket.

### Step 1: Set up an Intacct Cloud Storage Target and automatic data delivery

In this step, you’ll set up a Cloud Storage Target and automatic data delivery in Intacct.

* [Step 1.1: Configure Amazon S3 access for Intacct](https://help.qlik.com/en-US/stitch/integrations/saas/intacct#configure-amazon-s3-bucket-access)

* [Step 1.2: Define a Cloud Storage Target in Intacct](https://help.qlik.com/en-US/stitch/integrations/saas/intacct#define-target-in-intacct)

* [Step 1.3: Set up an automated data delivery in Intacct](https://help.qlik.com/en-US/stitch/integrations/saas/intacct#set-up-automated-data-delivery)

#### Step 1.1: Configure Amazon S3 access for Intacct

Information note **Note**: Skip this step if Inacct can already access your Amazon S3 bucket.

1. Sign into your Amazon Web Services account.
2. Navigate to the Amazon S3 bucket you want to use as the Cloud Storage Target for Intacct.
3. Follow the instructions in [Step 1 of Intacct’s documentation](https://www.intacct.com/ia/docs/help/Reporting/Distribute_and_run_reports/Store_reports/cloud-storage-for-reports.htm?cshid=Reporting/Distribute_and_run_reports/Store_reports/cloud-storage-for-reports.htm#1.2) to enable Intacct to access the bucket.

#### Step 1.2: Define a Cloud Storage Target in Intacct

Information note **Note**: Skip this step if a Cloud Storage Target for Amazon S3 is already set up in Inacct.

1. Sign into your Intacct account.
2. Follow the instructions in [Step 2 of Intacct’s documentation](https://www.intacct.com/ia/docs/help/Reporting/Distribute_and_run_reports/Store_reports/cloud-storage-for-reports.htm?cshid=Reporting/Distribute_and_run_reports/Store_reports/cloud-storage-for-reports.htm#1.) to create the target in Intacct.

#### Step 1.3: Set up an automated data delivery in Intacct

In this step, you’ll create an [automatic delivery schedule](https://www.intacct.com/ia/docs/help/More/Data_Delivery_Service/create-an-automated-delivery.htm#Config) in your Intacct account.

1. In your Intacct account, navigate to **Company &gt; Data Delivery Service &gt; Automatic**.
2. Click the **Add** button.
3. In the **File attributes** section, define the settings as follows:
   * **Delimiter**: Commas
   * **Text qualifier (delimiter)**: Double quote (`"`)
   * **Encryption**: Do not encrypt
4. In the **Delivery options** section, define the settings as follows:
   * **Cloud storage destination**: Select the Amazon S3 Cloud Storage Target you created in [Step 1.2](https://help.qlik.com/en-US/stitch/integrations/saas/intacct#define-target-in-intacct).
   * **Frequency**: Select the frequency you want to use to trigger a data export in Intacct.
5. In the **Objects** section, select the objects you want to include in the export. These objects will then be available for selection in Stitch.
6. Save the schedule.

### Step 2: Retrieve your Amazon Web Services account ID

1. Sign into your Amazon Web Services (AWS) account.

2. Click the **user menu**, located between the **bell** and **Global** menus in the top-right corner of the page.

3. Click **My Account**.

4. In the **Account Settings** section of the page, locate the **Account Id** field:

   ![An AWS account ID, highlighted in the AWS Account Settings page](https://help.qlik.com/en-US/stitch/images/integrations/s3-csv-account-id.png)An AWS account ID, highlighted in the AWS Account Settings pageAn AWS account ID, highlighted in the AWS Account Settings page

Keep this handy - you’ll need it to complete the setup.

### Step 3: Add Intacct as a Stitch data source

1. [Sign into your Stitch account](https://app.stitchdata.com/).

2. On the Stitch Dashboard page, click the **Add Integration** button.

3. Click the **Intacct** icon.

4. Enter a name for the integration. This is the name that will display on the Stitch Dashboard for the integration; it’ll also be used to create the schema in your destination.

   For example, the name “Stitch Intacct” would create a schema called `stitch_intacct` in the destination. **Note**: Schema names cannot be changed after you save the integration.

5. In the **Company ID** field, enter the company ID you use to sign into Intacct.

6. In the **S3 Bucket** field, enter the name of the bucket where the Intacct Data Delivery Service (DDS) outputs data. Enter only the bucket name: No URLs, `https`, or S3 parts. For example: `intacct-stitch-bucket`

7. In the **AWS Account ID** field, paste the AWS Account ID you retrieved in [Step 2](https://help.qlik.com/en-US/stitch/integrations/saas/intacct#retrieve-aws-account-id).

8. **Optional**: In the **Path** field, enter the path configured in Intacct for use in the S3 bucket.

### Step 4: Define the historical replication start date

The Sync Historical Data setting defines the starting date for your Intacct integration. This means that data **equal to or newer than this date** will be replicated to your data warehouse.

Change this setting if you want to replicate data beyond Intacct’s default setting of **1 year**. For a detailed look at historical replication jobs, check out the [Syncing Historical SaaS Data](https://help.qlik.com/en-US/stitch/replication/syncing-historical-saas-data-resetting-replication-keys) guide.

### Step 5: Create a replication schedule

Information note Replication schedules affect the time Extraction begins, not the time to data loaded. Refer to the [Replication Scheduling](https://help.qlik.com/en-US/stitch/replication/replication-scheduling) documentation for more information.

In the **Replication Frequency** section, you’ll create the integration’s [replication schedule](https://help.qlik.com/en-US/stitch/replication/replication-scheduling). An integration’s replication schedule determines how often Stitch runs a replication job, and the time that job begins.

Intacct integrations support the following replication scheduling methods:

* [Replication Frequency](https://help.qlik.com/en-US/stitch/replication/replication-scheduling/replication-frequency)

* [Anchor Scheduling](https://help.qlik.com/en-US/stitch/replication/replication-scheduling/anchor-scheduling)

* [Advanced Scheduling using Cron](https://help.qlik.com/en-US/stitch/replication/replication-scheduling/advanced-scheduling) (Advanced or Premium plans only)

To keep your row usage low, consider setting the integration to replicate less frequently. See the [Understanding and Reducing Your Row Usage guide](https://help.qlik.com/en-US/stitch/getting-started/understanding-stitch-usage) for tips on reducing your usage.

### Step 6: Grant access to your bucket using AWS IAM

Information note **Note**: To complete this step, you must have permissions in AWS Identity Access Management (IAM) that allow you to create/modify IAM policies and roles.

Next, Stitch will display a **Configure Your Intacct Integration** page. This page contains the info you need to configure bucket access for Stitch, which is accomplished via an IAM policy and role.

**Note**: Saving the integration before you’ve completed the steps below will result in connection errors.

* [Step 5.1: Create an IAM policy](https://help.qlik.com/en-US/stitch/integrations/saas/intacct#create-iam-policy)

* [Step 5.2: Create an IAM role for Stitch](https://help.qlik.com/en-US/stitch/integrations/saas/intacct#create-stitch-iam-role)

* [Step 5.3: Check and save the connection in Stitch](https://help.qlik.com/en-US/stitch/integrations/saas/intacct#check-save-stitch-connection)

#### Step 6.1: Create an IAM policy

[An IAM policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json) is JSON-based access policy language to manage permissions to Intacct resources.

For more info about the permissions the auto-generated policy Stitch IAM policy grants, click the link below.

Intacct permissions

| **Permission name** | **Operation** | **Description** |
| --- | --- | --- |
| **s3:GetObject** | **[GET Object](http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html)** | Allows for the retrieval of objects from Amazon S3. |
| **[HEAD Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectHEAD.html)** | Allows for the retrieval of metadata from an object without returning the object itself. |  |
| **s3:ListBucket** | **[GET Bucket (List Objects)](http://docs.aws.amazon.com/AmazonS3/latest/API/v2-RESTBucketGET.html)** | Allows for the return of some or all (up to 1,000) of the objects in a bucket. |
| **[HEAD Bucket](http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketHEAD.html)** | Used to determine if a bucket exists and access is allowed. |  |

To create the IAM policy:

1. In AWS, [navigate to the IAM service](https://console.aws.amazon.com/iam/home#/home) by clicking the **Services** menu and typing **IAM**.
2. Click **IAM** once it displays in the results.
3. On the IAM home page, click **Policies** in the menu on the left side of the page.
4. Click **Create Policy**.
5. In the **Create Policy** page, click the **JSON** tab.
6. Select everything currently in the text field and delete it.
7. In the text field, paste the IAM policy from the **Configure Your Intacct Integration** page in Stitch.
8. Click **Review policy**.
9. On the **Review Policy** page, give the policy a name. For example: `stitch_intacct`
10. Click **Create policy**.

#### Step 6.2: Create an IAM role for Stitch

Information note

**Required permissions**

To complete this step, you need the following AWS IAM permissions: `CreateRole` and `AttachRolePolicy`. Refer to [Amazon’s documentation](https://docs.aws.amazon.com/IAM/latest/APIReference/API_Operations.html) for more info.

the Info icon

**Roles can’t be used for multiple integrations**

If you’re creating multiple Intacct integrations, you’ll need to complete this step for each integration you’re connecting.

The **Role Name** Stitch uses to connect to the Amazon resource is unique to the integration. Attempting to re-use a role for multiple integrations will cause connection errors.

In this step, you’ll create an IAM role for Stitch and apply the IAM policy from the previous step. This will ensure that Stitch is visible in any logs and audits.

To create the role, you’ll need the **Account ID**, **External ID**, and **Role Name** values provided on the Stitch **Configure Your Intacct Integration** page.

1. In AWS, navigate to the [IAM Roles](https://console.aws.amazon.com/iam/home#/roles) page.
2. Click **Create Role**.
3. On the **Create Role** page:
   1. In the **Select type of trusted entity** section, click the **Another AWS account** option.
   2. In the **Account ID** field, paste the Account ID from Stitch. **Note**: This isn’t your AWS account ID from Step 1 - this is the Account ID that displays in Stitch on the **Configure Your Intacct Integration** page.
   3. In the **Options** section, check the **Require external ID** box.
   4. In the **External ID** field that displays, paste the External ID from the Stitch **Configure Your Intacct Integration** page: ![Account ID and External ID fields mapped from Stitch to AWS](https://help.qlik.com/en-US/stitch/images/integrations/aws-account-external-ids.png)Account ID and External ID fields mapped from Stitch to AWSAccount ID and External ID fields mapped from Stitch to AWS
   5. Click **Next: Permissions**.
4. On the **Attach permissions** page:
   1. Search for the policy you created in the [previous step](https://help.qlik.com/en-US/stitch/integrations/saas/intacct#create-iam-policy).
   2. Once located, check the box next to it in the table.
   3. Click **Next: Tags**.
5. If you want to enter any tags, do so on the **Add tags** page. Otherwise, click **Next: Review**.
6. On the **Review** page:
   1. In the **Role name** field, paste the Role Name from the Stitch **Configure Your Intacct Integration** page: ![Role name field mapped from Stitch to AWS](https://help.qlik.com/en-US/stitch/images/integrations/aws-role-name.png)Role name field mapped from Stitch to AWSRole name field mapped from Stitch to AWS

      **Remember**: Role names are unique to the Stitch Intacct integration they’re created for. Attempting to use the same role for multiple integrations will cause connection errors.

   2. Enter a description in the **Role description** field. For example: `Stitch role for Intacct integration.`

   3. Click **Create role**.

#### Step 6.3: Check and save the connection in Stitch

Information note **Note**: Saving the integration before you’ve completed the IAM policy and role steps will result in connection errors.

After you’ve created the IAM policy and role, you can save the integration in Stitch. When finished, click **Check and Save**.

### Step 7: Set objects to replicate

Information note **Is an object missing or not replicating?** Verify that the object meets the requirements for [selection](https://help.qlik.com/en-US/stitch/replication/extractions/data-selection/setting-tables-and-columns-to-replicate#selection-requirements) and [replication](https://help.qlik.com/en-US/stitch/replication/extractions/data-selection/setting-tables-and-columns-to-replicate#replication-requirements).

The last step is to select the tables and columns you want to replicate. [Learn about the available tables for this integration.](https://help.qlik.com/en-US/stitch/integrations/saas/intacct#schema)

**Note**: If a replication job is currently in progress, new selections won’t be used until the next job starts.

* Selection options
* Individual tables and columns
* All tables and columns

For Intacct integrations, you can select:

1. **Individual tables and columns**

2. **All tables and columns**

Click the tabs to view instructions for each selection method.

1. In the integration’s **Tables to Replicate tab**, locate a table you want to replicate.

2. To track a table, click the **checkbox** next to the table’s name. A blue checkmark means the table is set to replicate.

3. To track a column, click the **checkbox** next to the column’s name. A blue checkmark means the column is set to replicate.

4. Repeat this process for all the tables and columns you want to replicate.

5. When finished, click the **Finalize Your Selections** button at the bottom of the screen to save your selections.

Information note **Important**: Using the **Select All** feature will overwrite any previous selections. However, selections aren’t final until **Finalize Your Selections** is clicked. Clicking **Cancel** will restore your previous selections. Refer to the [Select All guide](https://help.qlik.com/en-US/stitch/replication/extractions/data-selection/setting-tables-and-columns-to-replicate#set-all-data-to-replicate) for more info about this feature.

1. Click into the integration from the Stitch Dashboard page.

2. Click the **Tables to Replicate** tab.

3. In the list of tables, click the box next to the **Table Names** column.

4. In the menu that displays, click **Track all Tables and Fields**:

   ![The Track all Tables and Fields menu in the Tables to Replicate tab](https://help.qlik.com/en-US/stitch/images/replication/select-all-tables-menu.png)The Track all Tables and Fields menu in the Tables to Replicate tabThe Track all Tables and Fields menu in the Tables to Replicate tab

5. Click the **Finalize Your Selections** button at the bottom of the page to save your data selections.

### Initial and historical replication jobs

After you finish setting up Intacct, its **Sync Status** may show as **Pending** on either the Stitch Dashboard or in the Integration Details page.

For a new integration, a **Pending** status indicates that Stitch is in the process of scheduling the initial replication job for the integration. **This may take some time to complete.**

Information note

**Initial replication jobs with Anchor Scheduling**

If using Anchor Scheduling, an initial replication job may not kick off immediately. This depends on the selected Replication Frequency and Anchor Time. Refer to the [Anchor Scheduling](https://help.qlik.com/en-US/stitch/replication/replication-scheduling#job-scheduling-and-anchor-times) documentation for more information.

#### Free historical data loads

The first seven days of replication, beginning when data is first replicated, are free. Rows replicated from the new integration during this time won’t count towards your quota. Stitch offers this as a way of testing new integrations, measuring usage, and ensuring historical data volumes don’t quickly consume your quota.

Information note **Replication will continue after the seven days are over**. If you’re no longer interested in this source, be sure to **pause** or **delete** the integration to prevent unwanted usage.

## Intacct replication

Stitch uses Key-based Incremental Replication to replicate data from Intacct integrations. To identify new and updated data for replication, Stitch will use file modification timestamps as [Replication Keys](https://help.qlik.com/en-US/stitch/replication/replication-keys) and store them on a per-table basis. This means that only files dumped from a new Intacct data sync will be selected for replication.

While data from Intacct integrations is replicated using [Key-based Incremental Replication](https://help.qlik.com/en-US/stitch/replication/replication-methods/key-based-incremental), the behavior for this integration differs subtly from other integrations.

The table below compares Key-based Incremental Replication and [Replication Key](https://help.qlik.com/en-US/stitch/replication/replication-keys) behavior for Intacct to that of other integrations.

|  | **Intacct** | **Other integrations** |
| --- | --- | --- |
| **What's replicated during a replication job?** | The entire contents of a modified file. | Only new or updated rows in a table. |
| **What's used as a Replication Key?** | The time a file is modified. | A column or columns in a table. |
| **Are Replication Keys inclusive?** | **No**. Only files with a modification timestamp value greater than the last saved bookmark are replicated. | **Yes**. Rows with a Replication Key value **greater than or equal to** the last saved bookmark are replicated. |