fix(api)
diff --git a/erpnext/accounts/dashboard_chart_source/account_balance_timeline/account_balance_timeline.py b/erpnext/accounts/dashboard_chart_source/account_balance_timeline/account_balance_timeline.py
index 3b08931..b047cca 100644
--- a/erpnext/accounts/dashboard_chart_source/account_balance_timeline/account_balance_timeline.py
+++ b/erpnext/accounts/dashboard_chart_source/account_balance_timeline/account_balance_timeline.py
@@ -3,9 +3,10 @@
 
 from __future__ import unicode_literals
 import frappe, json
-from frappe.core.page.dashboard.dashboard import cache_source, get_from_date_from_timespan
-from frappe.utils import add_to_date, date_diff, getdate, nowdate
+from frappe.utils import add_to_date, date_diff, getdate, nowdate, get_last_day
 from erpnext.accounts.report.general_ledger.general_ledger import execute
+from frappe.core.page.dashboard.dashboard import cache_source, get_from_date_from_timespan
+from frappe.desk.doctype.dashboard_chart.dashboard_chart import get_period_beginning, get_period_ending
 
 from frappe.utils.nestedset import get_descendants_of
 
@@ -23,13 +24,14 @@
 	if not to_date:
 		to_date = nowdate()
 	if not from_date:
-		from_date = get_from_date_from_timespan(to_date, timespan)
+		if timegrain in ('Monthly', 'Quarterly'):
+			from_date = get_from_date_from_timespan(to_date, timespan)
 
 	# fetch dates to plot
 	dates = get_dates_from_timegrain(from_date, to_date, timegrain)
 
 	# get all the entries for this account and its descendants
-	gl_entries = get_gl_entries(account, to_date)
+	gl_entries = get_gl_entries(account, get_period_ending(to_date, timegrain))
 
 	# compile balance values
 	result = build_result(account, dates, gl_entries)
@@ -94,7 +96,8 @@
 	elif "Quarterly" == timegrain:
 		months = 3
 
-	dates = [from_date]
-	while getdate(dates[-1]) <= getdate(to_date):
-		dates.append(add_to_date(dates[-1], years=years, months=months, days=days))
+	dates = [get_period_ending(from_date, timegrain)]
+	while getdate(dates[-1]) < getdate(to_date):
+		date = get_period_ending(add_to_date(dates[-1], years=years, months=months, days=days), timegrain)
+		dates.append(date)
 	return dates