Applies to: Payments API | Orders API
Learn how to work with house accounts using the Payments API.
With house accounts, a seller can allow a customer to obtain products and services without having to pay for them immediately. The seller establishes a spending limit for the account and the customer can make purchases within that limit. The seller can see a running balance of the customer's house account and send an invoice to collect payment at a later time.
House accounts are a great way for businesses to build loyalty with their customers and encourage repeat business. For example, consider a customer who enjoys lunch at a particular restaurant every weekday. The restaurant can set up a house account, where the customer agrees to pay the total amount due by the end of each month. The customer can then simply come in and eat lunch, while accruing charges to their house account and receiving an invoice at the end of the month.
You can create and manage house accounts on Square payment hardware and mobile devices and from the following Square products:
For more information, see Create and Charge Square House Accounts.
Whenever a house account has a non-zero balance, the customer owes money to the seller. This is only resolved when the customer pays what they owe, resetting the account balance to zero.
Orders that are charged to a house account during checkout are considered sales in the Square Point of Sale, Reporting and Transactions applets.
To prevent double counting, repayments of house account balances are excluded from the Reporting and Transactions applets.
In the Square Dashboard, sellers can use the House Accounts applet to view house accounts that have outstanding balances. They can also use the Invoices applet to view invoices that remain unpaid.
You can use the Payments API to identify and track charges made to a house account. Payment
objects that are associated with a house account have the following fields set:
source_type
- Set toSQUARE_ACCOUNT
.square_account_details
(SquareAccountDetails) - Provides additional details about the payment. These details are only populated if the payment'ssource_type
isSQUARE_ACCOUNT
.
The following response fragment, from a GetPayment
request, shows a purchase charged to a house account:
{ "payment": { "id": "7nDzoTTqoVk6LMeYzfXg2fpcUDaZY", ... "amount_money": { "amount": 1324, "currency": "USD" }, "status": "COMPLETED", "delay_duration": "PT168H", "source_type": "SQUARE_ACCOUNT", "location_id": "LEQ1SST8SCZPN", "order_id": "nXE8wNJx1GV77KuCP0Lr7RjmstZZY", "customer_id": "QB38KEG789547FYXDAZQE54BZ0", "total_money": { "amount": 1324, "currency": "USD" }, ... }, "application_details": { "square_product": "SQUARE_POS" }, "square_account_details": { "payment_source_token": "USTkmGjoT8ShVmw6U6vPBg" }, ... } }
You can use the Orders API to identify the items charged to a house account. In an Order
object, the tenders
array contains the payment activity for the order. If a Tender
object in the array is associated with a house account, the following fields set:
type
- Set toSQUARE_ACCOUNT
.square_account_details
(TenderSquareAccountDetails) - Provides additional details about the tender. These details are only populated if the tender'stype
isSQUARE_ACCOUNT
.
The following response fragment, from a RetrieveOrder
request, shows an order that has a tender associated with a house account:
{ "order": { "id": "nXE8wNJx1GV77KuCP0Lr7RjmstZZY", ... "line_items": [ { "uid": "E251FCBA-297A-452B-B56D-69ED7A8AA0B6", "catalog_object_id": "KCWOJVIBQHU5ILMP53UPMZFC", "catalog_version": 1671153076470, "quantity": "1", "name": "Sampler plate", "variation_name": "Regular", ... } ], ... "tenders": [ { "id": "7nDzoTTqoVk6LMeYzfXg2fpcUDaZY", "location_id": "LEQ1SST8SCZPN", "transaction_id": "nXE8wNJx1GV77KuCP0Lr7RjmstZZY", "created_at": "2023-08-07T17:24:12Z", "amount_money": { "amount": 1324, "currency": "USD" }, "type": "SQUARE_ACCOUNT", "payment_id": "7nDzoTTqoVk6LMeYzfXg2fpcUDaZY" } ], ... } }