Thanks Jesse. Its all working now. I’ve setup it up to automatically print after running the payment and also an option to reprint all credit card receipts in a ticket.
Update Added logic for customer receipt question on initial payment. Changed template to only show transaction information and mocked current merchant processor receipts.
- Print individual credit card slip each time a credit card payment is ran. Ask for customer receipt in the process.



[LAYOUT]
<EC>
-- Alternative logo method
-- <img src="C:\Users\josep\Documents\SambaPOS5\plogo.png">
<div style="font-size:13px;text-align:center;font-family:'Calibri'">113 E Holly Street<br>Bellingham, WA 98225<br>(360) 933-4301</div>
{REPORT SQL DETAILS:SELECT TOP 1 [Id]
,jsonData.[pdauth_code]
,jsonData.[pdCardHolderName]
,jsonData.[pdCardBrand]
,jsonData.[pdAccount]
,jsonData.[pdTransactionID]
,[Date]
,[Amount]
,[Name]
,Format([Date],'hh.mm tt') as Time
FROM [Payments] p
CROSS APPLY OPENJSON(p.[PaymentData])
-- this WITH portion allows explicit definition of the schema JSON Keys for output
-- and gives references to the columns/fields above in the SELECT portion
-- we can also use these as filters in the WHERE clause below
WITH (
pdTransactionID varchar(1000) '$.TransactionID'
,pdauth_code varchar(1000) '$.auth_code'
,pdCardHolderName varchar(1000) '$.CardHolderName'
,pdCardBrand varchar(1000) '$.CardBrand'
,pdAccount varchar(1000) '$.Account'
,pdTransactionID varchar(1000) '$.TransactionID'
) jsonData
WHERE 1=1
AND [Name]='Credit Card'
AND [TicketID]='@1'
ORDER BY [Id] desc
;{SETTING:CC_Slip_TID}
:F.Date
,F.Amount
,F.Id
,F.pdauth_code
,F.pdCardHolderName
,F.pdCardBrand
,F.pdAccount
,F.Time
,F.pdTransactionID::
<div style="font-size\:10px;font-weight\:bold;margin\:20 10 0 20;text-align\:justify;font-family\:'Calibri'">
<table>
<tr>
<td align="left">Acct\: {6}<br />MerchId\: xxxxinsertyourmerchid <br />TransId\: {8}<br />Auth Code\: {3}<br />Card Type\: {5}</td><td align="right">{0}<br />{7}<br/> Server\: {ENTITY NAME:Server}<br />Pay ID\: {2}</td>
</tr>
<tr>
<td align="left"><br /><span style="font-size\:13px;">Total (USD)\:</span></td><td align="right"><Br /><span style="font-size\:13px;">${1}</span></td>
</tr>
</table>
</div>
</div>
<div style="font-weight\:normal;margin\:20 10 0 20;padding\:0 0 0 0;border\:1 1 1 1;border-color\:black;font-size\:15px;text-align\:center;font-family\:'Calibri'">
<table border="1">
<tr>
<td style="background-color\:black;"><SPAN STYLE="color\:black;font-weight\:bold;">TIP</span></td>
</tr>
</table>
<table>
<tr>
<td width="30"><span style='font-size\:20px;'>❏</span></td>
<td width="30" align=left>15%</td>
<td width="80">Tip\: $[=F(Math.round((TN('{1}') * 0.15)*100)/100,'0.00')]</td>
<td width="80">Total\: $[=F(Math.round((TN('{1}') * 0.15)*100)/100 + {1},'0.00')]</td>
</tr>
<tr>
<td width="30"><span style='font-size\:20px;'>❏</span></td>
<td width="30" align=left>18%</td>
<td width="80">Tip\: $[=F(Math.round((TN('{1}') * 0.18)*100)/100,'0.00')]</td>
<td width="80">Total\: $[=F(Math.round((TN('{1}') * 0.18)*100)/100 + {1},'0.00')]</td>
</tr>
<tr>
<td width="30"><span style='font-size\:20px;'>❏</span></td>
<td width="30" align=left>20%</td>
<td width="80">Tip\: $[=F(Math.round((TN('{1}') * 0.20)*100)/100,'0.00')]</td>
<td width="80">Total\: $[=F(Math.round((TN('{1}') * 0.20)*100)/100 + {1},'0.00')]</td>
</tr>
<tr>
<td width="30"><span style='font-size\:20px;'>❏</span></td>
<td width="30" align=left>25%</td>
<td width="80">Tip\: $[=F(Math.round((TN('{1}') * 0.25)*100)/100,'0.00')]</td>
<td width="80">Total\: $[=F(Math.round((TN('{1}') * 0.25)*100)/100 + {1},'0.00')]</td>
</tr>
<tr>
<td width="30"><span style='font-size\:20px;'>❏</span></td>
<td width="100" align="center">$___________</td>
<td width="100" align="center">$___________</td>
</tr>
<tr>
<td width="30"><span style='font-size\:20px;'>‌</span></td>
<td width="100" align="center">Custom Tip</td>
<td width="100" align="center">Total</td>
</tr>
</table>
</div>
}
<div style="font-size:15px;font-weight:normal;text-align:center;font-family:'Calibri'">
<table>
<tr>
<td><span style="font-size: 9pt"><Br />I agree to pay the above total amount <br>according to the card issuer agreement.<br />(Merchant Agreement if Credit Voucher)</span></td>
</tr>
<tr><td>‌</td>
</tr>
</tr>
<tr><td>X____________________________
<br /><br /><Br /><Br />
-- <span style="font-size: 9pt">powered by SambaPOS</span>
</td>
</tr>
<tr><td>‌</td>
</tr>
</table>
</div>
- Print all credit card receipts within a ticket.

{REPORT SQL DETAILS:SELECT [Id]
,jsonData.[pdauth_code]
,jsonData.[pdCardHolderName]
,jsonData.[pdCardBrand]
,jsonData.[pdAccount]
,jsonData.[pdTransactionID]
,[Date]
,[Amount]
,[Name]
,Format([Date],'hh.mm tt') as Time
FROM [Payments] p
CROSS APPLY OPENJSON(p.[PaymentData])
-- this WITH portion allows explicit definition of the schema JSON Keys for output
-- and gives references to the columns/fields above in the SELECT portion
-- we can also use these as filters in the WHERE clause below
WITH (
pdTransactionID varchar(1000) '$.TransactionID'
,pdauth_code varchar(1000) '$.auth_code'
,pdCardHolderName varchar(1000) '$.CardHolderName'
,pdCardBrand varchar(1000) '$.CardBrand'
,pdAccount varchar(1000) '$.Account'
,pdTransactionID varchar(1000) '$.TransactionID'
) jsonData
WHERE 1=1
AND [Name]='Credit Card'
AND [Id]='@1'
;{SETTING:PaymentId}
:F.Date
,F.Amount
,F.Id
,F.pdauth_code
,F.pdCardHolderName
,F.pdCardBrand
,F.pdAccount
,F.Time
,F.pdTransactionID::
<div style="font-size\:10px;font-weight\:bold;margin\:20 10 0 20;text-align\:justify;font-family\:'Calibri'">
<table>
<tr>
<td align="left">Acct\: {6}<br />MerchId\: XXXXYourMerchID<br />TransId\: {8}<br />Auth Code\: {3}<br />Card Type\: {5}</td><td align="right">{0}<br />{7}<br/> Server\: {ENTITY NAME:Server}<br />Pay ID\: {2}</td>
</tr>
<tr>
<td align="left"><br /><span style="font-size\:13px;">Total (USD)\:</span></td><td align="right"><Br /><span style="font-size\:13px;">${1}</span></td>
</tr>
</table>
</div>
</div>
<div style="font-weight\:normal;margin\:20 10 0 20;padding\:0 0 0 0;border\:1 1 1 1;border-color\:black;font-size\:15px;text-align\:center;font-family\:'Calibri'">
<table border="1">
<tr>
<td style="background-color\:black;"><SPAN STYLE="color\:black;font-weight\:bold;">TIP</span></td>
</tr>
</table>
<table>
<tr>
<td width="30"><span style='font-size\:20px;'>❏</span></td>
<td width="30" align=left>15%</td>
<td width="80">Tip\: $[=F(Math.round((TN('{1}') * 0.15)*100)/100,'0.00')]</td>
<td width="80">Total\: $[=F(Math.round((TN('{1}') * 0.15)*100)/100 + {1},'0.00')]</td>
</tr>
<tr>
<td width="30"><span style='font-size\:20px;'>❏</span></td>
<td width="30" align=left>18%</td>
<td width="80">Tip\: $[=F(Math.round((TN('{1}') * 0.18)*100)/100,'0.00')]</td>
<td width="80">Total\: $[=F(Math.round((TN('{1}') * 0.18)*100)/100 + {1},'0.00')]</td>
</tr>
<tr>
<td width="30"><span style='font-size\:20px;'>❏</span></td>
<td width="30" align=left>20%</td>
<td width="80">Tip\: $[=F(Math.round((TN('{1}') * 0.20)*100)/100,'0.00')]</td>
<td width="80">Total\: $[=F(Math.round((TN('{1}') * 0.20)*100)/100 + {1},'0.00')]</td>
</tr>
<tr>
<td width="30"><span style='font-size\:20px;'>❏</span></td>
<td width="30" align=left>25%</td>
<td width="80">Tip\: $[=F(Math.round((TN('{1}') * 0.25)*100)/100,'0.00')]</td>
<td width="80">Total\: $[=F(Math.round((TN('{1}') * 0.25)*100)/100 + {1},'0.00')]</td>
</tr>
<tr>
<td width="30"><span style='font-size\:20px;'>❏</span></td>
<td width="100" align="center">$___________</td>
<td width="100" align="center">$___________</td>
</tr>
<tr>
<td width="30"><span style='font-size\:20px;'>‌</span></td>
<td width="100" align="center">Custom Tip</td>
<td width="100" align="center">Total</td>
</tr>
</table>
</div>
}
