Search QuickBooks, or sync records to it
AI agents: read /llms.txt; add .md to any page URL. This page as Markdown: /reference/integrations/v1-external-integration-public-action.md. Index of every page and the rules for every call: /llms.txt. Guides and concepts in one file: /llms-full.txt. OpenAPI: /openapi.json.
PUT/
Built for YoPrint's web app, which uses it to link YoPrint records to QuickBooks Online and to push them there. Only QuickBooks Online answers it; other integrations answer 422 invalid_public_action. Send an action:
query_customer,query_vendor: up to 20 QuickBooks records whose display name containsquery.query_invoice,query_bill,query_purchase_order: up to 20 whose document number contains it. Records come as QuickBooks returns them.sync_orderandsync_purchase_order: queue a sync to QuickBooks of 1 to 100 sales orders or purchase orders, by their ids inobjects. The answer isdata: null; the sync runs afterwards, on exactly the records YoPrint checked.
Each action checks a permission before anything else, so a member without Manage Settings who lacks it gets 403 user_is_not_authorized (see Permission). The {id} is the integration's id from the list.
Side effects
- Calls QuickBooks Online. The
sync_actions queue writes of your records to QuickBooks.
Path parameters
Your team slug, shown as Team ID next to your API key in Profile.
- Example
your-team
- Example
The QuickBooks Online integration. Its hash id from an earlier answer; there is no unique key for it.
- Example
QF3K07jFrQ1P1B
- Example
Request body
application/json, required.
- One of:
"query_customer","query_vendor","query_invoice","query_bill","query_purchase_order","sync_order","sync_purchase_order"
- One of:
objectsarray of strings or integersFor the
sync_actions: 1 to 100 sales order or purchase order ids, as this API returns them. Don't send document numbers such as1001: a whole number, or a string of digits only, is read as YoPrint's internal record number and can name a different record.querystringFor the
query_actions: text the display name contains.
More examples (1)
Sync two sales orders
curl -X PUT 'https://secure.yoprint.com/v1/api/store/your-team/setting/external_integration/QF3K07jFrQ1P1B/public_action' \ -H 'Authorization: Bearer YOUR_API_KEY' \ -H 'Accept: application/json' \ -H 'X-Yoprint-Decimal-Format: exact-v1' \ -H 'Content-Type: application/json' \ -d '{ "action": "sync_order", "objects": [ "zGZRXNGeh5cs6M", "VDG1ZqxwDQCaZ0" ] }'Response
200Successful response.
For a
query_action, up to 20 QuickBooks records as QuickBooks returns them. For async_action, null.
Errors
401The API key is missing or wrong (
unauthenticated).403You are not allowed to do this.
api_access_not_in_plan: your team's plan doesn't include API access (Pro and above, with an active subscription or trial), so every request answers this until the team upgrades. When your role lacks the permission the operation needs, the body is only{"message": "Insufficient Permission"}. Other refusals use the error envelope, withunauthorizedoruser_is_not_authorized.- When
- You are not the owner, have no Manage Settings, and lack the permission the action needs (or can't view one of the records in
objects). Members without Manage Settings get this for other integrations and for anactionthat is missing or unknown, too.error.codeuser_is_not_authorized, "Your role does not allow this integration action. Ask your team owner to review your permissions." (for a sales order you can't view, the message names sales order permissions). Nothing is synced. - Fix
- Ask the team owner to give your permission group the permission the action needs, or leave out records you can't view.
404Not found.
page_not_found: the team slug is unknown, you are not a member of the team, or an id in the path is not one of this team's.code: null, with a message that starts "No query results for": there is no record with that id.422The request was refused and changed nothing.
validation_failedlists what to fix inerror.fields; other codes name a business rule, explained inerror.message. A few checks answer with only{"message": "..."}. An operation that calls another service (a payment provider, a carrier, an accounting app) can answerconnect_timeout("Please retry again") when that service does not answer in time: the change may or may not have happened there, so read the record back before you retry.- When
sync_orderorsync_purchase_order: an entry inobjectsis not one of your team's ids or a positive whole number:error.codeunreadable_records, "Some selected records could not be read. Reload the page and try again." Nothing is synced.- Fix
- Send the ids this API returns.
- When
- The integration is not QuickBooks Online (
invalid_public_action), orobjectsis empty or has more than 100 ids (validation_error). - Fix
- Use the QuickBooks integration's id and 1 to 100 records.
- When
- A Shopify order can't be synced to QuickBooks (
validation_error). - Fix
- Leave Shopify orders out.
- When
queryis not a string, orobjectsis not a list on aquery_action (validation_failed); or the integration is retired or not in your plan.- Fix
- Send
queryas text andobjectsas a list of ids.
Notes
- AI apps (MCP connections) can't call this operation: they get 403
agent_operation_not_available. Use a personal API key.
