> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bijection.com/llms.txt
> Use this file to discover all available pages before exploring further.

# QuickBooks Point of Sale (Web Connector)

> Resources, examples, configuration and evidence for QuickBooks Point of Sale (Web Connector).

Use the `@bijection/connectors/quickbooks-pos` entrypoint to declare QuickBooks Point of Sale (Web Connector) resources.

## Availability

This page describes the pinned source package. Published availability is unestablished for this artifact. [Source build and package availability](https://docs.bijection.com/client/sdk-distribution.md).

## Resources and modes

| Resource | Mode | Description |
| - | - | - |
| Point of Sale company | `sync` | QBWC sessions read qbposXML records modified within windows from each confirmed position, then deleted customers, vendors and items; TimeModified versions, read-only |

Declare a resource in application code, then bind deployment-specific settings and credentials. See [typed resources](https://docs.bijection.com/integrations/resources.md), [connections](https://docs.bijection.com/integrations/connections.md) and [source inspection](https://docs.bijection.com/integrations/cli.md).

## Point of Sale company

### sync: QBWC sessions read qbposXML records modified within windows from each confirmed position, then deleted customers, vendors and items; TimeModified versions, read-only

The following example matches configuration `standard`.

```ts theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
import { quickbooksPos } from "@bijection/connectors/quickbooks-pos";
export const store = quickbooksPos.company.sync();
```

> **Inferred record types**
>
> ```ts theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
> items: {
>
> }
>
> customers: {
>
> }
>
> vendors: {
>
> }
>
> salesReceipts: {
>
> }
>
> vouchers: {
>
> }
>
> inventoryAdjustments: {
>
> }
> ```

#### Configuration: standard

Case: `quickbooks-pos/company/sync/standard`.

Connection and resource configuration are declared by this exact case.

Credential kind: `qbwc`. Keep credential material in the private credential inventory.

| Setting | Type | Required | Owner |
| - | - | - | - |
| `username` | string | Yes | Shared connection |
| `companyFile` | string or null | No | Shared connection |
| `runEveryMinutes` | number or null | No | Shared connection |

> **Complete configuration contract**
>
> ```json theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
> {
>   "setup": [],
>   "resource": {
>     "access": {},
>     "defaults": {},
>     "connector": "qbwc",
>     "output": {
>       "kind": "group",
>       "collections": [
>         "customers",
>         "inventoryAdjustments",
>         "items",
>         "salesReceipts",
>         "vendors",
>         "vouchers"
>       ]
>     },
>     "credential_kind": "qbwc",
>     "connection_fields": [
>       "username",
>       "companyFile",
>       "runEveryMinutes"
>     ]
>   },
>   "connection_setup": {
>     "type": "object",
>     "value": {
>       "username": {
>         "fieldType": {
>           "type": "string"
>         },
>         "optional": false
>       },
>       "companyFile": {
>         "fieldType": {
>           "type": "union",
>           "value": [
>             {
>               "type": "string"
>             },
>             {
>               "type": "null"
>             }
>           ]
>         },
>         "optional": true
>       },
>       "runEveryMinutes": {
>         "fieldType": {
>           "type": "union",
>           "value": [
>             {
>               "type": "number"
>             },
>             {
>               "type": "null"
>             }
>           ]
>         },
>         "optional": true
>       }
>     }
>   },
>   "execution": null
> }
> ```

Native admission analysis is available for this exact declaration.

**Collection: customers**

| Contract | Meaning |
| - | - |
| Initial | Enumeration of observed records |
| Changes | Current record read after a change indication |
| Deletions | Explicit deletion evidence |
| Resume | Opaque cursor |
| Gap | Explicit repair required after a gap |
| Retention | Unspecified |

> **Complete native profile**
>
> ```json theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
> {
>   "movement": {
>     "exchanges": {},
>     "nativeInputLimitBytes": "0",
>     "steps": [
>       {
>         "id": "acquire.1",
>         "inputs": [],
>         "action": {
>           "operation": "acquire",
>           "subject": "native input",
>           "limitBytes": "0"
>         }
>       },
>       {
>         "id": "retain.1",
>         "inputs": [
>           "acquire.1"
>         ],
>         "action": {
>           "operation": "retain",
>           "subject": "acquisition evidence",
>           "reason": "recovery",
>           "release": "acquisition_custody"
>         }
>       },
>       {
>         "id": "interpret.1",
>         "inputs": [
>           "retain.1"
>         ],
>         "action": {
>           "operation": "interpret",
>           "subject": "acquired input",
>           "produces": "records"
>         }
>       },
>       {
>         "id": "materialize.1",
>         "inputs": [
>           "interpret.1"
>         ],
>         "action": {
>           "operation": "materialize",
>           "subject": "source rows",
>           "reason": "serving",
>           "release": "replacement"
>         }
>       },
>       {
>         "id": "publish.1",
>         "inputs": [
>           "materialize.1"
>         ],
>         "action": {
>           "operation": "publish",
>           "subject": "source rows",
>           "visibility": "with_acquisition"
>         }
>       }
>     ]
>   },
>   "initial": "enumeration",
>   "changes": "current_state_after_change",
>   "deletions": "explicit_events",
>   "resume": "opaque_cursor",
>   "retentionMs": null,
>   "gap": "explicit_repair",
>   "limits": {
>     "exchange_evidence_bytes": "4194304",
>     "page_records": "100",
>     "publication_page_records": "128",
>     "record_fields": "32",
>     "response_bytes": "524288"
>   },
>   "restrictions": [
>     "QuickBooks Desktop through the Web Connector, which polls the engine; records are read only while a QBWC session is open, positions advance only when a whole modified-since or deleted-object query finished, and deleted objects are reported only as long as QuickBooks keeps them"
>   ],
>   "commands": {}
> }
> ```

**Collection: inventoryAdjustments**

| Contract | Meaning |
| - | - |
| Initial | Enumeration of observed records |
| Changes | Current record read after a change indication |
| Deletions | Explicit deletion evidence |
| Resume | Opaque cursor |
| Gap | Explicit repair required after a gap |
| Retention | Unspecified |

> **Complete native profile**
>
> ```json theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
> {
>   "movement": {
>     "exchanges": {},
>     "nativeInputLimitBytes": "0",
>     "steps": [
>       {
>         "id": "acquire.1",
>         "inputs": [],
>         "action": {
>           "operation": "acquire",
>           "subject": "native input",
>           "limitBytes": "0"
>         }
>       },
>       {
>         "id": "retain.1",
>         "inputs": [
>           "acquire.1"
>         ],
>         "action": {
>           "operation": "retain",
>           "subject": "acquisition evidence",
>           "reason": "recovery",
>           "release": "acquisition_custody"
>         }
>       },
>       {
>         "id": "interpret.1",
>         "inputs": [
>           "retain.1"
>         ],
>         "action": {
>           "operation": "interpret",
>           "subject": "acquired input",
>           "produces": "records"
>         }
>       },
>       {
>         "id": "materialize.1",
>         "inputs": [
>           "interpret.1"
>         ],
>         "action": {
>           "operation": "materialize",
>           "subject": "source rows",
>           "reason": "serving",
>           "release": "replacement"
>         }
>       },
>       {
>         "id": "publish.1",
>         "inputs": [
>           "materialize.1"
>         ],
>         "action": {
>           "operation": "publish",
>           "subject": "source rows",
>           "visibility": "with_acquisition"
>         }
>       }
>     ]
>   },
>   "initial": "enumeration",
>   "changes": "current_state_after_change",
>   "deletions": "explicit_events",
>   "resume": "opaque_cursor",
>   "retentionMs": null,
>   "gap": "explicit_repair",
>   "limits": {
>     "exchange_evidence_bytes": "4194304",
>     "page_records": "100",
>     "publication_page_records": "128",
>     "record_fields": "32",
>     "response_bytes": "524288"
>   },
>   "restrictions": [
>     "QuickBooks Desktop through the Web Connector, which polls the engine; records are read only while a QBWC session is open, positions advance only when a whole modified-since or deleted-object query finished, and deleted objects are reported only as long as QuickBooks keeps them"
>   ],
>   "commands": {}
> }
> ```

**Collection: items**

| Contract | Meaning |
| - | - |
| Initial | Enumeration of observed records |
| Changes | Current record read after a change indication |
| Deletions | Explicit deletion evidence |
| Resume | Opaque cursor |
| Gap | Explicit repair required after a gap |
| Retention | Unspecified |

> **Complete native profile**
>
> ```json theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
> {
>   "movement": {
>     "exchanges": {},
>     "nativeInputLimitBytes": "0",
>     "steps": [
>       {
>         "id": "acquire.1",
>         "inputs": [],
>         "action": {
>           "operation": "acquire",
>           "subject": "native input",
>           "limitBytes": "0"
>         }
>       },
>       {
>         "id": "retain.1",
>         "inputs": [
>           "acquire.1"
>         ],
>         "action": {
>           "operation": "retain",
>           "subject": "acquisition evidence",
>           "reason": "recovery",
>           "release": "acquisition_custody"
>         }
>       },
>       {
>         "id": "interpret.1",
>         "inputs": [
>           "retain.1"
>         ],
>         "action": {
>           "operation": "interpret",
>           "subject": "acquired input",
>           "produces": "records"
>         }
>       },
>       {
>         "id": "materialize.1",
>         "inputs": [
>           "interpret.1"
>         ],
>         "action": {
>           "operation": "materialize",
>           "subject": "source rows",
>           "reason": "serving",
>           "release": "replacement"
>         }
>       },
>       {
>         "id": "publish.1",
>         "inputs": [
>           "materialize.1"
>         ],
>         "action": {
>           "operation": "publish",
>           "subject": "source rows",
>           "visibility": "with_acquisition"
>         }
>       }
>     ]
>   },
>   "initial": "enumeration",
>   "changes": "current_state_after_change",
>   "deletions": "explicit_events",
>   "resume": "opaque_cursor",
>   "retentionMs": null,
>   "gap": "explicit_repair",
>   "limits": {
>     "exchange_evidence_bytes": "4194304",
>     "page_records": "100",
>     "publication_page_records": "128",
>     "record_fields": "32",
>     "response_bytes": "524288"
>   },
>   "restrictions": [
>     "QuickBooks Desktop through the Web Connector, which polls the engine; records are read only while a QBWC session is open, positions advance only when a whole modified-since or deleted-object query finished, and deleted objects are reported only as long as QuickBooks keeps them"
>   ],
>   "commands": {}
> }
> ```

**Collection: salesReceipts**

| Contract | Meaning |
| - | - |
| Initial | Enumeration of observed records |
| Changes | Current record read after a change indication |
| Deletions | Explicit deletion evidence |
| Resume | Opaque cursor |
| Gap | Explicit repair required after a gap |
| Retention | Unspecified |

> **Complete native profile**
>
> ```json theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
> {
>   "movement": {
>     "exchanges": {},
>     "nativeInputLimitBytes": "0",
>     "steps": [
>       {
>         "id": "acquire.1",
>         "inputs": [],
>         "action": {
>           "operation": "acquire",
>           "subject": "native input",
>           "limitBytes": "0"
>         }
>       },
>       {
>         "id": "retain.1",
>         "inputs": [
>           "acquire.1"
>         ],
>         "action": {
>           "operation": "retain",
>           "subject": "acquisition evidence",
>           "reason": "recovery",
>           "release": "acquisition_custody"
>         }
>       },
>       {
>         "id": "interpret.1",
>         "inputs": [
>           "retain.1"
>         ],
>         "action": {
>           "operation": "interpret",
>           "subject": "acquired input",
>           "produces": "records"
>         }
>       },
>       {
>         "id": "materialize.1",
>         "inputs": [
>           "interpret.1"
>         ],
>         "action": {
>           "operation": "materialize",
>           "subject": "source rows",
>           "reason": "serving",
>           "release": "replacement"
>         }
>       },
>       {
>         "id": "publish.1",
>         "inputs": [
>           "materialize.1"
>         ],
>         "action": {
>           "operation": "publish",
>           "subject": "source rows",
>           "visibility": "with_acquisition"
>         }
>       }
>     ]
>   },
>   "initial": "enumeration",
>   "changes": "current_state_after_change",
>   "deletions": "explicit_events",
>   "resume": "opaque_cursor",
>   "retentionMs": null,
>   "gap": "explicit_repair",
>   "limits": {
>     "exchange_evidence_bytes": "4194304",
>     "page_records": "100",
>     "publication_page_records": "128",
>     "record_fields": "32",
>     "response_bytes": "524288"
>   },
>   "restrictions": [
>     "QuickBooks Desktop through the Web Connector, which polls the engine; records are read only while a QBWC session is open, positions advance only when a whole modified-since or deleted-object query finished, and deleted objects are reported only as long as QuickBooks keeps them"
>   ],
>   "commands": {}
> }
> ```

**Collection: vendors**

| Contract | Meaning |
| - | - |
| Initial | Enumeration of observed records |
| Changes | Current record read after a change indication |
| Deletions | Explicit deletion evidence |
| Resume | Opaque cursor |
| Gap | Explicit repair required after a gap |
| Retention | Unspecified |

> **Complete native profile**
>
> ```json theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
> {
>   "movement": {
>     "exchanges": {},
>     "nativeInputLimitBytes": "0",
>     "steps": [
>       {
>         "id": "acquire.1",
>         "inputs": [],
>         "action": {
>           "operation": "acquire",
>           "subject": "native input",
>           "limitBytes": "0"
>         }
>       },
>       {
>         "id": "retain.1",
>         "inputs": [
>           "acquire.1"
>         ],
>         "action": {
>           "operation": "retain",
>           "subject": "acquisition evidence",
>           "reason": "recovery",
>           "release": "acquisition_custody"
>         }
>       },
>       {
>         "id": "interpret.1",
>         "inputs": [
>           "retain.1"
>         ],
>         "action": {
>           "operation": "interpret",
>           "subject": "acquired input",
>           "produces": "records"
>         }
>       },
>       {
>         "id": "materialize.1",
>         "inputs": [
>           "interpret.1"
>         ],
>         "action": {
>           "operation": "materialize",
>           "subject": "source rows",
>           "reason": "serving",
>           "release": "replacement"
>         }
>       },
>       {
>         "id": "publish.1",
>         "inputs": [
>           "materialize.1"
>         ],
>         "action": {
>           "operation": "publish",
>           "subject": "source rows",
>           "visibility": "with_acquisition"
>         }
>       }
>     ]
>   },
>   "initial": "enumeration",
>   "changes": "current_state_after_change",
>   "deletions": "explicit_events",
>   "resume": "opaque_cursor",
>   "retentionMs": null,
>   "gap": "explicit_repair",
>   "limits": {
>     "exchange_evidence_bytes": "4194304",
>     "page_records": "100",
>     "publication_page_records": "128",
>     "record_fields": "32",
>     "response_bytes": "524288"
>   },
>   "restrictions": [
>     "QuickBooks Desktop through the Web Connector, which polls the engine; records are read only while a QBWC session is open, positions advance only when a whole modified-since or deleted-object query finished, and deleted objects are reported only as long as QuickBooks keeps them"
>   ],
>   "commands": {}
> }
> ```

**Collection: vouchers**

| Contract | Meaning |
| - | - |
| Initial | Enumeration of observed records |
| Changes | Current record read after a change indication |
| Deletions | Explicit deletion evidence |
| Resume | Opaque cursor |
| Gap | Explicit repair required after a gap |
| Retention | Unspecified |

> **Complete native profile**
>
> ```json theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
> {
>   "movement": {
>     "exchanges": {},
>     "nativeInputLimitBytes": "0",
>     "steps": [
>       {
>         "id": "acquire.1",
>         "inputs": [],
>         "action": {
>           "operation": "acquire",
>           "subject": "native input",
>           "limitBytes": "0"
>         }
>       },
>       {
>         "id": "retain.1",
>         "inputs": [
>           "acquire.1"
>         ],
>         "action": {
>           "operation": "retain",
>           "subject": "acquisition evidence",
>           "reason": "recovery",
>           "release": "acquisition_custody"
>         }
>       },
>       {
>         "id": "interpret.1",
>         "inputs": [
>           "retain.1"
>         ],
>         "action": {
>           "operation": "interpret",
>           "subject": "acquired input",
>           "produces": "records"
>         }
>       },
>       {
>         "id": "materialize.1",
>         "inputs": [
>           "interpret.1"
>         ],
>         "action": {
>           "operation": "materialize",
>           "subject": "source rows",
>           "reason": "serving",
>           "release": "replacement"
>         }
>       },
>       {
>         "id": "publish.1",
>         "inputs": [
>           "materialize.1"
>         ],
>         "action": {
>           "operation": "publish",
>           "subject": "source rows",
>           "visibility": "with_acquisition"
>         }
>       }
>     ]
>   },
>   "initial": "enumeration",
>   "changes": "current_state_after_change",
>   "deletions": "explicit_events",
>   "resume": "opaque_cursor",
>   "retentionMs": null,
>   "gap": "explicit_repair",
>   "limits": {
>     "exchange_evidence_bytes": "4194304",
>     "page_records": "100",
>     "publication_page_records": "128",
>     "record_fields": "32",
>     "response_bytes": "524288"
>   },
>   "restrictions": [
>     "QuickBooks Desktop through the Web Connector, which polls the engine; records are read only while a QBWC session is open, positions advance only when a whole modified-since or deleted-object query finished, and deleted objects are reported only as long as QuickBooks keeps them"
>   ],
>   "commands": {}
> }
> ```

> **Commands, occurrences and artifacts**
>
> ```json theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
> {
>   "records": {
>     "customers": {
>       "protocol": "record_observation",
>       "coverage": "records",
>       "consistency": "observations",
>       "atomicity": "record",
>       "history": "observations",
>       "recordRefresh": false,
>       "reconciliation": false,
>       "notifications": false,
>       "snapshotMaxRows": null,
>       "profile": {
>         "movement": {
>           "exchanges": {},
>           "nativeInputLimitBytes": "0",
>           "steps": [
>             {
>               "id": "acquire.1",
>               "inputs": [],
>               "action": {
>                 "operation": "acquire",
>                 "subject": "native input",
>                 "limitBytes": "0"
>               }
>             },
>             {
>               "id": "retain.1",
>               "inputs": [
>                 "acquire.1"
>               ],
>               "action": {
>                 "operation": "retain",
>                 "subject": "acquisition evidence",
>                 "reason": "recovery",
>                 "release": "acquisition_custody"
>               }
>             },
>             {
>               "id": "interpret.1",
>               "inputs": [
>                 "retain.1"
>               ],
>               "action": {
>                 "operation": "interpret",
>                 "subject": "acquired input",
>                 "produces": "records"
>               }
>             },
>             {
>               "id": "materialize.1",
>               "inputs": [
>                 "interpret.1"
>               ],
>               "action": {
>                 "operation": "materialize",
>                 "subject": "source rows",
>                 "reason": "serving",
>                 "release": "replacement"
>               }
>             },
>             {
>               "id": "publish.1",
>               "inputs": [
>                 "materialize.1"
>               ],
>               "action": {
>                 "operation": "publish",
>                 "subject": "source rows",
>                 "visibility": "with_acquisition"
>               }
>             }
>           ]
>         },
>         "initial": "enumeration",
>         "changes": "current_state_after_change",
>         "deletions": "explicit_events",
>         "resume": "opaque_cursor",
>         "retentionMs": null,
>         "gap": "explicit_repair",
>         "limits": {
>           "exchange_evidence_bytes": "4194304",
>           "page_records": "100",
>           "publication_page_records": "128",
>           "record_fields": "32",
>           "response_bytes": "524288"
>         },
>         "restrictions": [
>           "QuickBooks Desktop through the Web Connector, which polls the engine; records are read only while a QBWC session is open, positions advance only when a whole modified-since or deleted-object query finished, and deleted objects are reported only as long as QuickBooks keeps them"
>         ],
>         "commands": {}
>       }
>     },
>     "inventoryAdjustments": {
>       "protocol": "record_observation",
>       "coverage": "records",
>       "consistency": "observations",
>       "atomicity": "record",
>       "history": "observations",
>       "recordRefresh": false,
>       "reconciliation": false,
>       "notifications": false,
>       "snapshotMaxRows": null,
>       "profile": {
>         "movement": {
>           "exchanges": {},
>           "nativeInputLimitBytes": "0",
>           "steps": [
>             {
>               "id": "acquire.1",
>               "inputs": [],
>               "action": {
>                 "operation": "acquire",
>                 "subject": "native input",
>                 "limitBytes": "0"
>               }
>             },
>             {
>               "id": "retain.1",
>               "inputs": [
>                 "acquire.1"
>               ],
>               "action": {
>                 "operation": "retain",
>                 "subject": "acquisition evidence",
>                 "reason": "recovery",
>                 "release": "acquisition_custody"
>               }
>             },
>             {
>               "id": "interpret.1",
>               "inputs": [
>                 "retain.1"
>               ],
>               "action": {
>                 "operation": "interpret",
>                 "subject": "acquired input",
>                 "produces": "records"
>               }
>             },
>             {
>               "id": "materialize.1",
>               "inputs": [
>                 "interpret.1"
>               ],
>               "action": {
>                 "operation": "materialize",
>                 "subject": "source rows",
>                 "reason": "serving",
>                 "release": "replacement"
>               }
>             },
>             {
>               "id": "publish.1",
>               "inputs": [
>                 "materialize.1"
>               ],
>               "action": {
>                 "operation": "publish",
>                 "subject": "source rows",
>                 "visibility": "with_acquisition"
>               }
>             }
>           ]
>         },
>         "initial": "enumeration",
>         "changes": "current_state_after_change",
>         "deletions": "explicit_events",
>         "resume": "opaque_cursor",
>         "retentionMs": null,
>         "gap": "explicit_repair",
>         "limits": {
>           "exchange_evidence_bytes": "4194304",
>           "page_records": "100",
>           "publication_page_records": "128",
>           "record_fields": "32",
>           "response_bytes": "524288"
>         },
>         "restrictions": [
>           "QuickBooks Desktop through the Web Connector, which polls the engine; records are read only while a QBWC session is open, positions advance only when a whole modified-since or deleted-object query finished, and deleted objects are reported only as long as QuickBooks keeps them"
>         ],
>         "commands": {}
>       }
>     },
>     "items": {
>       "protocol": "record_observation",
>       "coverage": "records",
>       "consistency": "observations",
>       "atomicity": "record",
>       "history": "observations",
>       "recordRefresh": false,
>       "reconciliation": false,
>       "notifications": false,
>       "snapshotMaxRows": null,
>       "profile": {
>         "movement": {
>           "exchanges": {},
>           "nativeInputLimitBytes": "0",
>           "steps": [
>             {
>               "id": "acquire.1",
>               "inputs": [],
>               "action": {
>                 "operation": "acquire",
>                 "subject": "native input",
>                 "limitBytes": "0"
>               }
>             },
>             {
>               "id": "retain.1",
>               "inputs": [
>                 "acquire.1"
>               ],
>               "action": {
>                 "operation": "retain",
>                 "subject": "acquisition evidence",
>                 "reason": "recovery",
>                 "release": "acquisition_custody"
>               }
>             },
>             {
>               "id": "interpret.1",
>               "inputs": [
>                 "retain.1"
>               ],
>               "action": {
>                 "operation": "interpret",
>                 "subject": "acquired input",
>                 "produces": "records"
>               }
>             },
>             {
>               "id": "materialize.1",
>               "inputs": [
>                 "interpret.1"
>               ],
>               "action": {
>                 "operation": "materialize",
>                 "subject": "source rows",
>                 "reason": "serving",
>                 "release": "replacement"
>               }
>             },
>             {
>               "id": "publish.1",
>               "inputs": [
>                 "materialize.1"
>               ],
>               "action": {
>                 "operation": "publish",
>                 "subject": "source rows",
>                 "visibility": "with_acquisition"
>               }
>             }
>           ]
>         },
>         "initial": "enumeration",
>         "changes": "current_state_after_change",
>         "deletions": "explicit_events",
>         "resume": "opaque_cursor",
>         "retentionMs": null,
>         "gap": "explicit_repair",
>         "limits": {
>           "exchange_evidence_bytes": "4194304",
>           "page_records": "100",
>           "publication_page_records": "128",
>           "record_fields": "32",
>           "response_bytes": "524288"
>         },
>         "restrictions": [
>           "QuickBooks Desktop through the Web Connector, which polls the engine; records are read only while a QBWC session is open, positions advance only when a whole modified-since or deleted-object query finished, and deleted objects are reported only as long as QuickBooks keeps them"
>         ],
>         "commands": {}
>       }
>     },
>     "salesReceipts": {
>       "protocol": "record_observation",
>       "coverage": "records",
>       "consistency": "observations",
>       "atomicity": "record",
>       "history": "observations",
>       "recordRefresh": false,
>       "reconciliation": false,
>       "notifications": false,
>       "snapshotMaxRows": null,
>       "profile": {
>         "movement": {
>           "exchanges": {},
>           "nativeInputLimitBytes": "0",
>           "steps": [
>             {
>               "id": "acquire.1",
>               "inputs": [],
>               "action": {
>                 "operation": "acquire",
>                 "subject": "native input",
>                 "limitBytes": "0"
>               }
>             },
>             {
>               "id": "retain.1",
>               "inputs": [
>                 "acquire.1"
>               ],
>               "action": {
>                 "operation": "retain",
>                 "subject": "acquisition evidence",
>                 "reason": "recovery",
>                 "release": "acquisition_custody"
>               }
>             },
>             {
>               "id": "interpret.1",
>               "inputs": [
>                 "retain.1"
>               ],
>               "action": {
>                 "operation": "interpret",
>                 "subject": "acquired input",
>                 "produces": "records"
>               }
>             },
>             {
>               "id": "materialize.1",
>               "inputs": [
>                 "interpret.1"
>               ],
>               "action": {
>                 "operation": "materialize",
>                 "subject": "source rows",
>                 "reason": "serving",
>                 "release": "replacement"
>               }
>             },
>             {
>               "id": "publish.1",
>               "inputs": [
>                 "materialize.1"
>               ],
>               "action": {
>                 "operation": "publish",
>                 "subject": "source rows",
>                 "visibility": "with_acquisition"
>               }
>             }
>           ]
>         },
>         "initial": "enumeration",
>         "changes": "current_state_after_change",
>         "deletions": "explicit_events",
>         "resume": "opaque_cursor",
>         "retentionMs": null,
>         "gap": "explicit_repair",
>         "limits": {
>           "exchange_evidence_bytes": "4194304",
>           "page_records": "100",
>           "publication_page_records": "128",
>           "record_fields": "32",
>           "response_bytes": "524288"
>         },
>         "restrictions": [
>           "QuickBooks Desktop through the Web Connector, which polls the engine; records are read only while a QBWC session is open, positions advance only when a whole modified-since or deleted-object query finished, and deleted objects are reported only as long as QuickBooks keeps them"
>         ],
>         "commands": {}
>       }
>     },
>     "vendors": {
>       "protocol": "record_observation",
>       "coverage": "records",
>       "consistency": "observations",
>       "atomicity": "record",
>       "history": "observations",
>       "recordRefresh": false,
>       "reconciliation": false,
>       "notifications": false,
>       "snapshotMaxRows": null,
>       "profile": {
>         "movement": {
>           "exchanges": {},
>           "nativeInputLimitBytes": "0",
>           "steps": [
>             {
>               "id": "acquire.1",
>               "inputs": [],
>               "action": {
>                 "operation": "acquire",
>                 "subject": "native input",
>                 "limitBytes": "0"
>               }
>             },
>             {
>               "id": "retain.1",
>               "inputs": [
>                 "acquire.1"
>               ],
>               "action": {
>                 "operation": "retain",
>                 "subject": "acquisition evidence",
>                 "reason": "recovery",
>                 "release": "acquisition_custody"
>               }
>             },
>             {
>               "id": "interpret.1",
>               "inputs": [
>                 "retain.1"
>               ],
>               "action": {
>                 "operation": "interpret",
>                 "subject": "acquired input",
>                 "produces": "records"
>               }
>             },
>             {
>               "id": "materialize.1",
>               "inputs": [
>                 "interpret.1"
>               ],
>               "action": {
>                 "operation": "materialize",
>                 "subject": "source rows",
>                 "reason": "serving",
>                 "release": "replacement"
>               }
>             },
>             {
>               "id": "publish.1",
>               "inputs": [
>                 "materialize.1"
>               ],
>               "action": {
>                 "operation": "publish",
>                 "subject": "source rows",
>                 "visibility": "with_acquisition"
>               }
>             }
>           ]
>         },
>         "initial": "enumeration",
>         "changes": "current_state_after_change",
>         "deletions": "explicit_events",
>         "resume": "opaque_cursor",
>         "retentionMs": null,
>         "gap": "explicit_repair",
>         "limits": {
>           "exchange_evidence_bytes": "4194304",
>           "page_records": "100",
>           "publication_page_records": "128",
>           "record_fields": "32",
>           "response_bytes": "524288"
>         },
>         "restrictions": [
>           "QuickBooks Desktop through the Web Connector, which polls the engine; records are read only while a QBWC session is open, positions advance only when a whole modified-since or deleted-object query finished, and deleted objects are reported only as long as QuickBooks keeps them"
>         ],
>         "commands": {}
>       }
>     },
>     "vouchers": {
>       "protocol": "record_observation",
>       "coverage": "records",
>       "consistency": "observations",
>       "atomicity": "record",
>       "history": "observations",
>       "recordRefresh": false,
>       "reconciliation": false,
>       "notifications": false,
>       "snapshotMaxRows": null,
>       "profile": {
>         "movement": {
>           "exchanges": {},
>           "nativeInputLimitBytes": "0",
>           "steps": [
>             {
>               "id": "acquire.1",
>               "inputs": [],
>               "action": {
>                 "operation": "acquire",
>                 "subject": "native input",
>                 "limitBytes": "0"
>               }
>             },
>             {
>               "id": "retain.1",
>               "inputs": [
>                 "acquire.1"
>               ],
>               "action": {
>                 "operation": "retain",
>                 "subject": "acquisition evidence",
>                 "reason": "recovery",
>                 "release": "acquisition_custody"
>               }
>             },
>             {
>               "id": "interpret.1",
>               "inputs": [
>                 "retain.1"
>               ],
>               "action": {
>                 "operation": "interpret",
>                 "subject": "acquired input",
>                 "produces": "records"
>               }
>             },
>             {
>               "id": "materialize.1",
>               "inputs": [
>                 "interpret.1"
>               ],
>               "action": {
>                 "operation": "materialize",
>                 "subject": "source rows",
>                 "reason": "serving",
>                 "release": "replacement"
>               }
>             },
>             {
>               "id": "publish.1",
>               "inputs": [
>                 "materialize.1"
>               ],
>               "action": {
>                 "operation": "publish",
>                 "subject": "source rows",
>                 "visibility": "with_acquisition"
>               }
>             }
>           ]
>         },
>         "initial": "enumeration",
>         "changes": "current_state_after_change",
>         "deletions": "explicit_events",
>         "resume": "opaque_cursor",
>         "retentionMs": null,
>         "gap": "explicit_repair",
>         "limits": {
>           "exchange_evidence_bytes": "4194304",
>           "page_records": "100",
>           "publication_page_records": "128",
>           "record_fields": "32",
>           "response_bytes": "524288"
>         },
>         "restrictions": [
>           "QuickBooks Desktop through the Web Connector, which polls the engine; records are read only while a QBWC session is open, positions advance only when a whole modified-since or deleted-object query finished, and deleted objects are reported only as long as QuickBooks keeps them"
>         ],
>         "commands": {}
>       }
>     }
>   },
>   "occurrences": null,
>   "artifacts": {
>     "raw_archive": false,
>     "native_file_transfer_limit_bytes": null,
>     "external_versions": false,
>     "files": {}
>   },
>   "commands": {}
> }
> ```

**Recorded checks**

| Requirement | Scope | Evidence | Result |
| - | - | - | - |
| page-publication-recovery | \{"kind":"collection","name":"customers"} | Native test: integrations/native\_records/qbwc\_sessions\_retain\_each\_response\_before\_answering\_then\_publish (shared\_engine) | Execution result unavailable |
| page-publication-recovery | \{"kind":"collection","name":"customers"} | Native test: integrations/native\_records/qbwc\_sessions\_are\_fenced\_and\_failures\_are\_typed (shared\_engine) | Execution result unavailable |
| page-publication-recovery | \{"kind":"collection","name":"inventoryAdjustments"} | Native test: integrations/native\_records/qbwc\_sessions\_retain\_each\_response\_before\_answering\_then\_publish (shared\_engine) | Execution result unavailable |
| page-publication-recovery | \{"kind":"collection","name":"inventoryAdjustments"} | Native test: integrations/native\_records/qbwc\_sessions\_are\_fenced\_and\_failures\_are\_typed (shared\_engine) | Execution result unavailable |
| page-publication-recovery | \{"kind":"collection","name":"items"} | Native test: integrations/native\_records/qbwc\_sessions\_retain\_each\_response\_before\_answering\_then\_publish (shared\_engine) | Execution result unavailable |
| page-publication-recovery | \{"kind":"collection","name":"items"} | Native test: integrations/native\_records/qbwc\_sessions\_are\_fenced\_and\_failures\_are\_typed (shared\_engine) | Execution result unavailable |
| page-publication-recovery | \{"kind":"collection","name":"salesReceipts"} | Native test: integrations/native\_records/qbwc\_sessions\_retain\_each\_response\_before\_answering\_then\_publish (shared\_engine) | Execution result unavailable |
| page-publication-recovery | \{"kind":"collection","name":"salesReceipts"} | Native test: integrations/native\_records/qbwc\_sessions\_are\_fenced\_and\_failures\_are\_typed (shared\_engine) | Execution result unavailable |
| page-publication-recovery | \{"kind":"collection","name":"vendors"} | Native test: integrations/native\_records/qbwc\_sessions\_retain\_each\_response\_before\_answering\_then\_publish (shared\_engine) | Execution result unavailable |
| page-publication-recovery | \{"kind":"collection","name":"vendors"} | Native test: integrations/native\_records/qbwc\_sessions\_are\_fenced\_and\_failures\_are\_typed (shared\_engine) | Execution result unavailable |
| page-publication-recovery | \{"kind":"collection","name":"vouchers"} | Native test: integrations/native\_records/qbwc\_sessions\_retain\_each\_response\_before\_answering\_then\_publish (shared\_engine) | Execution result unavailable |
| page-publication-recovery | \{"kind":"collection","name":"vouchers"} | Native test: integrations/native\_records/qbwc\_sessions\_are\_fenced\_and\_failures\_are\_typed (shared\_engine) | Execution result unavailable |
| group-publication-recovery | \{"kind":"group"} | Native test: integrations/native\_records/qbwc\_sessions\_retain\_each\_response\_before\_answering\_then\_publish (shared\_engine) | Execution result unavailable |
| group-publication-recovery | \{"kind":"group"} | Native test: integrations/native\_records/qbwc\_sessions\_are\_fenced\_and\_failures\_are\_typed (shared\_engine) | Execution result unavailable |

Hosted qualification: **unestablished for this catalog configuration**. Installed connections report their own identity, authority and current status.

#### Configuration: inventory

Case: `quickbooks-pos/company/sync/inventory`.

Connection and resource configuration are declared by this exact case.

Credential kind: `qbwc`. Keep credential material in the private credential inventory.

| Setting | Type | Required | Owner |
| - | - | - | - |
| `username` | string | Yes | Shared connection |
| `companyFile` | string or null | No | Shared connection |
| `runEveryMinutes` | number or null | No | Shared connection |

> **Complete configuration contract**
>
> ```json theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
> {
>   "setup": [],
>   "resource": {
>     "access": {},
>     "defaults": {},
>     "connector": "qbwc",
>     "output": {
>       "kind": "group",
>       "collections": [
>         "inventoryAdjustments",
>         "items",
>         "salesReceipts",
>         "vouchers"
>       ]
>     },
>     "credential_kind": "qbwc",
>     "connection_fields": [
>       "username",
>       "companyFile",
>       "runEveryMinutes"
>     ]
>   },
>   "connection_setup": {
>     "type": "object",
>     "value": {
>       "username": {
>         "fieldType": {
>           "type": "string"
>         },
>         "optional": false
>       },
>       "companyFile": {
>         "fieldType": {
>           "type": "union",
>           "value": [
>             {
>               "type": "string"
>             },
>             {
>               "type": "null"
>             }
>           ]
>         },
>         "optional": true
>       },
>       "runEveryMinutes": {
>         "fieldType": {
>           "type": "union",
>           "value": [
>             {
>               "type": "number"
>             },
>             {
>               "type": "null"
>             }
>           ]
>         },
>         "optional": true
>       }
>     }
>   },
>   "execution": null
> }
> ```

Native admission analysis is available for this exact declaration.

**Collection: inventoryAdjustments**

| Contract | Meaning |
| - | - |
| Initial | Enumeration of observed records |
| Changes | Current record read after a change indication |
| Deletions | Explicit deletion evidence |
| Resume | Opaque cursor |
| Gap | Explicit repair required after a gap |
| Retention | Unspecified |

> **Complete native profile**
>
> ```json theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
> {
>   "movement": {
>     "exchanges": {},
>     "nativeInputLimitBytes": "0",
>     "steps": [
>       {
>         "id": "acquire.1",
>         "inputs": [],
>         "action": {
>           "operation": "acquire",
>           "subject": "native input",
>           "limitBytes": "0"
>         }
>       },
>       {
>         "id": "retain.1",
>         "inputs": [
>           "acquire.1"
>         ],
>         "action": {
>           "operation": "retain",
>           "subject": "acquisition evidence",
>           "reason": "recovery",
>           "release": "acquisition_custody"
>         }
>       },
>       {
>         "id": "interpret.1",
>         "inputs": [
>           "retain.1"
>         ],
>         "action": {
>           "operation": "interpret",
>           "subject": "acquired input",
>           "produces": "records"
>         }
>       },
>       {
>         "id": "materialize.1",
>         "inputs": [
>           "interpret.1"
>         ],
>         "action": {
>           "operation": "materialize",
>           "subject": "source rows",
>           "reason": "serving",
>           "release": "replacement"
>         }
>       },
>       {
>         "id": "publish.1",
>         "inputs": [
>           "materialize.1"
>         ],
>         "action": {
>           "operation": "publish",
>           "subject": "source rows",
>           "visibility": "with_acquisition"
>         }
>       }
>     ]
>   },
>   "initial": "enumeration",
>   "changes": "current_state_after_change",
>   "deletions": "explicit_events",
>   "resume": "opaque_cursor",
>   "retentionMs": null,
>   "gap": "explicit_repair",
>   "limits": {
>     "exchange_evidence_bytes": "4194304",
>     "page_records": "100",
>     "publication_page_records": "128",
>     "record_fields": "32",
>     "response_bytes": "262144"
>   },
>   "restrictions": [
>     "QuickBooks Desktop through the Web Connector, which polls the engine; records are read only while a QBWC session is open, positions advance only when a whole modified-since or deleted-object query finished, and deleted objects are reported only as long as QuickBooks keeps them"
>   ],
>   "commands": {}
> }
> ```

**Collection: items**

| Contract | Meaning |
| - | - |
| Initial | Enumeration of observed records |
| Changes | Current record read after a change indication |
| Deletions | Explicit deletion evidence |
| Resume | Opaque cursor |
| Gap | Explicit repair required after a gap |
| Retention | Unspecified |

> **Complete native profile**
>
> ```json theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
> {
>   "movement": {
>     "exchanges": {},
>     "nativeInputLimitBytes": "0",
>     "steps": [
>       {
>         "id": "acquire.1",
>         "inputs": [],
>         "action": {
>           "operation": "acquire",
>           "subject": "native input",
>           "limitBytes": "0"
>         }
>       },
>       {
>         "id": "retain.1",
>         "inputs": [
>           "acquire.1"
>         ],
>         "action": {
>           "operation": "retain",
>           "subject": "acquisition evidence",
>           "reason": "recovery",
>           "release": "acquisition_custody"
>         }
>       },
>       {
>         "id": "interpret.1",
>         "inputs": [
>           "retain.1"
>         ],
>         "action": {
>           "operation": "interpret",
>           "subject": "acquired input",
>           "produces": "records"
>         }
>       },
>       {
>         "id": "materialize.1",
>         "inputs": [
>           "interpret.1"
>         ],
>         "action": {
>           "operation": "materialize",
>           "subject": "source rows",
>           "reason": "serving",
>           "release": "replacement"
>         }
>       },
>       {
>         "id": "publish.1",
>         "inputs": [
>           "materialize.1"
>         ],
>         "action": {
>           "operation": "publish",
>           "subject": "source rows",
>           "visibility": "with_acquisition"
>         }
>       }
>     ]
>   },
>   "initial": "enumeration",
>   "changes": "current_state_after_change",
>   "deletions": "explicit_events",
>   "resume": "opaque_cursor",
>   "retentionMs": null,
>   "gap": "explicit_repair",
>   "limits": {
>     "exchange_evidence_bytes": "4194304",
>     "page_records": "100",
>     "publication_page_records": "128",
>     "record_fields": "32",
>     "response_bytes": "262144"
>   },
>   "restrictions": [
>     "QuickBooks Desktop through the Web Connector, which polls the engine; records are read only while a QBWC session is open, positions advance only when a whole modified-since or deleted-object query finished, and deleted objects are reported only as long as QuickBooks keeps them"
>   ],
>   "commands": {}
> }
> ```

**Collection: salesReceipts**

| Contract | Meaning |
| - | - |
| Initial | Enumeration of observed records |
| Changes | Current record read after a change indication |
| Deletions | Explicit deletion evidence |
| Resume | Opaque cursor |
| Gap | Explicit repair required after a gap |
| Retention | Unspecified |

> **Complete native profile**
>
> ```json theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
> {
>   "movement": {
>     "exchanges": {},
>     "nativeInputLimitBytes": "0",
>     "steps": [
>       {
>         "id": "acquire.1",
>         "inputs": [],
>         "action": {
>           "operation": "acquire",
>           "subject": "native input",
>           "limitBytes": "0"
>         }
>       },
>       {
>         "id": "retain.1",
>         "inputs": [
>           "acquire.1"
>         ],
>         "action": {
>           "operation": "retain",
>           "subject": "acquisition evidence",
>           "reason": "recovery",
>           "release": "acquisition_custody"
>         }
>       },
>       {
>         "id": "interpret.1",
>         "inputs": [
>           "retain.1"
>         ],
>         "action": {
>           "operation": "interpret",
>           "subject": "acquired input",
>           "produces": "records"
>         }
>       },
>       {
>         "id": "materialize.1",
>         "inputs": [
>           "interpret.1"
>         ],
>         "action": {
>           "operation": "materialize",
>           "subject": "source rows",
>           "reason": "serving",
>           "release": "replacement"
>         }
>       },
>       {
>         "id": "publish.1",
>         "inputs": [
>           "materialize.1"
>         ],
>         "action": {
>           "operation": "publish",
>           "subject": "source rows",
>           "visibility": "with_acquisition"
>         }
>       }
>     ]
>   },
>   "initial": "enumeration",
>   "changes": "current_state_after_change",
>   "deletions": "explicit_events",
>   "resume": "opaque_cursor",
>   "retentionMs": null,
>   "gap": "explicit_repair",
>   "limits": {
>     "exchange_evidence_bytes": "4194304",
>     "page_records": "100",
>     "publication_page_records": "128",
>     "record_fields": "32",
>     "response_bytes": "262144"
>   },
>   "restrictions": [
>     "QuickBooks Desktop through the Web Connector, which polls the engine; records are read only while a QBWC session is open, positions advance only when a whole modified-since or deleted-object query finished, and deleted objects are reported only as long as QuickBooks keeps them"
>   ],
>   "commands": {}
> }
> ```

**Collection: vouchers**

| Contract | Meaning |
| - | - |
| Initial | Enumeration of observed records |
| Changes | Current record read after a change indication |
| Deletions | Explicit deletion evidence |
| Resume | Opaque cursor |
| Gap | Explicit repair required after a gap |
| Retention | Unspecified |

> **Complete native profile**
>
> ```json theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
> {
>   "movement": {
>     "exchanges": {},
>     "nativeInputLimitBytes": "0",
>     "steps": [
>       {
>         "id": "acquire.1",
>         "inputs": [],
>         "action": {
>           "operation": "acquire",
>           "subject": "native input",
>           "limitBytes": "0"
>         }
>       },
>       {
>         "id": "retain.1",
>         "inputs": [
>           "acquire.1"
>         ],
>         "action": {
>           "operation": "retain",
>           "subject": "acquisition evidence",
>           "reason": "recovery",
>           "release": "acquisition_custody"
>         }
>       },
>       {
>         "id": "interpret.1",
>         "inputs": [
>           "retain.1"
>         ],
>         "action": {
>           "operation": "interpret",
>           "subject": "acquired input",
>           "produces": "records"
>         }
>       },
>       {
>         "id": "materialize.1",
>         "inputs": [
>           "interpret.1"
>         ],
>         "action": {
>           "operation": "materialize",
>           "subject": "source rows",
>           "reason": "serving",
>           "release": "replacement"
>         }
>       },
>       {
>         "id": "publish.1",
>         "inputs": [
>           "materialize.1"
>         ],
>         "action": {
>           "operation": "publish",
>           "subject": "source rows",
>           "visibility": "with_acquisition"
>         }
>       }
>     ]
>   },
>   "initial": "enumeration",
>   "changes": "current_state_after_change",
>   "deletions": "explicit_events",
>   "resume": "opaque_cursor",
>   "retentionMs": null,
>   "gap": "explicit_repair",
>   "limits": {
>     "exchange_evidence_bytes": "4194304",
>     "page_records": "100",
>     "publication_page_records": "128",
>     "record_fields": "32",
>     "response_bytes": "262144"
>   },
>   "restrictions": [
>     "QuickBooks Desktop through the Web Connector, which polls the engine; records are read only while a QBWC session is open, positions advance only when a whole modified-since or deleted-object query finished, and deleted objects are reported only as long as QuickBooks keeps them"
>   ],
>   "commands": {}
> }
> ```

> **Commands, occurrences and artifacts**
>
> ```json theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
> {
>   "records": {
>     "inventoryAdjustments": {
>       "protocol": "record_observation",
>       "coverage": "records",
>       "consistency": "observations",
>       "atomicity": "record",
>       "history": "observations",
>       "recordRefresh": false,
>       "reconciliation": false,
>       "notifications": false,
>       "snapshotMaxRows": null,
>       "profile": {
>         "movement": {
>           "exchanges": {},
>           "nativeInputLimitBytes": "0",
>           "steps": [
>             {
>               "id": "acquire.1",
>               "inputs": [],
>               "action": {
>                 "operation": "acquire",
>                 "subject": "native input",
>                 "limitBytes": "0"
>               }
>             },
>             {
>               "id": "retain.1",
>               "inputs": [
>                 "acquire.1"
>               ],
>               "action": {
>                 "operation": "retain",
>                 "subject": "acquisition evidence",
>                 "reason": "recovery",
>                 "release": "acquisition_custody"
>               }
>             },
>             {
>               "id": "interpret.1",
>               "inputs": [
>                 "retain.1"
>               ],
>               "action": {
>                 "operation": "interpret",
>                 "subject": "acquired input",
>                 "produces": "records"
>               }
>             },
>             {
>               "id": "materialize.1",
>               "inputs": [
>                 "interpret.1"
>               ],
>               "action": {
>                 "operation": "materialize",
>                 "subject": "source rows",
>                 "reason": "serving",
>                 "release": "replacement"
>               }
>             },
>             {
>               "id": "publish.1",
>               "inputs": [
>                 "materialize.1"
>               ],
>               "action": {
>                 "operation": "publish",
>                 "subject": "source rows",
>                 "visibility": "with_acquisition"
>               }
>             }
>           ]
>         },
>         "initial": "enumeration",
>         "changes": "current_state_after_change",
>         "deletions": "explicit_events",
>         "resume": "opaque_cursor",
>         "retentionMs": null,
>         "gap": "explicit_repair",
>         "limits": {
>           "exchange_evidence_bytes": "4194304",
>           "page_records": "100",
>           "publication_page_records": "128",
>           "record_fields": "32",
>           "response_bytes": "262144"
>         },
>         "restrictions": [
>           "QuickBooks Desktop through the Web Connector, which polls the engine; records are read only while a QBWC session is open, positions advance only when a whole modified-since or deleted-object query finished, and deleted objects are reported only as long as QuickBooks keeps them"
>         ],
>         "commands": {}
>       }
>     },
>     "items": {
>       "protocol": "record_observation",
>       "coverage": "records",
>       "consistency": "observations",
>       "atomicity": "record",
>       "history": "observations",
>       "recordRefresh": false,
>       "reconciliation": false,
>       "notifications": false,
>       "snapshotMaxRows": null,
>       "profile": {
>         "movement": {
>           "exchanges": {},
>           "nativeInputLimitBytes": "0",
>           "steps": [
>             {
>               "id": "acquire.1",
>               "inputs": [],
>               "action": {
>                 "operation": "acquire",
>                 "subject": "native input",
>                 "limitBytes": "0"
>               }
>             },
>             {
>               "id": "retain.1",
>               "inputs": [
>                 "acquire.1"
>               ],
>               "action": {
>                 "operation": "retain",
>                 "subject": "acquisition evidence",
>                 "reason": "recovery",
>                 "release": "acquisition_custody"
>               }
>             },
>             {
>               "id": "interpret.1",
>               "inputs": [
>                 "retain.1"
>               ],
>               "action": {
>                 "operation": "interpret",
>                 "subject": "acquired input",
>                 "produces": "records"
>               }
>             },
>             {
>               "id": "materialize.1",
>               "inputs": [
>                 "interpret.1"
>               ],
>               "action": {
>                 "operation": "materialize",
>                 "subject": "source rows",
>                 "reason": "serving",
>                 "release": "replacement"
>               }
>             },
>             {
>               "id": "publish.1",
>               "inputs": [
>                 "materialize.1"
>               ],
>               "action": {
>                 "operation": "publish",
>                 "subject": "source rows",
>                 "visibility": "with_acquisition"
>               }
>             }
>           ]
>         },
>         "initial": "enumeration",
>         "changes": "current_state_after_change",
>         "deletions": "explicit_events",
>         "resume": "opaque_cursor",
>         "retentionMs": null,
>         "gap": "explicit_repair",
>         "limits": {
>           "exchange_evidence_bytes": "4194304",
>           "page_records": "100",
>           "publication_page_records": "128",
>           "record_fields": "32",
>           "response_bytes": "262144"
>         },
>         "restrictions": [
>           "QuickBooks Desktop through the Web Connector, which polls the engine; records are read only while a QBWC session is open, positions advance only when a whole modified-since or deleted-object query finished, and deleted objects are reported only as long as QuickBooks keeps them"
>         ],
>         "commands": {}
>       }
>     },
>     "salesReceipts": {
>       "protocol": "record_observation",
>       "coverage": "records",
>       "consistency": "observations",
>       "atomicity": "record",
>       "history": "observations",
>       "recordRefresh": false,
>       "reconciliation": false,
>       "notifications": false,
>       "snapshotMaxRows": null,
>       "profile": {
>         "movement": {
>           "exchanges": {},
>           "nativeInputLimitBytes": "0",
>           "steps": [
>             {
>               "id": "acquire.1",
>               "inputs": [],
>               "action": {
>                 "operation": "acquire",
>                 "subject": "native input",
>                 "limitBytes": "0"
>               }
>             },
>             {
>               "id": "retain.1",
>               "inputs": [
>                 "acquire.1"
>               ],
>               "action": {
>                 "operation": "retain",
>                 "subject": "acquisition evidence",
>                 "reason": "recovery",
>                 "release": "acquisition_custody"
>               }
>             },
>             {
>               "id": "interpret.1",
>               "inputs": [
>                 "retain.1"
>               ],
>               "action": {
>                 "operation": "interpret",
>                 "subject": "acquired input",
>                 "produces": "records"
>               }
>             },
>             {
>               "id": "materialize.1",
>               "inputs": [
>                 "interpret.1"
>               ],
>               "action": {
>                 "operation": "materialize",
>                 "subject": "source rows",
>                 "reason": "serving",
>                 "release": "replacement"
>               }
>             },
>             {
>               "id": "publish.1",
>               "inputs": [
>                 "materialize.1"
>               ],
>               "action": {
>                 "operation": "publish",
>                 "subject": "source rows",
>                 "visibility": "with_acquisition"
>               }
>             }
>           ]
>         },
>         "initial": "enumeration",
>         "changes": "current_state_after_change",
>         "deletions": "explicit_events",
>         "resume": "opaque_cursor",
>         "retentionMs": null,
>         "gap": "explicit_repair",
>         "limits": {
>           "exchange_evidence_bytes": "4194304",
>           "page_records": "100",
>           "publication_page_records": "128",
>           "record_fields": "32",
>           "response_bytes": "262144"
>         },
>         "restrictions": [
>           "QuickBooks Desktop through the Web Connector, which polls the engine; records are read only while a QBWC session is open, positions advance only when a whole modified-since or deleted-object query finished, and deleted objects are reported only as long as QuickBooks keeps them"
>         ],
>         "commands": {}
>       }
>     },
>     "vouchers": {
>       "protocol": "record_observation",
>       "coverage": "records",
>       "consistency": "observations",
>       "atomicity": "record",
>       "history": "observations",
>       "recordRefresh": false,
>       "reconciliation": false,
>       "notifications": false,
>       "snapshotMaxRows": null,
>       "profile": {
>         "movement": {
>           "exchanges": {},
>           "nativeInputLimitBytes": "0",
>           "steps": [
>             {
>               "id": "acquire.1",
>               "inputs": [],
>               "action": {
>                 "operation": "acquire",
>                 "subject": "native input",
>                 "limitBytes": "0"
>               }
>             },
>             {
>               "id": "retain.1",
>               "inputs": [
>                 "acquire.1"
>               ],
>               "action": {
>                 "operation": "retain",
>                 "subject": "acquisition evidence",
>                 "reason": "recovery",
>                 "release": "acquisition_custody"
>               }
>             },
>             {
>               "id": "interpret.1",
>               "inputs": [
>                 "retain.1"
>               ],
>               "action": {
>                 "operation": "interpret",
>                 "subject": "acquired input",
>                 "produces": "records"
>               }
>             },
>             {
>               "id": "materialize.1",
>               "inputs": [
>                 "interpret.1"
>               ],
>               "action": {
>                 "operation": "materialize",
>                 "subject": "source rows",
>                 "reason": "serving",
>                 "release": "replacement"
>               }
>             },
>             {
>               "id": "publish.1",
>               "inputs": [
>                 "materialize.1"
>               ],
>               "action": {
>                 "operation": "publish",
>                 "subject": "source rows",
>                 "visibility": "with_acquisition"
>               }
>             }
>           ]
>         },
>         "initial": "enumeration",
>         "changes": "current_state_after_change",
>         "deletions": "explicit_events",
>         "resume": "opaque_cursor",
>         "retentionMs": null,
>         "gap": "explicit_repair",
>         "limits": {
>           "exchange_evidence_bytes": "4194304",
>           "page_records": "100",
>           "publication_page_records": "128",
>           "record_fields": "32",
>           "response_bytes": "262144"
>         },
>         "restrictions": [
>           "QuickBooks Desktop through the Web Connector, which polls the engine; records are read only while a QBWC session is open, positions advance only when a whole modified-since or deleted-object query finished, and deleted objects are reported only as long as QuickBooks keeps them"
>         ],
>         "commands": {}
>       }
>     }
>   },
>   "occurrences": null,
>   "artifacts": {
>     "raw_archive": false,
>     "native_file_transfer_limit_bytes": null,
>     "external_versions": false,
>     "files": {}
>   },
>   "commands": {}
> }
> ```

**Recorded checks**

| Requirement | Scope | Evidence | Result |
| - | - | - | - |
| page-publication-recovery | \{"kind":"collection","name":"inventoryAdjustments"} | Native test: integrations/native\_records/qbwc\_sessions\_retain\_each\_response\_before\_answering\_then\_publish (shared\_engine) | Execution result unavailable |
| page-publication-recovery | \{"kind":"collection","name":"inventoryAdjustments"} | Native test: integrations/native\_records/qbwc\_sessions\_are\_fenced\_and\_failures\_are\_typed (shared\_engine) | Execution result unavailable |
| page-publication-recovery | \{"kind":"collection","name":"items"} | Native test: integrations/native\_records/qbwc\_sessions\_retain\_each\_response\_before\_answering\_then\_publish (shared\_engine) | Execution result unavailable |
| page-publication-recovery | \{"kind":"collection","name":"items"} | Native test: integrations/native\_records/qbwc\_sessions\_are\_fenced\_and\_failures\_are\_typed (shared\_engine) | Execution result unavailable |
| page-publication-recovery | \{"kind":"collection","name":"salesReceipts"} | Native test: integrations/native\_records/qbwc\_sessions\_retain\_each\_response\_before\_answering\_then\_publish (shared\_engine) | Execution result unavailable |
| page-publication-recovery | \{"kind":"collection","name":"salesReceipts"} | Native test: integrations/native\_records/qbwc\_sessions\_are\_fenced\_and\_failures\_are\_typed (shared\_engine) | Execution result unavailable |
| page-publication-recovery | \{"kind":"collection","name":"vouchers"} | Native test: integrations/native\_records/qbwc\_sessions\_retain\_each\_response\_before\_answering\_then\_publish (shared\_engine) | Execution result unavailable |
| page-publication-recovery | \{"kind":"collection","name":"vouchers"} | Native test: integrations/native\_records/qbwc\_sessions\_are\_fenced\_and\_failures\_are\_typed (shared\_engine) | Execution result unavailable |
| group-publication-recovery | \{"kind":"group"} | Native test: integrations/native\_records/qbwc\_sessions\_retain\_each\_response\_before\_answering\_then\_publish (shared\_engine) | Execution result unavailable |
| group-publication-recovery | \{"kind":"group"} | Native test: integrations/native\_records/qbwc\_sessions\_are\_fenced\_and\_failures\_are\_typed (shared\_engine) | Execution result unavailable |

Hosted qualification: **unestablished for this catalog configuration**. Installed connections report their own identity, authority and current status.

## Provider guidance

Compiled declaration examples and configuration details are published in the [connector reference](https://docs.bijection.com/integrations/connectors/index).

Reads one QuickBooks Desktop Point of Sale company through the QuickBooks Web
Connector (QBWC), on the platform's native `qbwc` transport. Intuit
discontinued Point of Sale 19.0 on 2023-10-03 together with its connected
services (Payments, gift cards, Mobile Sync, live support); installations still
run without them and without security patches, and QBWC still serves `QBPOS`
applications. For QuickBooks Desktop accounting use
[`quickbooks-desktop`](https://github.com/bijectionhq/component-support/blob/b632604330ce9cbcfe17a5a680ef4fbe80f6f672/packages/connectors/src/connectors/quickbooks-desktop/README.md); for the cloud API use
[`quickbooks`](https://github.com/bijectionhq/component-support/blob/b632604330ce9cbcfe17a5a680ef4fbe80f6f672/packages/connectors/src/connectors/quickbooks/README.md). QBWC, installed beside Point of Sale
on the store's Windows machine, connects out over HTTPS to the deployment on a
schedule and is handed qbposXML requests. Nothing is dialled.

`company.sync` declares one atomic group: one QBWC session reads every
selected collection in turn and publishes each to its own table.

| Collection | qbposXML entity | Notes |
| - | - | - |
| `customers` | `Customer` | deletions read; addresses as objects |
| `vendors` | `Vendor` | deletions read |
| `items` | `ItemInventory` | deletions read; on-hand quantities |
| `salesReceipts` | `SalesReceipt` | `items`, one list per tender kind |
| `vouchers` | `Voucher` | receiving vouchers; `items` |
| `inventoryAdjustments` | `InventoryQtyAdjustment` | `items` |

`collections` selects a subset (all six by default). qbposXML is text: every
scalar publishes as Point of Sale's own string, an aggregate as an object, an
item or tender list as an array, and an element Point of Sale did not return
as null. `maxResponseBytes` bounds one retained response (512 KiB by default,
at most 640 KiB); `every` (15 minutes by default) only bounds how long
acquisition waits if the wake a retained response sends is lost. QBWC's own poll
interval is the `.qwc` file's.

**Inventory.** `items` publishes `quantityOnHand` and the other quantities as
Point of Sale states them when the item record changes. Intuit's qbposXML
reference for `ItemInventoryQuery` says quantity changes made by other
transactions do not move an item's `TimeModified`, so a modified-since read
does not see them: a published on-hand quantity can lag, and the movements
themselves are the `salesReceipts`, `vouchers` and `inventoryAdjustments`
collections. Per-store on-hand quantities are `OnHandStore01` to
`OnHandStore20` in the item; a custom declaration on the transport can name
them.

## Setup

1. Bind the connection: typed setup holds the QBWC `username`, optionally a
   pinned `companyFile` (compared with the `strCompanyFileName` QBWC states
   when a session opens; what Point of Sale reports there is not documented,
   so pin it only to the value a first session recorded) and
   `runEveryMinutes` (15 by default).
2. Install the credential (`quickbooksPos.credential`, kind `qbwc`): its
   `password` is a secret of at least sixteen characters that the operator
   generates and types into QBWC once.
3. After the source's first acquisition has minted its route, issue the `.qwc`
   file with `POST /api/integrations/qbwc-setup` (`Deploy` authority, body
   `{source, url}`). Its `QBType` is `QBPOS`. QBWC requires HTTPS except to
   localhost.
4. With the Point of Sale company open, add the `.qwc` file in QBWC, grant
   access when Point of Sale asks, and enter the password.

US edition only: the session negotiates qbposXML 2.0 through 4.0.

## What a session does

Per collection, in name order, the host asks for the records modified at or
after the collection's confirmed position (every record on the first read),
then, for customers, vendors and items, the deleted objects since its deletion
position (`ListDeletedQuery`, one `ListDelType` each). qbposXML has no
iterator, so a query asks its whole window at once; an answer over
`maxResponseBytes` is not retained, and the query is asked again over the
earlier half of its window until an answer fits, each finished window moving
the position past it. Each response is retained before QBWC is answered, then
published keyed by `ListID`/`TxnID` and versioned by `TimeModified`
(qbposXML has no `EditSequence`). qbposXML reports no deletion of a posted
sales receipt, voucher or adjustment (only held documents are deleted), so
those collections read no deletions. No coverage is claimed.

Interrupted sessions, `busy`, failures and the read-only scope behave as in
[`quickbooks-desktop`](https://github.com/bijectionhq/component-support/blob/b632604330ce9cbcfe17a5a680ef4fbe80f6f672/packages/connectors/src/connectors/quickbooks-desktop/README.md#what-a-session-does).

Nothing here has reached QuickBooks Point of Sale or a real QuickBooks Web
Connector. The shared transport's histories run against a controlled QuickBooks
Desktop company file; the qbposXML session is unit-tested against a controlled
Point of Sale company; neither exercises this declaration's field paths.

## Provider references

Provider references and prerequisites are maintained in the connector guidance above. No separate provider-documentation review date is recorded.

## Source and evidence

[Canonical connector source](https://github.com/bijectionhq/component-support/blob/b632604330ce9cbcfe17a5a680ef4fbe80f6f672/packages/connectors/src/connectors/quickbooks-pos/README.md), [native analysis](https://github.com/bijectionhq/component-support/blob/b632604330ce9cbcfe17a5a680ef4fbe80f6f672/packages/connectors/contract-analysis.json) and [check receipts](https://github.com/bijectionhq/component-support/blob/b632604330ce9cbcfe17a5a680ef4fbe80f6f672/packages/connectors/evidence.json).

Connector artifact: `905888ea276a2a28e36981a79e8142b2547ea451c3e63162cb6915ad4a7d1305`.

The resource declaration examples above are compiled and compared with exact catalog declarations. Recorded checks apply only to their source, declaration and runtime identities. Configure a connection and inspect its status to establish deployment-specific readiness.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.