Sage Intacct Mock Server

Drop-in replacement for the Sage Intacct XML Gateway used by prendio-job-workers. No database — all state is stored in JSON files.

Connection details (use these in Prendio config)

Prendio config keyValue
sage.request.webservice.urlhttps://www.sage.mocked.site/ia/xml/xmlgw.phtml
sage.request.webservice.senderId (<control><senderid>)prendio-sage-mock
sage.request.webservice.password (<control><password>)prendio-sage-mock-sender-pw
sageCompanyId (<login><companyid>)PRENDIO-DEV
sageUserId (<login><userid>)xmlgateway
sagePassword (<login><password>)prendio-sage-mock-login-pw
sageLocationId (<login><locationid>)(none)
Auth requiredYES

Any path on this host that receives a POST is treated as the gateway, so the URL can mimic the real /ia/xml/xmlgw.phtml.

Credentials & settings

Saved to data/config.json.

Bills / AP bills (1)

RECORDNOInvoice (RECORDID)VendorAmountStatusPaymentActions
48272 INV-LIVE-SAGE-1001 301535 500.00 USD Pmt #477033
Check 56007 · 06/15/2026

Dummy master data

Vendors (5)

IDNameTermActive
301535ADVANCED CLINICAL LLCN30active
301536ABC LABORATORIES INCN30active
301537GLOBAL SCIENTIFIC SUPPLY CON45active
301538NORTHWIND PHARMA SERVICESNet 60active
301539OBSOLETE VENDORN30inactive

GL accounts (5)

NoTitleActive
1000Cash - Operatingactive
2000Accounts Payableactive
6500Lab Supplies Expenseactive
6700Outside Consultingactive
9999Deleted Accountinactive

Departments (5)

IDTitle
D100Research & Development
D200Marketing
D300Finance
D400Operations
D500Quality Assurance

Projects (5)

IDName
P-1001CapEx Cafe Project
P-1002R&D General
P-1003Marketing Campaign 2024
P-1004Operations Overhead
P-1005Clinical Trial Phase II

Locations (5)

IDNameCur
100United States HQUSD
200CanadaCAD
300United KingdomGBP
400GermanyEUR
500Inactive SiteUSD

Classes (5) & Terms (5)

ClassTerm
C-100 DirectN30
C-200 IndirectN45
C-300 OverheadNet 60
C-400 Capital2/10 Net 30
C-500 OtherDue on Receipt

Edit lib/seed.php to change the catalog.

Request log (5 most recent, max 300)

TimeFunctionObjectAuthResultDetail
2026-06-15T20:16:57+00:00 query APPYMT OK success
view XML
<?xml version="1.0" encoding="UTF-8"?>
<request><control><senderid>****</senderid><password>****</password><controlid>1</controlid><uniqueid>false</uniqueid><dtdversion>3.0</dtdversion></control><operation><authentication><login><userid>xmlgateway</userid><companyid>PRENDIO-DEV</companyid><password>****</password></login></authentication><content><function controlid="p1"><query><object>APPYMT</object><select><field>TOTALPAID</field></select><filter><in><field>RECORDNO</field><value>477033</value></in></filter><pagesize>200</pagesize></query></function></content></operation></request>


--- RESPONSE ---

<?xml version="1.0" encoding="UTF-8"?>
<response>
  <control>
    <status>success</status>
    <senderid>prendio-sage-mock</senderid>
    <controlid>1781554617605</controlid>
    <uniqueid>false</uniqueid>
    <dtdversion>3.0</dtdversion>
  </control>
  <operation>
    <authentication>
      <status>success</status>
      <userid>xmlgateway</userid>
      <companyid>PRENDIO-DEV</companyid>
      <sessiontimestamp>2026-06-15T20:16:57+00:00</sessiontimestamp>
    </authentication>
    <result>
      <status>success</status>
      <function>query</function>
      <controlid>p1</controlid>
      <data listtype="appymt" count="1" totalcount="1" numremaining="0">
        <APPYMT>
          <PAYMENTMETHOD>Printed Check</PAYMENTMETHOD>
          <WHENPAID>06/15/2026</WHENPAID>
          <DOCNUMBER>56007</DOCNUMBER>
          <TOTALPAID>500.00</TOTALPAID>
          <TOTALENTERED>500.00</TOTALENTERED>
          <TOTALDUE>0.00</TOTALDUE>
          <VENDORID>301535</VENDORID>
          <WHENCREATED>06/15/2026 20:16:17</WHENCREATED>
          <WHENMODIFIED>06/15/2026 20:16:17</WHENMODIFIED>
        </APPYMT>
      </data>
    </result>
  </operation>
</response>
2026-06-15T20:16:46+00:00 query APPYMTDETAIL OK success
view XML
<?xml version="1.0" encoding="UTF-8"?>
<request><control><senderid>****</senderid><password>****</password><controlid>1</controlid><uniqueid>false</uniqueid><dtdversion>3.0</dtdversion></control><operation><authentication><login><userid>xmlgateway</userid><companyid>PRENDIO-DEV</companyid><password>****</password></login></authentication><content><function controlid="d1"><query><object>APPYMTDETAIL</object><select><field>PAYMENTKEY</field></select><filter><and><equalto><field>RECORDKEY</field><value>48272</value></equalto><isnotnull><field>PAYMENTKEY</field></isnotnull></and></filter><pagesize>200</pagesize></query></function></content></operation></request>


--- RESPONSE ---

<?xml version="1.0" encoding="UTF-8"?>
<response>
  <control>
    <status>success</status>
    <senderid>prendio-sage-mock</senderid>
    <controlid>1781554606703</controlid>
    <uniqueid>false</uniqueid>
    <dtdversion>3.0</dtdversion>
  </control>
  <operation>
    <authentication>
      <status>success</status>
      <userid>xmlgateway</userid>
      <companyid>PRENDIO-DEV</companyid>
      <sessiontimestamp>2026-06-15T20:16:46+00:00</sessiontimestamp>
    </authentication>
    <result>
      <status>success</status>
      <function>query</function>
      <controlid>d1</controlid>
      <data listtype="appymtdetail" count="1" totalcount="1" numremaining="0">
        <APPYMTDETAIL>
          <RECORDKEY>48272</RECORDKEY>
          <RECORDNO>178077</RECORDNO>
          <PAYMENTKEY>477033</PAYMENTKEY>
          <TRX_PAYMENTAMOUNT>500.00</TRX_PAYMENTAMOUNT>
          <CURRENCY>USD</CURRENCY>
          <STATE>Paid</STATE>
          <WHENCREATED>06/15/2026 20:16:17</WHENCREATED>
          <WHENMODIFIED>06/15/2026 20:16:17</WHENMODIFIED>
        </APPYMTDETAIL>
      </data>
    </result>
  </operation>
</response>
2026-06-15T20:16:46+00:00 query APBILL OK success
view XML
<?xml version="1.0" encoding="UTF-8"?>
<request><control><senderid>****</senderid><password>****</password><controlid>1</controlid><uniqueid>false</uniqueid><dtdversion>3.0</dtdversion></control><operation><authentication><login><userid>xmlgateway</userid><companyid>PRENDIO-DEV</companyid><password>****</password></login></authentication><content><function controlid="b1"><query><object>APBILL</object><select><field>RECORDNO</field></select><filter><and><equalto><field>VENDORID</field><value>301535</value></equalto><equalto><field>RECORDID</field><value>INV-LIVE-SAGE-1001</value></equalto></and></filter><pagesize>200</pagesize></query></function></content></operation></request>


--- RESPONSE ---

<?xml version="1.0" encoding="UTF-8"?>
<response>
  <control>
    <status>success</status>
    <senderid>prendio-sage-mock</senderid>
    <controlid>1781554606017</controlid>
    <uniqueid>false</uniqueid>
    <dtdversion>3.0</dtdversion>
  </control>
  <operation>
    <authentication>
      <status>success</status>
      <userid>xmlgateway</userid>
      <companyid>PRENDIO-DEV</companyid>
      <sessiontimestamp>2026-06-15T20:16:46+00:00</sessiontimestamp>
    </authentication>
    <result>
      <status>success</status>
      <function>query</function>
      <controlid>b1</controlid>
      <data listtype="apbill" count="1" totalcount="1" numremaining="0">
        <APBILL>
          <RECORDNO>48272</RECORDNO>
          <VENDORID>301535</VENDORID>
          <RECORDID>INV-LIVE-SAGE-1001</RECORDID>
          <DOCNUMBER>PO-LIVE-1001</DOCNUMBER>
          <DESCRIPTION>Live test bill via mock</DESCRIPTION>
          <WHENCREATED>06/15/2026</WHENCREATED>
          <WHENPOSTED>06/15/2026</WHENPOSTED>
          <TERMNAME>N30</TERMNAME>
          <CURRENCY>USD</CURRENCY>
          <BASECURR>USD</BASECURR>
        </APBILL>
      </data>
    </result>
  </operation>
</response>
2026-06-15T20:15:57+00:00 create apbill OK success
view XML
<?xml version="1.0" encoding="UTF-8"?>
<request>
  <control><senderid>****</senderid><password>****</password><controlid>1</controlid><uniqueid>false</uniqueid><dtdversion>3.0</dtdversion></control>
  <operation>
    <authentication><login><userid>xmlgateway</userid><companyid>PRENDIO-DEV</companyid><password>****</password></login></authentication>
    <content><function controlid="create1"><create><apbill>
      <VENDORID>301535</VENDORID>
      <RECORDID>INV-LIVE-SAGE-1001</RECORDID>
      <DOCNUMBER>PO-LIVE-1001</DOCNUMBER>
      <DESCRIPTION>Live test bill via mock</DESCRIPTION>
      <WHENCREATED>06/15/2026</WHENCREATED>
      <CURRENCY>USD</CURRENCY>
      <BASECURR>USD</BASECURR>
      <TERMNAME>N30</TERMNAME>
      <APBILLITEMS>
        <APBILLITEM><ACCOUNTNO>6500</ACCOUNTNO><TRX_AMOUNT>325.00</TRX_AMOUNT><ENTRYDESCRIPTION>Lab supplies</ENTRYDESCRIPTION><DEPARTMENTID>D100</DEPARTMENTID></APBILLITEM>
        <APBILLITEM><ACCOUNTNO>6700</ACCOUNTNO><TRX_AMOUNT>175.00</TRX_AMOUNT><ENTRYDESCRIPTION>Consulting</ENTRYDESCRIPTION><DEPARTMENTID>D300</DEPARTMENTID></APBILLITEM>
      </APBILLITEMS>
    </apbill></create></function></content>
  </operation>
</request>


--- RESPONSE ---

<?xml version="1.0" encoding="UTF-8"?>
<response>
  <control>
    <status>success</status>
    <senderid>prendio-sage-mock</senderid>
    <controlid>1781554557960</controlid>
    <uniqueid>false</uniqueid>
    <dtdversion>3.0</dtdversion>
  </control>
  <operation>
    <authentication>
      <status>success</status>
      <userid>xmlgateway</userid>
      <companyid>PRENDIO-DEV</companyid>
      <sessiontimestamp>2026-06-15T20:15:57+00:00</sessiontimestamp>
    </authentication>
    <result>
      <status>success</status>
      <function>create</function>
      <controlid>create1</controlid>
      <key>48272</key>
      <data listtype="apbill" count="1" totalcount="1" numremaining="0">
        <apbill>
          <RECORDNO>48272</RECORDNO>
        </apbill>
      </data>
    </result>
  </operation>
</response>
2026-06-15T20:15:57+00:00 query VENDOR OK success
view XML
<?xml version="1.0" encoding="UTF-8"?>
<request>
  <control><senderid>****</senderid><password>****</password><controlid>1</controlid><uniqueid>false</uniqueid><dtdversion>3.0</dtdversion></control>
  <operation>
    <authentication><login><userid>xmlgateway</userid><companyid>PRENDIO-DEV</companyid><password>****</password></login></authentication>
    <content><function controlid="sync1"><query><object>VENDOR</object><select><field>VENDORID</field><field>NAME</field><field>TERMNAME</field><field>STATUS</field></select><pagesize>200</pagesize></query></function></content>
  </operation>
</request>


--- RESPONSE ---

<?xml version="1.0" encoding="UTF-8"?>
<response>
  <control>
    <status>success</status>
    <senderid>prendio-sage-mock</senderid>
    <controlid>1781554557262</controlid>
    <uniqueid>false</uniqueid>
    <dtdversion>3.0</dtdversion>
  </control>
  <operation>
    <authentication>
      <status>success</status>
      <userid>xmlgateway</userid>
      <companyid>PRENDIO-DEV</companyid>
      <sessiontimestamp>2026-06-15T20:15:57+00:00</sessiontimestamp>
    </authentication>
    <result>
      <status>success</status>
      <function>query</function>
      <controlid>sync1</controlid>
      <data listtype="vendor" count="5" totalcount="5" numremaining="0">
        <VENDOR>
          <VENDORID>301535</VENDORID>
          <NAME>ADVANCED CLINICAL LLC</NAME>
          <DISPLAYCONTACT.COMPANYNAME>ADVANCED CLINICAL LLC</DISPLAYCONTACT.COMPANYNAME>
          <TERMNAME>N30</TERMNAME>
          <WHENCREATED>08/06/2021 10:30:00</WHENCREATED>
          <WHENMODIFIED>01/15/2024 09:00:00</WHENMODIFIED>
          <STATUS>active</STATUS>
        </VENDOR>
        <VENDOR>
          <VENDORID>301536</VENDORID>
          <NAME>ABC LABORATORIES INC</NAME>
          <DISPLAYCONTACT.COMPANYNAME>ABC LABORATORIES INC</DISPLAYCONTACT.COMPANYNAME>
          <TERMNAME>N30</TERMNAME>
          <WHENCREATED>08/06/2021 10:30:00</WHENCREATED>
          <WHENMODIFIED>01/15/2024 09:00:00</WHENMODIFIED>
          <STATUS>active</STATUS>
        </VENDOR>
        <VENDOR>
          <VENDORID>301537</VENDORID>
          <NAME>GLOBAL SCIENTIFIC SUPPLY CO</NAME>
          <DISPLAYCONTACT.COMPANYNAME>GLOBAL SCIENTIFIC SUPPLY CO</DISPLAYCONTACT.COMPANYNAME>
          <TERMNAME>N45</TERMNAME>
          <WHENCREATED>08/06/2021 10:30:00</WHENCREATED>
          <WHENMODIFIED>01/15/2024 09:00:00</WHENMODIFIED>
          <STATUS>active</STATUS>
        </VENDOR>
        <VENDOR>
          <VENDORID>301538</VENDORID>
          <NAME>NORTHWIND PHARMA SERVICES</NAME>
          <DISPLAYCONTACT.COMPANYNAME>NORTHWIND PHARMA SERVICES</DISPLAYCONTACT.COMPANYNAME>
          <TERMNAME>Net 60</TERMNAME>
          <WHENCREATED>08/06/2021 10:30:00</WHENCREATED>
          <WHENMODIFIED>01/15/2024 09:00:00</WHENMODIFIED>
          <STATUS>active</STATUS>
        </VENDOR>
        <VENDOR>
          <VENDORID>301539</VENDORID>
          <NAME>OBSOLETE VENDOR</NAME>
          <DISPLAYCONTACT.COMPANYNAME>OBSOLETE VENDOR</DISPLAYCONTACT.COMPANYNAME>
          <TERMNAME>N30</TERMNAME>
          <WHENCREATED>08/06/2021 10:30:00</WHENCREATED>
          <WHENMODIFIED>01/15/2024 09:00:00</WHENMODIFIED>
          <STATUS>inactive</STATUS>
        </VENDOR>
      </data>
    </result>
  </operation>
</response>