Actionable Findings LLC · 1441 Broadway, Suite 5 · New York, NY 10018
Acumatica Integration Confidential and Proprietary

RUNMYBOT® Integration for HubSpot and Acumatica

This document serves as a blueprint for implementing a robust sync layer between HubSpot CRM and Acumatica ERP systems.

1 Usage of this Document

This document serves as a reference for implementing a data synchronisation layer between HubSpot CRM and Acumatica ERP systems using the RUNMYBOT platform. It defines how each module is synchronised, how authentication is managed, and how data conflicts and errors are handled, while keeping the middleware layer completely transparent to end users.

2 Purpose

The purpose of this document is to present a detailed solution design for implementing a middleware orchestration layer using our internal low-code platform, RUNMYBOT, to integrate HubSpot CRM, the primary commercial system, with Acumatica, the ERP and financial system of record. The proposed solution enables seamless, API-driven synchronization of key business data, including customer master data, contact records, sales orders, product catalogs, invoices, and payments between the two systems. The integration is designed to minimize manual intervention, ensure reliable and consistent data exchange, and provide complete visibility and auditability through centralized logging and monitoring.

3 Objective

The HubSpot–Acumatica integration enables secure, API-based orchestration of customers, contacts, sales orders, products, invoices, and payments across both platforms. The objectives of this integration are to:

  • Ensure customer and contact master data remains consistent across HubSpot and Acumatica at all times.
  • Enable bi-directional synchronisation of Sales Orders so that records present in either system are reflected in the other. Only Deal with a stage of "closedwon" are eligible for synchronisation.
  • Push Product master data, Sales Invoices, and Payment records from Acumatica into HubSpot to give sales teams full commercial visibility without requiring ERP access.
  • Maintain transaction consistency across systems using cross-reference key fields and upsert logic.
  • Deliver a seamless experience using scheduled polling and delta-based synchronisation.
  • Provide full monitoring, logging, retry handling, and audit tracking within RUNMYBOT.

4 Prerequisites

Component Requirement
HubSpot Edition Professional, Enterprise, Unlimited, or Developer Edition
HubSpot API Access API access must be enabled on the connected user profile
HubSpot User Dedicated integration user with System Administrator or custom profile
HubSpot Connection Either install the RUNMYBOT HubSpot App (recommended) or configure a customer-owned HubSpot OAuth application by providing the Client ID and Client Secret in the RUNMYBOT Connection module.
Acumatica Version Acumatica ERP – compatible with the target Acumatica version, e.g., 24.200.001
Acumatica API Access Acumatica REST API access must be enabled and available for the integration user. The integration uses Acumatica REST endpoints for data synchronization.
Acumatica API Acumatica REST Contract-Based API (Version 24.200.001). Example endpoint: {{BaseUrl}}/entity/Default/24.200.001/Contact?$expand=Address
Network Outbound HTTPS (port 443) access to *.HubSpot.com and the Acumatica endpoint (for example, *.acumatica.com or the specific Acumatica instance URL).
HubSpot Custom field and Object Create necessary custom fields and custom objects for the synchronization of payment & sales invoice from Acumatica to HubSpot

5 Connection Setup & Configuration

Connection setups inside the RUNMYBOT Unified API require setting up credentials, base URLs, and authentication configurations.

5.1 Reference Field Creation

Create a custom field for each module in HubSpot to maintain a permanent cross-reference between the integrated systems.

Object Field Name Field Label Data Type
Contact acumatica_contact_id Acumatica Contact ID Text
Company acumatica_customer_id Acumatica Customer ID Text
Product acumatica_item_id Acumatica Product ID Text
Deal acumatica_order_id Acumatica Reference ID Text
Sales Invoice external_ref_id External Ref ID Text
Customer Payment external_ref_id External Ref ID Text

5.2 Custom Object Creation

Create Custom Objects for **Sales Invoice** and **Customer Payments** in HubSpot.

Sales Invoice Object Name: p246208318_sales_invoices

Field Label Field Name Field Type
Invoice Amount invoice_amount Number
External Ref ID external_ref_id Single-line text
Note note Multi-line text
Status status Dropdown
Due Date due_date Date
Outstanding Amount outstanding_amount Number
Invoice Number invoice_number Single-line text
Invoice Date invoice_date Date
Company company_id Association
Deal deal_id Association

Customer Payment Object Name: p246208318_customer_payments

Field Label Field Name Field Type
Amount Paid amount_paid Number
External Ref ID external_ref_id Single-line text
Note note Multi-line text
Status status Dropdown
Payment Number payment_number Single-line text
Total Amount total_amount Number
Transaction Date transaction_date Date
Company company_id Association
Invoice invoice_id Association

6 System Overview

6.1 RUNMYBOT® Platform

A real-time orchestration engine that aggregates data across multiple systems and manages complex cross-platform transactions. Unlike a simple connector model, it functions as a real-time transaction orchestration layer between HubSpot and Acumatica, making the integration layer completely invisible to end users.

6.2 HubSpot

Cloud-based CRM used as the primary commercial system and origin for customer relationship and sales pipeline management.

6.3 Acumatica

Acumatica is the ERP system used as the financial and operational system of record. It manages customer master data, material master data, sales order processing, billing documents, and customer accounting records.

7 Scope Requirements

Use Case Direction Description
Customer Sync HubSpot ↔ Acumatica Bi-directional sync of Customer (Acumatica) and Company (HS) master records.
Contact Sync HubSpot ↔ Acumatica Bi-directional sync of Contact records.
Deal Sync HubSpot ↔ Acumatica Synchronize HubSpot Deals (including header and line items) with stage closedwon to Acumatica Sale Order and vice versa.
Product Master Sync Acumatica → HubSpot Sync products to HubSpot.
Sales Invoice Sync Acumatica → HubSpot Push posted Sales Invoices from Acumatica to HubSpot for CRM visibility.
Customer Payment Sync Acumatica → HubSpot Push Customer Payments from Acumatica to HubSpot for CRM visibility.

8 Process in Detail

8.1 Authentication

HubSpot: OAuth 2.0 Client Credentials or Private App authentication is used. RUNMYBOT handles secure token storage and refresh.

Acumatica: OAuth 2.0 Authorization Code authentication is used securely to connect to Acumatica REST APIs.

8.2 Standard Workflows

8.2.1 HubSpot Company to Acumatica Customer

HubSpot Company to Acumatica Customer Diagram

Company records created or updated in HubSpot are synchronized with Acumatica to keep customer master data consistent across both systems.

HubSpot Company Export:
Connection: <Select HubSpot Connection>
Resource: Companies
Extract Type: All - Always extract all data
Include All Fields: True
Acumatica Company Import:
Resource: Customer
Connection: <Select Acumatica Connection>
Import Type: Upsert
BaseUrl: https://<your-domain>/<instance-name>/entity
Tenant: Default
Version: 24.200.001
Look Up Fields: CustomerID.value

Field Mapping Table

Source Data (HubSpot) Target Data (Acumatica) Description / Rules
properties.acumatica_customer_id CustomerID.value Acumatica Customer ID Reference
properties.name CustomerName.value Customer Name
properties.website MainContact.WebSite.value Main Contact Website URL
properties.phone MainContact.Phone1.value Phone Number
properties.address MainContact.Address.AddressLine1.value Address Line 1
properties.city MainContact.Address.City.value City Name
properties.state MainContact.Address.State.value State / Province
properties.country MainContact.Address.Country.value Lookup Mapping: France - FR, United States - US, Canada - CA, India - IN
properties.zip MainContact.Address.PostalCode.value Postal Code
id prev_data.HubspotID HubSpot Record ID
SendDunningLettersbyEmail.value Static: false

8.2.2 HubSpot Contact to Acumatica Contact

HubSpot Contact to Acumatica Contact Diagram

Contact records created or updated in HubSpot are synchronized to Acumatica to ensure customer contact information is consistent across both systems.

Export Configurations (HubSpot Contact):
Connection: <Select HubSpot Connection>
Resource: Contacts
Extract Type: All - Always extract all data
Include All Fields: True
Import Configurations (Acumatica Contact):
Connection: <Select Acumatica Connection>
Resource: Contacts
Import Type: Upsert
BaseUrl: https://<your-domain>/<instance-name>/entity
Tenant: Default
Version: 24.200.001
Look Up Fields: ContactID.value, Email.value

Field Mapping Table

Source Data (HubSpot) Target Data (Acumatica)
properties.jobtitle JobTitle.value
properties.zip Address.PostalCode.value
properties.country Address.Country.value
properties.state Address.State.value
properties.city Address.City.value
properties.address Address.AddressLine1.value
properties.fax Fax.value
properties.mobilephone Phone2.value
properties.phone Phone1.value
properties.email Email.value
properties.lastname LastName.value
properties.firstname FirstName.value
properties.acumatica_contact_id ContactID.value
id prev_data.HubspotID

Update Configurations (HubSpot):

Connection: <Select HubSpot Connection>
Resource: Contact
Method: Operation: Update, Directly By HubSpot ID: True
Source Data Target Data
ContactID.value properties.acumatica_contact_id
prev_data.HubspotID id

8.2.3 Acumatica Customer to HubSpot Company

Acumatica Customer to HubSpot Company Diagram

Customer records created or updated in Acumatica are synchronized to HubSpot to ensure master data remains consistent across both platforms.

Acumatica Company Export:
Data Type: REST
Extract: Customers
Active: true
Detailed Data: True
Connection: <Select Acumatica Connection>
Extract Type: All - Always extract all data
BaseUrl: https://<your-domain>/<instance-name>/entity
Tenant: Default
Version: 24.200.001
Skip Response Wrapping: True
HubSpot Company Import:
Connection: <Select HubSpot Connection>
Resource: Companies
Operation: Upsert
Directly By HubSpot ID: False
Lookup Condition: Lookup Field: properties.acumatica_customer_id, Operator: Equal, Source: Mapping

Field Mapping Table

Source Data (Acumatica) Target Data (HubSpot) Description / Rules
CustomerName.value properties.name Customer Name
MainContact.Phone.value properties.phone Phone Number
MainContact.Address.AddressLine1.value properties.address Street Address
MainContact.Address.City.value properties.city City Name
MainContact.Address.PostalCode.value properties.zip Postal Code
MainContact.WebSite.value properties.website Website URL
CustomerID.value properties.acumatica_customer_id Acumatica Customer ID Reference
MainContact.Address.Country.value properties.country Lookup Mapping: US - United States

8.2.4 Acumatica Contact to HubSpot Contact

Acumatica Contact to HubSpot Contact Diagram

Contact records created or updated in Acumatica are synchronized to HubSpot. RUNMYBOT retrieves Contact data from Acumatica through REST APIs.

Export Configurations (Acumatica Contact):
Data Type: REST
Extract: Contacts
Active: True
Detailed Data: True
Connection: <Select Acumatica Connection>
Extract Type: All - Always extract all data
BaseUrl: https://<your-domain>/<instance-name>/entity
Tenant: Default
Version: 24.200.001
Skip Response Wrapping: True
Import Configurations (HubSpot Contact):
Connection: <Select HubSpot Connection>
Resource: Contacts
Operation: Upsert
Directly By HubSpot ID: False
Lookup Condition: Lookup Field: properties.acumatica_contact_id, Operator: Equal, Source: Mapping

Field Mapping Table

Source Data (Acumatica) Target Data (HubSpot)
ContactID.value properties.acumatica_contact_id
FirstName.value properties.firstname
LastName.value properties.lastname
JobTitle.value properties.jobtitle
Email.value properties.email
Phone1.value properties.phone
Phone2.value properties.mobilephone
Address.AddressLine1.value properties.address
Address.City.value properties.city
Address.State.value properties.state
Address.Country.value properties.country
Address.PostalCode.value properties.zip

8.2.5 HubSpot Deal to Acumatica Sales Order

HubSpot Deal to Acumatica Sales Order Diagram

Closed Won HubSpot Deals are synchronized to Acumatica Sales Orders. RUNMYBOT retrieves Deal data, validates it, and performs the required mappings.

Export Configurations (HubSpot Deal):
Connection: <Select HubSpot Connection>
Resource: Deals
Associations: Companies, Line Items
Extract Type: All - Always extract all data
Include All Fields: True
Enable Lookup: True
Lookup Condition: Lookup Field: StageName, Operator: Equal, Source: Static, Value: closedwon
Data Preprocess - Filter 1:
Condition 1: Operation: Filter, Field Name: properties.acumatica_order_id, Condition: Is EMPTY
Condition 2: Operation: Filter, Field Name: line_items, Condition: Is Not Empty
Condition 3: Operation: Filter, Field Name: companies, Condition: Is Not Empty
Data Preprocess - Filter 2:
Condition 1: Operation: Filter, Field Name: id, Condition: Unique

HubSpot Company to Data Preprocess Mapping

Source Data Target Data
properties.acumatica_customer_id customer_id
hs_object_id company_id

Data Preprocess Mapping

Source Data Target Data
line_items Details
properties.dealname dealname
id id
companies[*].id company_id
Acumatica Company Import:
Connection: <Select Acumatica Connection>
Resource: Customer
Import Type: Upsert
BaseUrl: https://<your-domain>/<instance-name>/entity
Tenant: Default
Version: 24.200.001
Look Up Fields: CustomerID.value

Acumatica Customer Mapping Table

Source Data (HubSpot) Target Data (Acumatica)
properties.acumatica_customer_id CustomerID.value
properties.name CustomerName.value
properties.website MainContact.WebSite.value
properties.phone MainContact.Phone1.value
properties.address MainContact.Address.AddressLine1.value
properties.city MainContact.Address.City.value
properties.state MainContact.Address.State.value
properties.country MainContact.Address.Country.value
properties.zip MainContact.Address.PostalCode.value
id prev_data.HubspotID
Static: false SendDummyLettersByEmail.value
HubSpot companyUpdate:
Connection: <Select HubSpot Connection>
Resource: Companies
Operation: Update, Directly By HubSpot ID: True
Data Preprocess (Merge):
Operation: Merge, Join Type: Left Join, Split Field: customer_id, Left Data: WITHOUT SPLIT KEY PRESENT, Group By Fields: company_id
Acumatica Sales Order Import:
Resource: Sales Order
Connection: <Select Acumatica Connection>
Import Type: Create
BaseUrl: https://<your-domain>/<instance-name>/entity
Tenant: Default
Version: 24.200.001

Acumatica Sales Order Mapping Table

Source Data (HubSpot) Target Data (Acumatica)
Static: SO OrderType.value
customer_id CustomerID.value
dealname Description.value
id ExternalRef.value
Details[*].properties.price Details[*].UnitPrice.value
Details[*].properties.acumatica_item_id Details[*].InventoryID.value
Details[*].properties.quantity Details[*].OrderQty.value
Details[*].properties.name Details[*].LineDescription.value
id prev_data.Hubspot_ID
HubSpot Deal Update:
Connection: <Select HubSpot Connection>
Resource: Deal
Operation: Update, Directly By HubSpot ID: True
Source Data Target Data
OrderNbr.value properties.acumatica_order_id
prev_data.Hubspot_ID id

8.2.6 Acumatica Sales Order to HubSpot Deal

HubSpot Deal to Acumatica Sales Order Diagram

Acumatica Sales Orders are synchronized to HubSpot Deals. RUNMYBOT retrieves Sales Order data, validates it, and performs the required transformations.

Acumatica Sales Order Export:
Data Type: REST
Extract: Sales Order
Active: True
Detailed Data: True
Connection: <Select Acumatica Connection>
Extract Type: All - Always extract all data
BaseUrl: https://<your-domain>/<instance-name>/entity
Tenant: Default
Version: 24.200.001
Data Filter 1:
Condition: Operation: Filter, Field Name: ExternalRef.value, Condition: Is EMPTY
Data Filter 2:
Condition: Operation: Filter, Field Name: CustomerID.value, Condition: Unique
Acumatica Customer Lookup:
Data Type: REST, Extract: Customers, Active: True, Detailed Data: True, Connection: <Select Acumatica Connection>, BaseUrl: https://<your-domain>/<instance-name>/entity, Tenant: Default, Version: 24.200.001, Look Up Keys: CustomerID, Skip Response Wrapping: True
HubSpot Company Import:
Connection: <Select HubSpot Connection>, Resource: Companies, Operation: Upsert, Lookup Field: properties.acumatica_customer_id, Operator: Equal

HubSpot Company Mapping Table

Source Data (Acumatica) Target Data (HubSpot)
CustomerName.value properties.name
MainContact.Phone.value properties.phone
MainContact.Address.AddressLine1.value properties.address
MainContact.Address.City.value properties.city
MainContact.Address.PostalCode.value properties.zip
MainContact.Website.value properties.website
CustomerID.value properties.acumatica_customer_id
MainContact.Address.Country.value properties.country
Data Merge:
Operation: Merge, Join Type: Left Join, Split Field: company_id, Left Data: WITHOUT SPLIT KEY PRESENT, Group By Fields: CustomerID
HubSpot Deal Import:
Resource: Deals, Connection: <Select HubSpot Connection>, Operation: Create, Ignore Existing Records: True, Lookup Field: properties.acumatica_order_id, Operator: Equal, Source: Mapping

HubSpot Deal Mapping Table

Source Data Target Data
Name properties.dealname
Amount properties.amount
Static: closedwon properties.dealstage
Name properties.description
acumatica_order_id properties.acumatica_order_id
company_id associations[*].to.id
Static: HUBSPOT_DEFINED associations[*].types[*].associationCategory
Static: 5 associations[*].types[*].associationTypeId
HubSpot Deal Line Item Import:
Connection: <Select HubSpot Connection>, Resource: Deal Line Items, Operation: Create

HubSpot Deal Line Item Mapping Table

Source Data Target Data
LineDescription properties.name
OrderQty properties.quantity
product_id properties.hs_product_id
acumatica_order_id properties.hs_sku
deal_id associations[*].to.id
Static: HUBSPOT_DEFINED associations[*].types[*].associationCategory
Static: 20 associations[*].types[*].associationTypeId
Acumatica Sales Order Update:
Resource: Sales Order, Connection: <Select Acumatica Connection>, Import Type: Update
Source Data Target Data
CustomerID CustomerID.value
Static: SO OrderType.value
ExternalRef.value ExternalRef.value
acumatica_order_id OrderNbr.value

8.2.7 Acumatica Product to HubSpot Product

Acumatica Product to HubSpot Product Diagram

Product master records created or updated in Acumatica are synchronized to HubSpot to ensure that the CRM catalog has accurate description, SKU, and price details. RUNMYBOT extracts Stock Items and Non-Stock Items from Acumatica via REST APIs, filters out items without a default price, and upserts them into HubSpot Products.

Acumatica Stock Item Export:
Data Type: REST
Extract: Stock Item
Active: True
Connection: <Select Acumatica Connection>
Extract Type: All - Always extract all data
BaseUrl: https://<your-domain>/<instance-name>/entity
Tenant: Default
Version: 24.200.001

Stock Item Mapping

Source Data Target Data Description / Rules
StockItem[*].InventoryID.value StockItem[*].InventoryID.value Item SKU / Inventory ID Reference
StockItem[*].Description.value StockItem[*].Description.value Product Description
StockItem[*].DefaultPrice.value StockItem[*].DefaultPrice.value Standard Price
StockItem[*].ItemType.value StockItem[*].ItemType.value Product Item Type
Acumatica Non-Stock Item Export:
Data Type: REST
Extract: Non Stock Item
Active: True
Connection: <Select Acumatica Connection>
Extract Type: All - Always extract all data
BaseUrl: https://<your-domain>/<instance-name>/entity
Tenant: Default
Version: 24.200.001

Non-Stock Item Mapping

Source Data Target Data Description / Rules
Non Stock Item[*].InventoryID.value Non Stock Item[*].InventoryID.value Item SKU / Inventory ID Reference
Non Stock Item[*].Description.value Non Stock Item[*].Description.value Product Description
Non Stock Item[*].DefaultPrice.value Non Stock Item[*].DefaultPrice.value Standard Price
Non Stock Item[*].ItemType.value Non Stock Item[*].ItemType.value Product Item Type
Data Preprocess:
Condition: Operation: Filter, Field Name: DefaultPrice.value, Condition: Is Not Empty
HubSpot Product Import:
Connection: <Select HubSpot Connection>
Resource: Product
Operation: Upsert
Directly By HubSpot ID: False
Lookup Condition: Lookup Field: properties.acumatica_item_id, Operator: Equal, Source: Mapping

HubSpot Product Import Mapping

Source Data (Acumatica) Target Data (HubSpot) Description / Rules
InventoryID.value properties.name Product Name Reference
InventoryID.value properties.hs_sku SKU code
InventoryID.value properties.acumatica_item_id Acumatica Product ID Reference
Description.value properties.description Product Catalog Description
ItemType.value properties.hs_product_type Lookup Mapping: Service - service, Labor - service, Charge - service, Expense - service, Finished Good - inventory, Non-Stock Item - non_inventory
DefaultPrice.value properties.price Product Standard Price

8.3 Custom Workflows

Custom workflows extend the integration features for financial transactions such as invoices and payments.

8.3.1 Acumatica Sales Invoice to HubSpot Sales Invoice

Acumatica Sales Invoice to HubSpot Sales Invoice Diagram

The Acumatica Sales Invoice to HubSpot integration retrieves invoice data from Acumatica, enriches it with HubSpot Deal and Company context, and imports the processed invoice into HubSpot custom objects.

Acumatica Invoice Export:
Data Type: REST, Extract: Sales Invoices, Active: True, Detailed Data: True
Connection: <Select Acumatica Connection>
Extract Type: All - Always extract all data
BaseUrl: https://<your-domain>/<instance-name>/entity
Tenant: Default, Version: 24.200.001
Data preprocess - Filter:
Condition: Operation: Filter, Field Name: Type.value, Condition: Equals, Value: Invoice

Data Preprocess Filter Mapping

Source Data Target Data Description / Rules
Sales Invoice Sales Invoice Filtered Invoices
HubSpot Deal Export:
Connection: <Select HubSpot Connection>, Resource: Deals, Lookup Field: acumatica_order_id, Operator: Equal

HubSpot Deal Export Mapping

Source Data Target Data Description / Rules
Details[*].OrderNbr.value acumatica_order_id Acumatica Order Number
ReferenceNbr.value prev_data.ReferenceNbr Reference Number
Data preprocess-Merge:
Condition 1: Operation: Merge, Join Type: Left Join, Split Field: associations, Left Data: WITHOUT SPLIT KEY PRESENT, Group By Fields: ReferenceNbr
Condition 2: Operation: Filter, Field Name: associations, Condition: Is Not EMPTY

HubSpot Deal Export to Data preprocess Mapping

Source Data Target Data Description / Rules
id associations[*].to.id HubSpot Deal ID Reference
properties.acumatica_order_id OrderNbr Acumatica Order Number
prev_data.ReferenceNbr ReferenceNbr Reference Number
associations[*].types[*].associationCategory Static: USER_DEFINED
associations[*].types[*].associationTypeId Static: 21
Acumatica Invoice Export to Data Preprocess:

Acumatica Invoice Export to Data Preprocess Mapping

Source Data Target Data Description / Rules
Amount.value Amount Invoice Amount Value
DueDate.value DueDate Due Date Value
ReferenceNbr.value ReferenceNbr Reference Number
CreatedDate.value CreatedDate Created Date
Balance.value Balance Outstanding Balance
Details[*].OrderNbr.value OrderNbr Acumatica Order Number
Data preprocess:
Condition 1: Operation: Merge, Join Type: Full Join, Group By Fields: ReferenceNbr

Data Preprocess Mapping

Source Data Target Data Description / Rules
companies[*].id associations[*].to.id Company ID Reference
companies[*].properties.sap_company_id sap_company_id SAP Company ID Reference
companies[*].properties.name company_name Company Name Reference
properties.sap_reference_id sap_reference_id SAP Reference ID
prev_data.invoice_number invoice_number Invoice Number Reference
associations[*].types[*].associationCategory Static: USER_DEFINED
associations[*].types[*].associationTypeId Static: 17
HubSpot Custom Object Import:
Connection: <Select HubSpot Connection>, Resource: Custom Object, Custom Object Name: p246208318_sales_invoices, Operation: Upsert, Lookup Field: properties.invoice_number, Operator: Equal

Field Mapping Table

Source Data Target Data Description / Rules
ReferenceNbr properties.external_ref_id External Reference ID
Balance properties.outstanding_amount Outstanding Amount
Amount properties.invoice_amount Total Invoice Amount
DueDate properties.due_date Date Transform
CreatedDate properties.invoice_date Date Transform
ReferenceNbr properties.invoice_number Invoice Number Reference
associations associations Links to Deal & Company

8.3.2 Acumatica Customer Payment to HubSpot Payment

Acumatica Customer Payment to HubSpot Payment Diagram

The Acumatica Customer Payment to HubSpot integration synchronizes payment records, links them to corresponding HubSpot Invoices, and updates HubSpot payments custom objects.

Acumatica Customer Payment Export:
Data Type: REST
Extract: Payment Received
Active: True
Connection: <Select Acumatica Connection>
Extract Type: All - Always extract all data
BaseUrl: https://<your-domain>/<instance-name>/entity
Tenant: Default
Version: 24.200.001
Acumatica Customer Payment Export:
Data Type: REST
Extract: Payment Details
Active: True
Detailed Data: True
Connection: <Select Acumatica Connection>
Extract Type: All - Always extract all data
BaseUrl: https://<your-domain>/<instance-name>/entity
Tenant: Default
Version: 24.200.001
Lookup Directly By Id: True
Key To Lookup: ReferenceNbr
Skip Response Wrapping: True

Acumatica Customer Payment Export Mapping

Source Data Target Data Description / Rules
ReferenceNbr.value ReferenceNbr Reference Number ID Reference
Data Preprocess Filter:
Condition: Operation: Filter, Field Name: invoice_number, Condition: Is Not Empty

Data Preprocess Filter Mapping

Source Data Target Data Description / Rules
ApplicationHistory[*].AdjustedRefNbr.value ApplicationHistory[*].invoice_number Invoice Number Reference
ReferenceNbr.value ApplicationHistory[*].payment_number Payment Number Reference
PaymentAmount.value ApplicationHistory[*].PaymentAmount Payment Amount Value
Description.value ApplicationHistory[*].description Payment Description Memo
CashAccount.value ApplicationHistory[*].CashAccount Cash Account Code Reference
ApplicationDate.value ApplicationHistory[*].ApplicationDate Payment Application Date
CustomerID.value ApplicationHistory[*].CustomerID Customer ID Reference
Status.value ApplicationHistory[*].Status Payment Status Value
HubSpot Invoice Export:
Connection: <Select HubSpot Connection>
Resource: Custom Object
Custom Object Name: p246208318_sales_invoices
Extract Type: All - Always extract all data
Include All Fields: True
Enable Look Up: True
Lookup Condition: Lookup Field: invoice_number, Operator: Equal, Source: Mapping

HubSpot Invoice Export Mapping

Source Data Target Data Description / Rules
invoice_number invoice_number Invoice Number Reference
payment_number prev_data.payment_number Payment Number Reference
Data preprocess:
Condition 1: Operation: Merge, Join Type: Left Join, Split Field: associations, Left Data: WITHOUT SPLIT KEY PRESENT, Group By Fields: payment_number, invoice_number
Condition 2: Operation: Filter, Field Name: associations, Condition: Is Not EMPTY

HubSpot Sales Invoice Export to Data preprocess Mapping

Source Data Target Data Description / Rules
id associations[*].to.id HubSpot Invoice ID Reference
properties.invoice_number invoice_number Invoice Number Reference
properties.invoice_amount total_amount Total Invoice Amount
associations[*].types[*].associationCategory Static Category: USER_DEFINED
associations[*].types[*].associationTypeId Static Type ID: 39
prev_data.payment_number payment_number Payment Number Reference
HubSpot Company Export:
Connection: <Select HubSpot Connection>
Resource: Companies
Extract Type: All - Always extract all data
Include All Fields: True
Enable Look Up: True
Lookup Condition: Lookup Field: acumatica_customer_id, Operator: Equal, Source: Mapping

HubSpot Company Export Mapping

Source Data Target Data Description / Rules
CustomerID acumatica_customer_id Acumatica Customer ID Reference
payment_number prev_data.payment_number Payment Number Reference
Data preprocess:
Condition 1: Operation: Merge, Join Type: Full Join, Group By Fields: payment_number, invoice_number

Data preprocess Mapping

Source Data Target Data Description / Rules
id associations[*].to.id HubSpot Company ID Reference
associations[*].types[*].associationCategory Static Category: USER_DEFINED
associations[*].types[*].associationTypeId Static Type ID: 48
prev_data.payment_number payment_number Payment Number Reference
properties.name company_name Company Name Reference
prev_data.invoice_number invoice_number Invoice Number Reference
HubSpot Customer Payment Import:
Connection: <Select HubSpot Connection>
Resource: Custom Object
Custom Object Name: p246208318_customer_payments
Operation: Upsert
Directly By Id: False
Lookup Condition: Lookup Field: properties.payment_number, Operator: Equal, Source: Mapping

HubSpot Customer Payment Import Mapping

Source Data (Acumatica) Target Data (HubSpot) Description / Rules
PaymentAmount properties.amount_paid Amount Paid Value
payment_number properties.external_ref_id External Reference ID
ApplicationDate properties.transaction_date Payment Date
Description properties.note Notes/Remarks
Status properties.status Lookup Mapping: Closed - Paid, Open - Open
payment_number properties.payment_number Payment Number Reference
total_amount properties.total_amount Total Invoice Amount
associations associations Links to Invoice & Company

9 Exception Handling

Error handling is implemented across trigger, transformation, and action stages of each flow to ensure reliable synchronization:

  • Validation: Checks identify missing mandatory fields, invalid data formats, and incorrect reference mappings before processing.
  • Duplicates: Managed using external identifiers and upsert logic to prevent duplicate record insertion.
  • Retries: Automated retry schedules for network interruptions, API timeouts, rate limits, or temporary service unavailability.
  • Logging: All integration activities, payloads, and errors are logged inside the RUNMYBOT monitoring dashboard.