Default Income Account for Customer?

Is there a way to set the default income account for a customer? ie: when I sell items to this customer, the income account will be a certain income/sales account defined in my Chart of Accounts.

Right now I have to edit each individual item in the item details within the Sales Invoice. I thought I could use a POS profile to set it but I usually create a Sales Invoice from the Delivery Note and the items details is prefilled before I can set a POS profile.


In the Customer section simply go to the accounting tab and select the account you wish to assign to the customer

See screen grab below

1 Like

@saidsl thanks for the feedback. Unfortunately, this is not the answer. This sets the receivable account and not the income account. I’m looking for the income account. Do you have an answer to that?

Thank you


The screen grab is the correct place to set the account you want to assign the customer too. Added to that in the chart of account you would need to set the type of account you want it to be and in your case an Income account.

Accounts > Chart of Accounts > Expand Income Root > Create New Account (If you have not) > In the account type select Income Account

@saidsl Thanks so much for replying to me.

But I think I may not have been clear. When I create a Sales Invoice, the invoice has a customer associated with it. Within the item details there is an accounting details section that has an ‘Income Account’ that I could specify. Currently, this is set by item default. (or possibly Company settings, I’m not sure about this)

But, my business case scenario is that I want the Income Account to be determined by the Customer.

The screengrab and answer you provided refers to Account Receivable and not Income Account. The Accounting portion of the Customer Doc requires a Receivable account type.

Thanks for your help.

Hi @Nathan,

we have the same use case, where the revenue when selling item I1 in country C1 will go to income account A1, while when selling the same item to another customer in country C2, it will need to be booked against income account A2. So far, we have only figured how to set the default income account per item, but not per customer.

Have you considered using a custom script? Something like

frappe.ui.form.on('Sales Invoice', 
	refresh: function(frm) {
		frm.add_custom_button( __("Apply country-wise income account"), function() 
			var items = frm.doc.items;
			var income_account = "Revenue EU";  // valid income account
			if (frm.doc.currency == "CHF") {
			     income_account = "Revenue CH";  // valid income account
			items.forEach(function(entry) {
				if (entry.income_account != null) {
					frappe.model.set_value(entry.doctype,, "income_account", income_account);

This would be based on the sales invoice currency, a lookup on a field on the customer could be easily implemented.

Let me know if this works.


Ok, now that I understand what you want to achieve.

  1. Each item you create allows you to associate a Customer/s to the item as well as set the Income Account you need in the Sales Details Part.
  2. Then in the Customer Details select the Customer/s you wish to fall under that Item
  3. Therefore by assigning that customer to that item, the correct Income Account will be selected

Hope this helps

I always get this error if I try to set an account and a customer for an item:
“Customer is required against Receivable Account”

Figured out it fails it account is a receivable account, works with income account