Reconcile Checks

 

With Q-Import it is possible to reconcile checks. Unfortunately this is not possible via the graphical user interface. All the files necessary are are available here. The file is named reconcile.zip. Please unzip it.

Here is the way how to create a template for it:

Open the file reconcile.xslt with the notepad editor. It looks like that:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes" />
<xsl:template name="formatdate">
<xsl:param name="node" />
<xsl:value-of select="$node" />
</xsl:template>
<xsl:template name="formatdate1">
<xsl:param name="node" />
<xsl:variable name="d1">
<xsl:value-of select="translate($node,'.','/')" />
</xsl:variable>
<xsl:variable name="d2">
<xsl:value-of select="translate($d1,'-','/')" />
</xsl:variable>
<xsl:variable name="day">
<xsl:value-of select="format-number(substring-before($d2,'/'),'00')" />
</xsl:variable>
<xsl:variable name="month">
<xsl:value-of select="format-number(substring-before(substring-after($d2,'/'),'/'),'00')" />
</xsl:variable>
<xsl:variable name="year">
<xsl:value-of select="format-number(substring-after(substring-after($d2,'/'),'/'),'00')" />
</xsl:variable>
<xsl:variable name="date">
<xsl:choose>
<xsl:when test="string-length($year) = 2">
<xsl:value-of select="concat('20',$year,'-',$month,'-',$day) " />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat($year,'-',$month,'-',$day) " />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:value-of select="$date" />
</xsl:template>
<xsl:template name="formatdate2">
<xsl:param name="node" />
<xsl:variable name="d1">
<xsl:value-of select="translate($node,'.','/')" />
</xsl:variable>
<xsl:variable name="d2">
<xsl:value-of select="translate($d1,'-','/')" />
</xsl:variable>
<xsl:variable name="month">
<xsl:value-of select="format-number(substring-before($d2,'/'),'00')" />
</xsl:variable>
<xsl:variable name="day">
<xsl:value-of select="format-number(substring-before(substring-after($d2,'/'),'/'),'00')" />
</xsl:variable>
<xsl:variable name="year">
<xsl:value-of select="format-number(substring-after(substring-after($d2,'/'),'/'),'00')" />
</xsl:variable>
<xsl:variable name="date">
<xsl:choose>
<xsl:when test="string-length($year) = 2">
<xsl:value-of select="concat('20',$year,'-',$month,'-',$day) " />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat($year,'-',$month,'-',$day) " />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:value-of select="$date" />
</xsl:template>
<xsl:template name="formatdate3">
<xsl:param name="node" />
<xsl:variable name="d1">
<xsl:value-of select="translate($node,'.','/')" />
</xsl:variable>
<xsl:variable name="d2">
<xsl:value-of select="translate($d1,'-','/')" />
</xsl:variable>
<xsl:variable name="day">
<xsl:value-of select="format-number(substring-before($d2,'/'),'00')" />
</xsl:variable>
<xsl:variable name="vMonth">
<xsl:value-of select="substring-before(substring-after($d2,'/'),'/')" />
</xsl:variable>
<xsl:variable name="year">
<xsl:value-of select="format-number(substring(substring-after(substring-after($d2,'/'),'/'),1,4),'00')" />
</xsl:variable>
<xsl:variable name="xMonth">
<xsl:if test="$vMonth = 'Jan'">01</xsl:if>
<xsl:if test="$vMonth = 'Feb'">02</xsl:if>
<xsl:if test="$vMonth = 'Mar'">03</xsl:if>
<xsl:if test="$vMonth = 'Apr'">04</xsl:if>
<xsl:if test="$vMonth = 'May'">05</xsl:if>
<xsl:if test="$vMonth = 'Jun'">06</xsl:if>
<xsl:if test="$vMonth = 'Jul'">07</xsl:if>
<xsl:if test="$vMonth = 'Aug'">08</xsl:if>
<xsl:if test="$vMonth = 'Sep'">09</xsl:if>
<xsl:if test="$vMonth = 'Oct'">10</xsl:if>
<xsl:if test="$vMonth = 'Nov'">11</xsl:if>
<xsl:if test="$vMonth = 'Dec'">12</xsl:if>
<xsl:if test="$vMonth = 'JAN'">01</xsl:if>
<xsl:if test="$vMonth = 'FEB'">02</xsl:if>
<xsl:if test="$vMonth = 'MAR'">03</xsl:if>
<xsl:if test="$vMonth = 'APR'">04</xsl:if>
<xsl:if test="$vMonth = 'MAY'">05</xsl:if>
<xsl:if test="$vMonth = 'JUN'">06</xsl:if>
<xsl:if test="$vMonth = 'JUL'">07</xsl:if>
<xsl:if test="$vMonth = 'AUG'">08</xsl:if>
<xsl:if test="$vMonth = 'SEP'">09</xsl:if>
<xsl:if test="$vMonth = 'OCT'">10</xsl:if>
<xsl:if test="$vMonth = 'NOV'">11</xsl:if>
<xsl:if test="$vMonth = 'DEC'">12</xsl:if>
</xsl:variable>
<xsl:variable name="date">
<xsl:choose>
<xsl:when test="string-length($year) = 2">
<xsl:value-of select="concat('20',$year,'-',$xMonth,'-',$day) " />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat($year,'-',$xMonth,'-',$day) " />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:value-of select="$date" />
</xsl:template>
<xsl:template name="formatdate4">
<xsl:param name="node" />
<xsl:variable name="d0">
<xsl:value-of select="substring-before($node,'T')" />
</xsl:variable>
<xsl:variable name="d1">
<xsl:value-of select="translate($d0,'.','/')" />
</xsl:variable>
<xsl:variable name="d2">
<xsl:value-of select="translate($d1,'-','/')" />
</xsl:variable>
<xsl:variable name="year">
<xsl:value-of select="format-number(substring-before($d2,'/'),'00')" />
</xsl:variable>
<xsl:variable name="month">
<xsl:value-of select="format-number(substring-before(substring-after($d2,'/'),'/'),'00')" />
</xsl:variable>
<xsl:variable name="day">
<xsl:value-of select="format-number(substring-after(substring-after($d2,'/'),'/'),'00')" />
</xsl:variable>
<xsl:variable name="date">
<xsl:choose>
<xsl:when test="string-length($year) = 2">
<xsl:value-of select="concat('20',$year,'-',$month,'-',$day) " />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat($year,'-',$month,'-',$day) " />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:value-of select="$date" />
</xsl:template>
<xsl:template match="/ | @* | node()">
<QBXML >
<QBXMLMsgsRq onError = "continueOnError">

<TransactionQueryRq requestID = "1" >
<RefNumber><xsl:value-of select="CHECKNBR" /></RefNumber>
<TransactionAccountFilter><FullName>Checking</FullName> </TransactionAccountFilter>
<TransactionTypeFilter><TxnTypeFilter>Check</TxnTypeFilter></TransactionTypeFilter>
<TransactionPaidStatusFilter>Open</TransactionPaidStatusFilter>
</TransactionQueryRq>

</QBXMLMsgsRq >
</QBXML>
</xsl:template>
</xsl:stylesheet>

Of interest are the lines marked in dark red. Please replace CHECKNBR with the appropriate column header from your csv file. Replace Checking with the name of the checking account from your QuickBooks installation. Please remember, these names are case sensitive !! Save the file.

That's it. Now open Q-Import, select the template reconcile.xslt, select your import file with the check numbers and choose from the the Tools menu import data. It will start a two step process. First we will select the transaction with the required check number, second we will set the check status to cleared.

 

Last modified: 12/31/2007