ml-connector
Oracle NetSuiteSquare

Oracle NetSuite and Square integration

Oracle NetSuite runs your finance and back-office operations. Square processes your payments and point-of-sale transactions. When the two are connected, every payment and order from Square automatically posts into NetSuite's general ledger, eliminating manual reconciliation and re-keying. Customer and vendor records stay aligned across both platforms, and you can replay failed transactions without losing the audit trail.

How Oracle NetSuite works

Oracle NetSuite exposes vendors, purchases, invoices, customers, general ledger accounts, and inventory items through REST SuiteTalk Web Services and SuiteQL queries. The platform supports both OAuth 2.0 certificate-based M2M authentication and legacy token-based authentication, with OAuth tokens valid for 60 minutes. NetSuite also supports Event Subscriptions for push webhooks on record create, edit, and delete for supported transaction types including Sales Orders and Invoices, though webhook endpoints must return 2xx responses promptly and Event Subscriptions lack HMAC signature verification (IP allowlisting is required instead).

How Square works

Square exposes payments, orders, invoices, customers, vendors (beta), and inventory through a versioned REST API at connect.squareup.com/v2, authenticated via OAuth 2.0 Authorization Code flow or Personal Access Tokens. Access tokens expire in 30 days and must be refreshed using non-expiring or single-use 90-day refresh tokens. Square provides HMAC-SHA256 webhook signatures for push notifications on payments, orders, invoices, customers, and catalog events. Square does not expose a general ledger, chart of accounts, or purchase order APIs; transactions are commerce-layer only and must be mapped to accounting records by the connector.

What moves between them

Square payments and orders flow into Oracle NetSuite on a webhook schedule, with each transaction posting to a configured GL account. Customer and vendor records are synced bidirectionally so both systems maintain consistent master data. Square's payment amounts are allocated to the correct NetSuite cost centers and GL dimensions, but Square lacks GL APIs, so financial postings flow one-way from Square into NetSuite only. Failed transactions are queued and retried with full audit logging.

How ml-connector handles it

ml-connector accepts Square's HMAC-SHA256 webhook signatures on each push, validates the payload, and stores both credential sets encrypted. On the Oracle NetSuite side, it uses certificate-based OAuth 2.0 to obtain a session token refreshed every 55 minutes (before the 60-minute expiry window). On the Square side, it manages the 30-day access token expiry by exchanging the refresh token before a call would fail. Payment amounts and customer references from Square webhooks are mapped to NetSuite GL accounts and customer records, with validation that the target GL account and dimensions exist before posting. Square provides no write-back capability for GL postings (Square is read-only for payments), so the connector never writes financial data back to Square. Both systems are queried for mismatches during month-end reconciliation, and failed GL postings can be replayed through NetSuite's audit trail when reconciliation discovers them.

A real-world example

A retail and e-commerce operation runs Oracle NetSuite for order management, vendor payments, and financial close, and Square for in-store and online payments across multiple locations. Before integration, the finance team exported Square payment reports daily and re-entered the transaction summaries into NetSuite by hand, spending hours each week reconciling payment amounts to the GL and chasing discrepancies between Square's payment records and NetSuite's cash accounts. With the two systems connected, each payment from Square posts to NetSuite's GL automatically, customer records are always current in both systems, and the daily reconciliation step shrinks to a verification scan rather than a manual data entry task.

What you can do

  • Post Square payments and orders into Oracle NetSuite's general ledger automatically, with full transaction detail and audit trail.
  • Sync customer and vendor records bidirectionally so both systems stay current as new customers are added in Square and vendor terms are updated in NetSuite.
  • Validate GL accounts and dimensions before posting Square transactions, preventing postings to closed or non-existent GL accounts.
  • Handle Square's 30-day token expiry and NetSuite's 60-minute session windows transparently, with retries and error replay when credentials expire mid-transaction.
  • Match Square payments to NetSuite customers and allocate each transaction to the correct GL account, cost center, and location.

Questions

Which direction does data move between Oracle NetSuite and Square?
Payments, orders, and invoices flow from Square into NetSuite for GL posting. Customers and vendors are synced bidirectionally to keep master data current. Financial postings never flow back to Square because Square lacks GL APIs; Square is commerce-layer only and NetSuite is the system of record for accounting.
What happens when Square's access token expires or NetSuite's session window closes?
ml-connector tracks both expiry windows and refreshes credentials proactively. Square tokens expire every 30 days and are refreshed using the non-expiring refresh token. NetSuite OAuth tokens expire every 60 minutes and are refreshed using certificate-based authentication. If a transaction fails mid-flight due to token expiry, the transaction is queued and retried with fresh credentials.
How does the integration handle Square payments that map to GL accounts or customers that do not exist in NetSuite?
Before posting, ml-connector validates that the target GL account and customer exist in NetSuite and match the required dimensions. If validation fails, the transaction is quarantined in the audit log with a clear error message, preventing orphaned GL postings. The transaction can be corrected in NetSuite (adding the missing GL account or customer) and replayed from the audit trail.

Related integrations

Connect Oracle NetSuite and Square

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started