Skip to main content
POST
Create a connection

Authorizations

Authorization
string
header
required

Use your app's API key as the username, and leave the password blank

Body

application/json
name
string

Optional. A blank name (empty or only whitespace) is stored as null, and surrounding whitespace is trimmed. Left blank, a standard or realtime connection takes QuickBooks' own company name once the first request is processed; a simulated connection takes its simulated company's name (Simulated Company) straight away.

type
enum<string>
default:standard

Optional, standard by default. Create the connections your integration runs workflows on as realtime: workflows run on realtime and simulated connections only, and a connection's type can't be changed through the API afterwards (it can be upgraded from its page in the dashboard).

Available options:
standard,
realtime,
simulated
webhook_url
string<uri>

Optional. Where QuBe Sync sends the connection's own events, signed like every webhook: connection.connected when the Web Connector first checks in (and again after your customer chooses Set up again), connection.setup_cancelled, connection.stalled and connection.resumed (see the callback on Create a connection). Point it at your own record, such as /webhooks/qube/connection/42 on your app. Left out, nothing is sent. A simulated connection is connected as it's created, so its connection.connected goes out straight away. It must be an absolute http or https URL. It may not contain a username or password, and in production it may not point at localhost or a private, loopback or link-local address. A qube listen URL must be one of this app's.

Maximum string length: 2048
Example:

"https://myapp.example/webhooks/qube/connection/42"

Callbacks

POST
{$request.body#/webhook_url}connection_events

Body

application/json

The body QuBe Sync POSTs to a connection's webhook_url when something happens to the connection (see the callback on Create a connection), signed with X-QUBE-Signature like every other QuBe Sync webhook. It says what happened and the connection as the event left it. Never the Web Connector's username or password, the onboarding link, the company file or anything from QuickBooks: read the connection (links.self) for more.

app_id
string<uuid>
required
connection
object
required

The connection as the event left it, and what the event adds.

delivery_id
string<uuid>
required

New for each event, and the same on every retry of it: take each one once.

event
enum<string>
required

connection.connected: the Web Connector checked in for the first time, or for the first time since Set up again. connection.setup_cancelled: your customer chose Cancel setup on the onboarding page. connection.stalled: your requests have waited past the grace, for the reason connection.stall_reason gives (sent again, with the new reason, if it changes while the stall goes on). connection.resumed: they aren't any more.

Available options:
connection.connected,
connection.setup_cancelled,
connection.stalled,
connection.resumed
revision
integer
required

The connection's event counter: one up with every event, across all four. Deliveries can come out of order (a retried connection.stalled after its connection.resumed, say), so apply an event only when its revision is newer than the last you applied.

sandbox
boolean
required
timestamp
integer
required

Unix seconds; also the t= in the signature header.

Response

2XX

Received. Anything else is retried with backoff for about 8 hours; after the last attempt, your organization's owners are emailed.

Response

Created

data
object