Custom Simple Loyalty Card Features

Actually setting up things just like SambaCard Tutorial is fine with me, but in my case, I don’t want to add new Entity Type. Instead I will use the existing Entity Type, Customers, to act like the SambaCard. It will waste time if I always need to register every customer who comes to my coffee shop as an entity. I can use a Ticket Tag to store the Customer Name for that purpose. So basically, I set up a simplified SambaCard feature.

Here, I change the ‘Customers’ Entity Type into ‘Members’ just to make it easier for our staffs to remember that selecting member is only necessary if a customer is already a member. When it’s not a member, just use the Customer Name ticket tag.

Modify Entity Type Customers.

Add a Custom Field called Member ID. This will be used to store the Member Card ID.

Change Name ‘Customers’ into ‘Members’ and Entity Name ‘Customer’ into ‘Member’.

Modify Entity Screen Names
Make sure your staffs won’t be confused with the Entity Screens, so change the default Entity Screen names ‘Customer Search’ into ‘Member Search’ and ‘Customer Tickets’ into ‘Member Tickets’.

We don’t need to create new SambaCard Account Type, but we will use existing ‘Customer Accounts’. Just leave it as it is. It is what differs from the SambaCard tutorial.

Create New Account 'Member Card Sales’
To track Member Card sales, create a new Sales Account called ‘Member Card Sales’.

Create New Account Transaction Type
To enable to Add Funds to Member Cards, create a new Account Transaction Type called ‘Member Card Sale Transaction’.

Create an ‘Add Funds’ Button
Creating an ‘Add Funds’ button on Member accounts will make adding funds to card easy. Create a new Document Type.

Before we want to use Member Card as a payment type, we need to define a new Transaction Type so every time a Member Card Payment is used by a member as the payment method, the transaction moves amount from ‘Receivables Account’ to ‘Customer Account’. Create a new Transaction Type called ‘Member Card Payment’.

We’ll use Member Card as a payment type, we need to create a new custom Payment Type for it. Assign ‘Member Card Payment’ account transaction type to it.

To prevent overcharging Member Card, we need to change the Customer Accounts account type rule to ‘Credit’.

I have tested it and have not seen any issue so far, feel free to give feedback.

Some screenshots…

Member Screen

Account Details

Payment Screen


Thanks, this is great, but how would I use this to add let’s say 5% of the order value to the member’s balance after each order?

You make a Payment Processed rule and you insert a Create Account Transaction action to add the funds to the Account. You can use something like [=TN('{TICKET TOTAL}')*.05] for a 5% of Ticket Total. If I get time later today I might give you some screenshots if you have not figured it out by then.

1 Like


Right as an example, for the sambacard, I’ve done this:

And the rule is:

Though clearly I’m missing something, any idea?

Just an update, I can use a flat fee of 10.00 and that works but not using the formula you sent, do you think there is a syntax error?

Try [=TN(’{TICKET TOTAL}’)*5/100]

But that doesn’t work either, not even:


Only this works:


Show the rule with the action where your using it?



Sorry it should have been [=TN('{TICKET TOTAL}') * 5/100] notice space before and after *

In the Action, use this as the parameter for Amount:


Then remove the Action from the Rule, save it, re-open it, and re-add the Action.

Within the Action inside the Rule, you should now see a parameter for amount.

Place the formula inside that parameter:

[=TN('{TICKET TOTAL}') * 5/100]

Yes you need to use variables, actions sometimes dont behave right when running expressions if you dont. Thank you @QMcKay for spotting that.


Great, thanks very much Kendesh and QMcKay!

1 Like


I just thought I’d add a comment here. If you do use the 5% loyalty points code, don’t use a payment processing rule, use an order update rule. The reason for this is that if you use the payment processed rule and pay half, the customer will receive points and then once they pay the rest, they’ll get more points.



Hi Kendesh, or QMcKay.

Another question, sorry.

If a card has 5.00 and the order is 10.00, and the card is set to credit, is there any way to pay off 5.00 by the sambacard and the rest by cash. i.e. a button that will allow you to use the balance of the card on the bill. Obviously, the operator could just go to the card and see how much is left and then enter the amount manually, but is there an automatic way to do this.



It is possible by using Automation.

I did this very thing with the Gift Certificate setup…

It uses the Entity Account Balance to determine how much of the bill will be paid, without overdrawing the GC Account, leaving the remainder of the bill to be paid by other means of your choice.

You can restrict this behavior by using a loyalty state… if ticket loyalty state is true it will not execute the action… if false it will add the 5%.

Thanks Kendesh,

QMcKay, OK, so in this case, there is already a pay by sambacard button, so would I need to make a new button to use this automation rule?

Yes, exactly.

It looks like this:

That button allows you to pay the bill up to the amount that is available in the GC Account. So in this case, it would pay 100, and leave 200 remaining to be paid. This next shot shows what happens after clicking the button:

Great! I’ll give that a go, sorry to be a pain!