A PHP library to help with parsing and generating QBXML for Quickbooks Desktop

Maintainers

👁 IanSimpson

Package info

github.com/thelogicstudio/QBXML

pkg:composer/thelogicstudio/qbxml

Statistics

Installs: 27

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 0

v1.0.3 2024-02-22 03:18 UTC

Requires

Requires (Dev)

None

Suggests

None

Provides

None

Conflicts

None

Replaces

None

EPL-1.0 5083d12ccb61570a9acff3665f34e6f2955e09b8

  • The Logic Studio <hello.woop@logicstudio.nz>
  • Ian Simpson <ian.woop@logicstudio.nz>

This package is auto-updated.

Last update: 2026-06-22 08:33:52 UTC


README

This is a simple set of classes to assist in parsing and creating QBXML for communicating with Quickbooks Desktop (probably through the Quickbooks Web Connector). A lot of this is based on Keith Palmer's prior work. My take on it lets you integrate your own application logic - this library just deals with the QBXML parsing. This also adds namespacing, method chaining, and fixes a number of bugs and inconsistencies in Keith's work.

Usage

Parsing

Reading a QBXML response might look something like this:

$doc = (new \TheLogicStudio\QBXML\XML\Parser($response))->parse($errnum, $errmsg);
$root = $doc->getRoot();
$out = [];
foreach($root->getChildAt('QBXML QBXMLMsgsRs')->children() as $child) {
 if(str_ends_with($child->name(), 'QueryRs')) {
 /** @var Models\GenericObject $class */
 $class = '\\TheLogicStudio\\QBXML\\Models\\'.substr($child->name(), 0, -7);
 foreach($child->children() as $node) {
 $out[] = $class::fromXML($node);
 }
 }
}

Creating

And creating a request to send to Quickbooks might look like this:

$qbxml = (new \TheLogicStudio\QBXML\Models\Account())
 ->setName('My Account')
 ->setAccountNumber(99)
 ->asQBXML('AccountAddRq');

Contributing

This code is far from perfect - if you'd like to help make it better, feel free to send a pull request on through. You can find me on 𝕏 as @IanTLS if you've got questions I guess.