> For the complete documentation index, see [llms.txt](https://docs.rillet.com/EjmEP4KZ9BVp9j2ho4Mh/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rillet.com/EjmEP4KZ9BVp9j2ho4Mh/integrations/crm/salesforce-integration/salesforce-bi-directional-sync-invoices-contracts-and-customers.md).

# Salesforce Bi-Directional Sync: Invoices, Contracts, and Customers

The **Salesforce Bi-Directional Sync** extends the **Salesforce** integration beyond Opportunities and Orders, syncing invoice, contract, and customer data from **Rillet** into **Salesforce** for greater visibility and operational efficiency across teams.

### Enable the Salesforce Bi-Directional Sync

Follow these steps to enable the bi-directional sync:

1. Click your company logo in the lower-left corner of the screen.
2. Go to **Organization Settings > Integrations**.

   <figure><img src="https://612265232-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNpXFVFZpTQck3vIrjmHB%2Fuploads%2FuV0c1UdAFceKhV0G7Smo%2Fimage.png?alt=media&amp;token=18984b5f-0631-4d61-ab1a-9764ec388d16" alt=""><figcaption></figcaption></figure>
3. Select **Salesforce > Connected** under **CRM**.

   <figure><img src="https://612265232-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNpXFVFZpTQck3vIrjmHB%2Fuploads%2FaQWOE8Py1QLikhr36SYY%2Fimage.png?alt=media&amp;token=11816d68-3c40-4842-9695-0bc19327c8e4" alt=""><figcaption></figcaption></figure>
4. Click **Edit** in the **Synchronization Settings** section.
5. Turn on the toggle **Sync Invoices**, **Contracts**, and **Customers to Salesforce**.
6. Click **Save** to apply the synchronization settings.

   <figure><img src="https://612265232-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNpXFVFZpTQck3vIrjmHB%2Fuploads%2FTwV71kri3lmrPAriuyD1%2Fimage.png?alt=media&amp;token=43c8bbf0-0a70-45b1-b66a-3cf7b891047f" alt=""><figcaption></figcaption></figure>

From there, install the **Rillet and Salesforce Managed Package** by following the steps in [**Salesforce Managed Package Integration Overview**](/EjmEP4KZ9BVp9j2ho4Mh/integrations/crm/salesforce-integration/salesforce-managed-package-integration-overview.md), after which Rillet begins syncing invoice, contract, and customer data into Salesforce as described in the following sections.

### Invoice Sync

Rillet syncs invoice data into Salesforce as a custom object called **Rillet Invoice**, with the following fields included:

<table><thead><tr><th>Field Name</th><th>Type</th><th width="106.60546875">Required?</th><th width="182.99609375">API name</th><th>SF type</th></tr></thead><tbody><tr><td>Salesforce Account</td><td>Reference</td><td>Required</td><td>Salesforce_Account__c</td><td>Lookup</td></tr><tr><td>Invoice Number</td><td>String</td><td>Required</td><td>Invoice_Number__c</td><td>Text</td></tr><tr><td>Invoice Date</td><td>Date</td><td>Required</td><td>Invoice_Date__c</td><td>Date</td></tr><tr><td>Invoice Due Date</td><td>Date</td><td>Required</td><td>Invoice_Due_Date__c</td><td>Date</td></tr><tr><td>Status</td><td>Enumerated value, see below</td><td>Required</td><td>Status__c</td><td>Picklist</td></tr><tr><td>Total Amount</td><td>Amount</td><td>Required</td><td>Total_Amount__c</td><td>Currency</td></tr><tr><td>Amount Due</td><td>Amount</td><td>Required</td><td>Amount_Due__c</td><td>Currency</td></tr><tr><td>Currency</td><td>Currency</td><td>Required</td><td>CurrencyIsoCode</td><td>Picklist</td></tr><tr><td>Rillet Customer</td><td>Reference</td><td>Required</td><td>Rillet_Customer__c</td><td>Lookup</td></tr><tr><td>Rillet Contract</td><td>Reference</td><td>Required</td><td>Rillet_Contract__c</td><td>Lookup</td></tr><tr><td>Rillet URL</td><td>URL</td><td>Required</td><td>Rillet_Invoice_URL__c</td><td>URL</td></tr><tr><td>Rillet ID</td><td>String</td><td>Required</td><td>Rillet_Invoice_ID__c</td><td>Text</td></tr><tr><td>Rillet Invoice Name</td><td>Auto Number</td><td>Auto Number</td><td>Name</td><td>Auto Number</td></tr></tbody></table>

### Contract Sync

Rillet syncs contract data into Salesforce as a custom object called **Rillet Contract**, with the following fields included:

<table><thead><tr><th>Field Name</th><th width="122.30859375">Type</th><th width="112.0546875">Required?</th><th>API name</th><th>SF type</th></tr></thead><tbody><tr><td>Salesforce Opportunity</td><td>Reference</td><td>Optional</td><td>Salesforce_Opportunity__c</td><td>Lookup</td></tr><tr><td>Salesforce Account</td><td>Reference</td><td>Required</td><td>Salesforce_Account__c</td><td>Lookup</td></tr><tr><td>Start Date</td><td>Date</td><td>Required</td><td>Start_Date__c</td><td>Date</td></tr><tr><td>End Date</td><td>Date</td><td>Optional</td><td>End_Date__c</td><td>Date</td></tr><tr><td>Rillet Customer</td><td>Reference</td><td>Required</td><td>Rillet_Customer__c</td><td>Lookup</td></tr><tr><td>Rillet URL</td><td>URL</td><td>Required</td><td>Rillet_Contract_URL__c</td><td>URL</td></tr><tr><td>Rillet ID</td><td>String</td><td>Required</td><td>Rillet_Contract_ID__c</td><td>Text</td></tr><tr><td>Committed ARR</td><td>Amount</td><td>Optional</td><td>Committed__ARR__c</td><td>Currency</td></tr><tr><td>Committed MRR</td><td>Amount</td><td>Optional</td><td>Committed_MRR__c</td><td>Currency</td></tr><tr><td>Currency</td><td>Currency</td><td>Optional</td><td>CurrencyIsoCode</td><td>Picklist</td></tr><tr><td>Rillet Contract Name</td><td>Auto Number</td><td>Auto Field</td><td>Name</td><td>Auto Number</td></tr></tbody></table>

### Customer Sync&#x20;

Rillet syncs customer data into Salesforce as a custom object called **Rillet Customer**, with the following fields included:

<table><thead><tr><th>Field Name</th><th width="141.6953125">Type</th><th width="108.27734375">Required?</th><th>API name</th><th>SF type</th></tr></thead><tbody><tr><td>Salesforce Account</td><td>Reference</td><td>Required</td><td>Salesforce_Account__c</td><td>Lookup</td></tr><tr><td>Rillet URL</td><td>URL</td><td>Required</td><td>Rillet_Customer_URL__c</td><td>URL</td></tr><tr><td>Rillet ID</td><td>String</td><td>Required</td><td>Rillet_Customer_ID__c</td><td>Text</td></tr><tr><td>Current ARR</td><td>Amount</td><td>Optional</td><td>Current_ARR__c</td><td>Currency</td></tr><tr><td>Current MRR</td><td>Amount</td><td>Optional</td><td>Current_MRR__c</td><td>Currency</td></tr><tr><td>Current Committed ARR</td><td>Amount</td><td>Optional</td><td>Current_Committed_ARR__c</td><td>Currency</td></tr><tr><td>Current Committed MRR</td><td>Amount</td><td>Optional</td><td>Current_Committed_MRR__c</td><td>Currency</td></tr><tr><td>Currency</td><td>Currency</td><td>Optional</td><td>CurrencyIsoCode</td><td>Picklist</td></tr><tr><td>Rillet Customer Name</td><td>Auto Number</td><td>Auto Field</td><td>Name</td><td>Auto Number</td></tr></tbody></table>

### **See Also**

To learn more about the Salesforce integration in **Rillet**, review these articles:

* [**Salesforce Integration**](/EjmEP4KZ9BVp9j2ho4Mh/integrations/crm/salesforce-integration.md)
* [**Salesforce Managed Package Integration Overview**](/EjmEP4KZ9BVp9j2ho4Mh/integrations/crm/salesforce-integration/salesforce-managed-package-integration-overview.md)
* [**Enable API Access in Salesforce**](/EjmEP4KZ9BVp9j2ho4Mh/onboarding-guides/onboarding-guide/enable-api-access-in-salesforce.md)
* [**Notify Customers of a System Change**](/EjmEP4KZ9BVp9j2ho4Mh/onboarding-guides/onboarding-guide/notify-customers-of-a-system-change.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

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

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.rillet.com/EjmEP4KZ9BVp9j2ho4Mh/integrations/crm/salesforce-integration/salesforce-bi-directional-sync-invoices-contracts-and-customers.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
