diff --git a/samples/adsense/generate_report.py b/samples/adsense/generate_report.py
index 4ccc128..e1ca837 100644
--- a/samples/adsense/generate_report.py
+++ b/samples/adsense/generate_report.py
@@ -42,7 +42,7 @@
 def main(argv):
   # Authenticate and construct service.
   service, flags = sample_tools.init(
-      argv, 'adsense', 'v1.3', __doc__, __file__, parents=[argparser],
+      argv, 'adsense', 'v1.4', __doc__, __file__, parents=[argparser],
       scope='https://www.googleapis.com/auth/adsense.readonly')
 
   # Process flags and read their values.
@@ -77,6 +77,10 @@
         print '%25s' % column,
       print
 
+    # Display date range.
+    print 'Report from %s to %s.' % (result['startDate'], result['endDate'])
+    print
+
   except client.AccessTokenRefreshError:
     print ('The credentials have been revoked or expired, please re-run the '
            'application to re-authorize')
diff --git a/samples/adsense/generate_report_with_paging.py b/samples/adsense/generate_report_with_paging.py
index ca69763..620d9ed 100644
--- a/samples/adsense/generate_report_with_paging.py
+++ b/samples/adsense/generate_report_with_paging.py
@@ -39,14 +39,15 @@
 
 # Declare command-line flags.
 argparser = argparse.ArgumentParser(add_help=False)
-argparser.add_argument('ad_client_id',
+argparser.add_argument(
+    'ad_client_id',
     help='The ID of the ad client for which to generate a report')
 
 
 def main(argv):
   # Authenticate and construct service.
   service, flags = sample_tools.init(
-      argv, 'adsense', 'v1.3', __doc__, __file__, parents=[argparser],
+      argv, 'adsense', 'v1.4', __doc__, __file__, parents=[argparser],
       scope='https://www.googleapis.com/auth/adsense.readonly')
 
   ad_client_id = flags.ad_client_id
@@ -88,7 +89,7 @@
         if rows_to_obtain <= 0:
           break
 
-      if (start_index >= int(result['totalMatchedRows'])):
+      if start_index >= int(result['totalMatchedRows']):
         break
 
   except client.AccessTokenRefreshError:
diff --git a/samples/adsense/get_account_tree.py b/samples/adsense/get_account_tree.py
index 83d99c8..ef38252 100644
--- a/samples/adsense/get_account_tree.py
+++ b/samples/adsense/get_account_tree.py
@@ -31,14 +31,15 @@
 
 # Declare command-line flags, and set them as required.
 argparser = argparse.ArgumentParser(add_help=False)
-argparser.add_argument('account_id',
-                     help='The ID of the account to use as the root of the tree')
+argparser.add_argument(
+    'account_id',
+    help='The ID of the account to use as the root of the tree')
 
 
 def main(argv):
   # Authenticate and construct service.
   service, flags = sample_tools.init(
-      argv, 'adsense', 'v1.3', __doc__, __file__, parents=[argparser],
+      argv, 'adsense', 'v1.4', __doc__, __file__, parents=[argparser],
       scope='https://www.googleapis.com/auth/adsense.readonly')
 
   # Process flags and read their values.
@@ -60,7 +61,7 @@
 def display_tree(account, level=0):
   print (' ' * level * 2 +
          'Account with ID "%s" and name "%s" was found. ' %
-             (account['id'], account['name']))
+         (account['id'], account['name']))
 
   if 'subAccounts' in account:
     for sub_account in account['subAccounts']:
diff --git a/samples/adsense/get_all_accounts.py b/samples/adsense/get_all_accounts.py
index ab0328e..3683e20 100644
--- a/samples/adsense/get_all_accounts.py
+++ b/samples/adsense/get_all_accounts.py
@@ -31,8 +31,8 @@
 
 def main(argv):
   # Authenticate and construct service.
-  service, flags = sample_tools.init(
-      argv, 'adsense', 'v1.3', __doc__, __file__, parents=[],
+  service, unused_flags = sample_tools.init(
+      argv, 'adsense', 'v1.4', __doc__, __file__, parents=[],
       scope='https://www.googleapis.com/auth/adsense.readonly')
 
   try:
diff --git a/samples/adsense/get_all_ad_clients.py b/samples/adsense/get_all_ad_clients.py
index ae76aa1..5bc1ea6 100644
--- a/samples/adsense/get_all_ad_clients.py
+++ b/samples/adsense/get_all_ad_clients.py
@@ -31,8 +31,8 @@
 
 def main(argv):
   # Authenticate and construct service.
-  service, flags = sample_tools.init(
-      argv, 'adsense', 'v1.3', __doc__, __file__, parents=[],
+  service, unused_flags = sample_tools.init(
+      argv, 'adsense', 'v1.4', __doc__, __file__, parents=[],
       scope='https://www.googleapis.com/auth/adsense.readonly')
 
   try:
diff --git a/samples/adsense/get_all_ad_clients_for_account.py b/samples/adsense/get_all_ad_clients_for_account.py
index c9bcb5a..68a2cf1 100644
--- a/samples/adsense/get_all_ad_clients_for_account.py
+++ b/samples/adsense/get_all_ad_clients_for_account.py
@@ -32,13 +32,13 @@
 # Declare command-line flags.
 argparser = argparse.ArgumentParser(add_help=False)
 argparser.add_argument('account_id',
-                     help='The ID of the account for which to get ad clients')
+                       help='The ID of the account for which to get ad clients')
 
 
 def main(argv):
   # Authenticate and construct service.
   service, flags = sample_tools.init(
-      argv, 'adsense', 'v1.3', __doc__, __file__, parents=[argparser],
+      argv, 'adsense', 'v1.4', __doc__, __file__, parents=[argparser],
       scope='https://www.googleapis.com/auth/adsense.readonly')
 
   account_id = flags.account_id
diff --git a/samples/adsense/get_all_ad_units.py b/samples/adsense/get_all_ad_units.py
index 88f1486..b4a273b 100644
--- a/samples/adsense/get_all_ad_units.py
+++ b/samples/adsense/get_all_ad_units.py
@@ -31,7 +31,8 @@
 
 # Declare command-line flags.
 argparser = argparse.ArgumentParser(add_help=False)
-argparser.add_argument('ad_client_id',
+argparser.add_argument(
+    'ad_client_id',
     help='The ID of the ad client for which to generate a report')
 
 MAX_PAGE_SIZE = 50
@@ -48,7 +49,7 @@
   try:
     # Retrieve ad unit list in pages and display data as we receive it.
     request = service.adunits().list(adClientId=ad_client_id,
-        maxResults=MAX_PAGE_SIZE)
+                                     maxResults=MAX_PAGE_SIZE)
 
     while request is not None:
       result = request.execute()
diff --git a/samples/adsense/get_all_ad_units_for_custom_channel.py b/samples/adsense/get_all_ad_units_for_custom_channel.py
index 7ee629f..7bad7b5 100644
--- a/samples/adsense/get_all_ad_units_for_custom_channel.py
+++ b/samples/adsense/get_all_ad_units_for_custom_channel.py
@@ -31,11 +31,14 @@
 
 # Declare command-line flags.
 argparser = argparse.ArgumentParser(add_help=False)
-argparser.add_argument('account_id',
+argparser.add_argument(
+    'account_id',
     help='The ID of the account with the specified custom channel')
-argparser.add_argument('ad_client_id',
+argparser.add_argument(
+    'ad_client_id',
     help='The ID of the ad client with the specified custom channel')
-argparser.add_argument('custom_channel_id',
+argparser.add_argument(
+    'custom_channel_id',
     help='The ID of the custom channel for which to get ad units')
 
 MAX_PAGE_SIZE = 50
@@ -44,7 +47,7 @@
 def main(argv):
   # Authenticate and construct service.
   service, flags = sample_tools.init(
-      argv, 'adsense', 'v1.3', __doc__, __file__, parents=[argparser],
+      argv, 'adsense', 'v1.4', __doc__, __file__, parents=[argparser],
       scope='https://www.googleapis.com/auth/adsense.readonly')
 
   # Process flags and read their values.
diff --git a/samples/adsense/get_all_alerts.py b/samples/adsense/get_all_alerts.py
index 14a7164..100ca24 100644
--- a/samples/adsense/get_all_alerts.py
+++ b/samples/adsense/get_all_alerts.py
@@ -21,7 +21,6 @@
 
 __author__ = 'jalc@google.com (Jose Alcerreca)'
 
-import argparse
 import sys
 
 from apiclient import sample_tools
@@ -30,9 +29,9 @@
 
 def main(argv):
   # Authenticate and construct service.
-  service, flags = sample_tools.init(
-      argv, 'adsense', 'v1.3', __doc__, __file__, parents=[],
-      scope='https://www.googleapis.com/auth/adsense.readonly')
+  service, unused_flags = sample_tools.init(
+      argv, 'adsense', 'v1.4', __doc__, __file__, parents=[],
+      scope='https://www.googleapis.com/auth/adsense')
 
   try:
     # Retrieve alerts list in pages and display data as we receive it.
@@ -45,6 +44,8 @@
         for alert in alerts:
           print ('Alert id "%s" with severity "%s" and type "%s" was found. '
                  % (alert['id'], alert['severity'], alert['type']))
+          # Uncomment to dismiss alert. Note that this cannot be undone.
+          # service.alerts().delete(alertId=alert['id']).execute()
       else:
         print 'No alerts found!'
   except client.AccessTokenRefreshError:
diff --git a/samples/adsense/get_all_custom_channels.py b/samples/adsense/get_all_custom_channels.py
index a9a9b9a..2c51e9a 100644
--- a/samples/adsense/get_all_custom_channels.py
+++ b/samples/adsense/get_all_custom_channels.py
@@ -32,7 +32,7 @@
 # Declare command-line flags.
 argparser = argparse.ArgumentParser(add_help=False)
 argparser.add_argument('ad_client_id',
-    help='The ad client ID for which to get custom channels')
+                       help='The ad client ID for which to get custom channels')
 
 MAX_PAGE_SIZE = 50
 
@@ -40,7 +40,7 @@
 def main(argv):
   # Authenticate and construct service.
   service, flags = sample_tools.init(
-      argv, 'adsense', 'v1.3', __doc__, __file__, parents=[argparser],
+      argv, 'adsense', 'v1.4', __doc__, __file__, parents=[argparser],
       scope='https://www.googleapis.com/auth/adsense.readonly')
 
   ad_client_id = flags.ad_client_id
@@ -48,7 +48,7 @@
   try:
     # Retrieve custom channel list in pages and display data as we receive it.
     request = service.customchannels().list(adClientId=ad_client_id,
-        maxResults=MAX_PAGE_SIZE)
+                                            maxResults=MAX_PAGE_SIZE)
 
     while request is not None:
       result = request.execute()
diff --git a/samples/adsense/get_all_custom_channels_for_ad_unit.py b/samples/adsense/get_all_custom_channels_for_ad_unit.py
index 18d1632..4c0a638 100644
--- a/samples/adsense/get_all_custom_channels_for_ad_unit.py
+++ b/samples/adsense/get_all_custom_channels_for_ad_unit.py
@@ -48,7 +48,7 @@
 def main(argv):
   # Authenticate and construct service.
   service, flags = sample_tools.init(
-      argv, 'adsense', 'v1.3', __doc__, __file__, parents=[argparser],
+      argv, 'adsense', 'v1.4', __doc__, __file__, parents=[argparser],
       scope='https://www.googleapis.com/auth/adsense.readonly')
 
   # Process flags and read their values.
diff --git a/samples/adsense/get_all_dimensions.py b/samples/adsense/get_all_dimensions.py
index 1d647a0..fe83e76 100644
--- a/samples/adsense/get_all_dimensions.py
+++ b/samples/adsense/get_all_dimensions.py
@@ -21,7 +21,6 @@
 
 __author__ = 'jalc@google.com (Jose Alcerreca)'
 
-import argparse
 import sys
 
 from apiclient import sample_tools
@@ -30,8 +29,8 @@
 
 def main(argv):
   # Authenticate and construct service.
-  service, flags = sample_tools.init(
-      argv, 'adsense', 'v1.3', __doc__, __file__, parents=[],
+  service, unused_flags = sample_tools.init(
+      argv, 'adsense', 'v1.4', __doc__, __file__, parents=[],
       scope='https://www.googleapis.com/auth/adsense.readonly')
 
   try:
diff --git a/samples/adsense/get_all_metrics.py b/samples/adsense/get_all_metrics.py
index ce1b7d3..0ae2811 100644
--- a/samples/adsense/get_all_metrics.py
+++ b/samples/adsense/get_all_metrics.py
@@ -21,7 +21,6 @@
 
 __author__ = 'jalc@google.com (Jose Alcerreca)'
 
-import argparse
 import sys
 
 from apiclient import sample_tools
@@ -30,8 +29,8 @@
 
 def main(argv):
   # Authenticate and construct service.
-  service, flags = sample_tools.init(
-      argv, 'adsense', 'v1.3', __doc__, __file__, parents=[],
+  service, unused_flags = sample_tools.init(
+      argv, 'adsense', 'v1.4', __doc__, __file__, parents=[],
       scope='https://www.googleapis.com/auth/adsense.readonly')
 
   try:
diff --git a/samples/adsense/get_all_payments.py b/samples/adsense/get_all_payments.py
new file mode 100644
index 0000000..1146f0e
--- /dev/null
+++ b/samples/adsense/get_all_payments.py
@@ -0,0 +1,55 @@
+#!/usr/bin/python
+#
+# Copyright 2013 Google Inc. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Gets all payments available for the logged in user's default account.
+
+Tags: payments.list
+"""
+
+__author__ = 'jalc@google.com (Jose Alcerreca)'
+
+import sys
+
+from apiclient import sample_tools
+from oauth2client import client
+
+def main(argv):
+  # Authenticate and construct service.
+  service, unused_flags = sample_tools.init(
+      argv, 'adsense', 'v1.4', __doc__, __file__, parents=[],
+      scope='https://www.googleapis.com/auth/adsense.readonly')
+  try:
+    # Retrieve payments list in pages and display data as we receive it.
+    request = service.payments().list()
+    if request is not None:
+      result = request.execute()
+      print result
+      if 'items' in result:
+        payments = result['items']
+        for payment in payments:
+          print ('Payment with id "%s" of %s %s and date %s was found. '
+                 % (str(payment['id']),
+                    payment['paymentAmountMicros'],
+                    payment['paymentAmountCurrencyCode'],
+                    payment.get('paymentDate', 'unknown')))
+      else:
+        print 'No payments found!'
+  except client.AccessTokenRefreshError:
+    print ('The credentials have been revoked or expired, please re-run the '
+           'application to re-authorize')
+
+if __name__ == '__main__':
+  main(sys.argv)
diff --git a/samples/adsense/get_all_saved_ad_styles.py b/samples/adsense/get_all_saved_ad_styles.py
index 961c125..bc2e9ed 100644
--- a/samples/adsense/get_all_saved_ad_styles.py
+++ b/samples/adsense/get_all_saved_ad_styles.py
@@ -14,8 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-"""This example gets all the saved ad styles for the logged in user's default
-account.
+"""Gets all the saved ad styles for the user's default account.
 
 Tags: savedadstyles.list
 """
@@ -32,8 +31,8 @@
 
 def main(argv):
   # Authenticate and construct service.
-  service, flags = sample_tools.init(
-      argv, 'adsense', 'v1.3', __doc__, __file__, parents=[],
+  service, unused_flags = sample_tools.init(
+      argv, 'adsense', 'v1.4', __doc__, __file__, parents=[],
       scope='https://www.googleapis.com/auth/adsense.readonly')
 
   try:
diff --git a/samples/adsense/get_all_saved_reports.py b/samples/adsense/get_all_saved_reports.py
index a8fcc6a..6a15f3e 100644
--- a/samples/adsense/get_all_saved_reports.py
+++ b/samples/adsense/get_all_saved_reports.py
@@ -14,8 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-"""This example gets all the saved reports for the logged
-in user's default account.
+"""Gets all the saved reports for  user's default account.
 
 Tags: savedreports.list
 """
@@ -32,8 +31,8 @@
 
 def main(argv):
   # Authenticate and construct service.
-  service, flags = sample_tools.init(
-      argv, 'adsense', 'v1.3', __doc__, __file__, parents=[],
+  service, unused_flags = sample_tools.init(
+      argv, 'adsense', 'v1.4', __doc__, __file__, parents=[],
       scope='https://www.googleapis.com/auth/adsense.readonly')
 
   try:
diff --git a/samples/adsense/get_all_url_channels.py b/samples/adsense/get_all_url_channels.py
index 5d2d3d1..9ffc814 100644
--- a/samples/adsense/get_all_url_channels.py
+++ b/samples/adsense/get_all_url_channels.py
@@ -34,13 +34,13 @@
 # Declare command-line flags.
 argparser = argparse.ArgumentParser(add_help=False)
 argparser.add_argument('ad_client_id',
-    help='The ad client ID for which to get URL channels')
+                       help='The ad client ID for which to get URL channels')
 
 
 def main(argv):
   # Authenticate and construct service.
   service, flags = sample_tools.init(
-      argv, 'adsense', 'v1.3', __doc__, __file__, parents=[argparser],
+      argv, 'adsense', 'v1.4', __doc__, __file__, parents=[argparser],
       scope='https://www.googleapis.com/auth/adsense.readonly')
 
   ad_client_id = flags.ad_client_id
@@ -48,7 +48,7 @@
   try:
     # Retrieve URL channel list in pages and display data as we receive it.
     request = service.urlchannels().list(adClientId=ad_client_id,
-        maxResults=MAX_PAGE_SIZE)
+                                         maxResults=MAX_PAGE_SIZE)
 
     while request is not None:
       result = request.execute()
