There are times when the relationship between a customer and a merchant transcends a single transaction. In fact, every merchant wants to make each customer a loyal one, one who will return and buy again. In B2B, this type of relationship is very common, where the customer and merchant usually have a written contract that dictates access to the assortment, stock, price list, shipment, and payment terms. It is also common for B2B customers to have an open balance with the merchant. When the customer owes money to the merchant, this can be a debit, and when the merchant owes money to the customer, it can be a credit. The balance changes continuously based on customer orders and payments, ideally zeroing out when a billing cycle ends.
A B2C model lacks contracts that govern the relationship between the customer and the merchant. In most cases, the customer pays for each order and has no balance with the merchant. There are, however, cases in which a customer can receive some store credit, which is a certain amount they can spend at the same merchant. Debits are also possible but much less common. When this happens, a B2C model becomes more like a B2B model, with a balance between customer and merchant that occasionally becomes non-zero.
The possibility of assigning store credit to customers is a simple, yet effective way to handle customer relationships and increase loyalty. A common example of store credit usage is in returns. In place of refunding the customer's payment method, a store credit is given instead so the customer can use it on a future purchase. This way, the merchant doesn't actually lose any money, and the customer has an incentive to return.
In another scenario, the customer might be given a store credit for a delayed order or as an incentive to open an account. It is actually not possible to give store credits to a guest customer, as it must be assigned to the customer's account, which requires registration. To deal with the same scenarios with a guest customer, merchants usually use coupons or gift cards. Despite their similarities, gift cards and coupons differ from store credits, as they both require a code to activate and can be used by anyone with the code. Additionally, they usually expire after a certain period of time. Even so, they are often used as a workaround in order to offer store credit in the absence of a proper store credit mechanism.
When modeling store credits, one aspect to consider is the currency in which the credits are expressed. For an international store, this means maintaining a customer balance for each currency, otherwise you have to deal with currency conversions and fluctuation that are less than ideal.
In addition, there can also be store credits that are not linked to any real currency, but are instead tied to some sort of custom currency, like points, tokens, miles (think of flight companies), or any other fancy unit. Loyalty programs often involve this scenario. Customers can spend their credit points in the store, which displays a price list in the same units (e.g. points), as well as the public price in dollars, euros, etc. In some cases, the price is a hybrid, consisting of some units and some dollars. In such cases, the payment must also be split into two parts, one for the store credit and one for the dollar amount. It is also possible to need a multi-payment when the available store credit does not cover the full amount of the order, which is also the case for gift cards and coupons.
In a pure omnichannel scenario, customers should be able to redeem their store credits both online and in-store. It's only required that the merchant of record for the two channels matches, otherwise a customer could spend store credits issued by one merchant in a store owned by another, and I'm sure the latter wouldn't be that happy.