Cách truy xuất và quản lý hoá đơn Google Ads chi tiết

Google Ads cung cấp một phương thức tiện lợi để người dùng quản lý thông tin thanh toán và hoá đơn của mình thông qua dịch vụ InvoiceService. Nếu bạn đang sử dụng tài khoản Google Ads và cần truy xuất hoá đơn hàng tháng, bài viết này sẽ hướng dẫn bạn từng bước thực hiện. Với sự hỗ trợ của API Google Ads, bạn có thể dễ dàng quản lý các thông tin liên quan đến tài khoản thanh toán, thời gian phát hành hoá đơn, và các chi tiết tài chính khác. Hãy cùng khám phá quy trình chi tiết dưới đây để tối ưu hoá việc quản lý hoá đơn Google Ads của bạn.

Bạn có thể truy xuất hoá đơn hàng tháng của một tài khoản Google Ads bằng cách sử dụng dịch vụ InvoiceService.

Điều kiện tiên quyết

Để sử dụng chức năng này, tài khoản Google Ads của bạn phải được kích hoạt chế độ lập hoá đơn hàng tháng. Bạn có thể tham khảo tài liệu hướng dẫn về cài đặt thanh toán và quản lý ngân sách để hiểu rõ cách quản lý thông tin thanh toán thông qua API Google Ads.

Nếu cần, tham số login-customer-id phải được chỉ định với mã khách hàng của tài khoản người quản lý đang điều hành tài khoản Google Ads mà bạn muốn truy xuất hoá đơn. Mã này thường được gắn nhãn trong phần quản lý thanh toán trên giao diện người dùng Google Ads. Điều này đảm bảo rằng việc truy xuất hoá đơn được thực hiện cho đúng tài khoản và đúng khách hàng đang được quản lý.

Truy xuất hoá đơn

Lưu ý quan trọng: bạn không thể yêu cầu phát hành hóa đơn trước ngày 1 tháng 1 năm 2019.

Để truy xuất hoá đơn từ Google Ads, bạn cần thực hiện phương thức InvoiceService.ListInvoices và cung cấp đầy đủ các trường bắt buộc trong ListInvoicesRequest, bao gồm customer_id, billing_setup, issue_year và issue_month.

Lưu ý: customer_id phải là mã khách hàng của tài khoản quảng cáo Google Ads đang hoạt động. Để truy xuất tất cả các hoá đơn liên quan đến một tài khoản người quản lý thanh toán, bạn cần gửi yêu cầu riêng cho mỗi tài khoản phân phát quảng cáo thuộc Google Ads.

Ví dụ dưới đây minh họa cách thức truy xuất hoá đơn bằng các ngôn ngữ lập trình phổ biến:

// Issues the request.
ListInvoicesResponse response =
invoiceServiceClient.listInvoices(
String.valueOf(customerId),
ResourceNames.billingSetup(customerId, billingSetupId),
String.valueOf(oneMonthAgo.getYear()),
MonthOfYear.valueOf(oneMonthAgo.getMonth().toString()));

Kết quả trả về là một đối tượng ListInvoicesResponse chứa danh sách các hoá đơn phù hợp, mỗi hoá đơn chứa nhiều trường thông tin, bao gồm:

  • Mã nhận dạng: payments_account_id, payments_profile_id
  • Thời gian: issue_date, due_date, service_date_range
  • Số tiền: subtotal_amount_micros, tax_amount_micros, total_amount_micros
  • Tệp PDF: pdf_url (hãy tham khảo bài viết để biết cách tải xuống hoá đơn dưới định dạng PDF)
  • Nhật ký: corrected_invoice, replaced_invoices

Ngoài ra, một số trường đặc biệt khác cũng được cung cấp nếu có liên quan, chẳng hạn như:

  • Điều chỉnh: adjustments_subtotal_amount_micros, adjustments_tax_amount_micros, adjustments_total_amount_micros
  • Chi phí theo quy định: regulatory_costs_subtotal_amount_micros, regulatory_costs_total_amount_micros, regulatory_costs_tax_amount_micros
  • Phí xuất khẩu: export_charge_subtotal_amount_micros, export_charge_total_amount_micros, export_charge_tax_amount_micros

Lưu ý quan trọng: các hoá đơn có thể bao gồm dữ liệu từ nhiều tài khoản Google Ads nếu chúng sử dụng cùng một tài khoản thanh toán cơ bản, và tài khoản đó đủ điều kiện áp dụng chiến lược hợp nhất thanh toán.

Nhận thông tin chi tiết về ngân sách

Hoá đơn cũng cung cấp chi tiết về ngân sách tài khoản liên quan thông qua danh sách đối tượng AccountBudgetSummary trong trường account_budget_summaries, bao gồm các trường:

  • Mã khách hàng: customer, account_budget, purchase_order_number
  • Thời gian: billable_activity_date_range
  • Số tiền: subtotal_amount_micros, tax_amount_micros, total_amount_micros, invalid_activity_amount_micros, billed_amount_micros, served_amount_micros, overdelivery_amount_micros

Đang lấy thông tin tài khoản

Invoice cung cấp thông tin chi tiết về các tài khoản liên quan thông qua danh sách đối tượng AccountSummary trong trường account_summaries. Danh sách này chứa các thông tin quan trọng liên quan đến việc điều chỉnh thanh toán, các khoản điều chỉnh, phí xuất khẩu và chi phí theo quy định. Các chi tiết này giúp quản lý tài khoản quảng cáo một cách minh bạch và hiệu quả hơn.

Tìm hiểu về số tiền

Lưu ý quan trọng: sự chênh lệch giữa số tiền trong hoá đơn và số tiền liên quan đến việc phân phát quảng cáo hoặc ngân sách tài khoản là điều thường thấy và có thể dự đoán. Nguyên nhân chính là do các điều chỉnh trễ chưa được phản ánh đầy đủ trong các hoá đơn đã phát hành.

Tất cả số tiền có trong AccountBudgetSummary! AccountSummary và Các đối tượng Invoice có thể được phân bổ trong quá trình sử dụng kỳ hạn và được đánh giá theo những quy tắc sau:

AccountBudgetSummary

  • served_amount_micros: Được đánh giá bởi account_budget_serve
  • billed_amount_micros: Được đánh giá bởi account_budget_billed
  • overdelivery_amount_micros: Được đánh giá bởi account_budget_policies
  • invalid_activity_amount_micros: Được đánh giá bởi account_budget_invalid_activity
  • subtotal_amount_micros: Được đánh giá bởi account_budget_pretax
  • tax_amount_micros: Được đánh giá bởi account_budget_tax
  • total_amount_micros: Được đánh giá bởi account_budget_pretax + account_budget_tax

AccountSummary

  • billing_correction_subtotal_amount_micros: Được đánh giá bởi account_billing_correction_pretax
  • coupon_adjustment_subtotal_amount_micros: Được đánh giá bởi account_coupon_adjustment_pretax
  • excess_credit_adjustment_subtotal_amount_micros: Được đánh giá bởi account_excess_credit_adjustment_pretax
  • regulatory_costs_subtotal_amount_micros: Được đánh giá bởi account_regulatory_costs_pretax
  • export_charge_subtotal_amount_micros: Được đánh giá bởi account_export_charge_pretax
  • billing_correction_tax_amount_micros: Được đánh giá bởi account_billing_correction_tax
  • coupon_adjustment_tax_amount_micros: Được đánh giá bởi account_coupon_adjustment_tax
  • excess_credit_adjustment_tax_amount_micros: Được đánh giá bởi account_excess_credit_adjustment_tax
  • regulatory_costs_tax_amount_micros: Được đánh giá bởi account_regulatory_costs_tax
  • export_charge_tax_amount_micros: Được đánh giá bởi account_export_charge_tax
  • billing_correction_total_amount_micros: Được đánh giá bởi account_billing_editing_pretax + account_billing_correction_tax
  • coupon_adjustment_total_amount_micros: Được đánh giá bởi account_coupon_adjustments_pretax + account_coupon_adjustment_tax
  • excess_credit_adjustment_total_amount_micros: Được đánh giá bởi account_excess_credit_adjustment_pretax + account_excess_credit_adjustment_tax
  • regulatory_costs_total_amount_micros: Được đánh giá bởi account_regulatory_costs_pretax + account_regulatory_costs_tax
  • export_charge_total_amount_micros: Được đánh giá bởi account_export_charge_pretax + account_export_charge_tax
  • subtotal_amount_micros: Được đánh giá bởi account_pretax
  • tax_amount_micros: Được đánh giá bởi account_tax
  • total_amount_micros: Được đánh giá bởi account_pretax + account_tax

Invoice

  • adjustments_subtotal_amount_micros: Tổng hợp từ:
    • ∑ i=1 tài khoản_billing_chỉnh_sửa_pretax
    • ∑ i=1 tài khoản_coupon_điều_chỉnh_pretax
    • ∑ i=1 tài khoản_excess_credit_điều_chỉnh_pretax
  • regulatory_costs_subtotal_amount_micros: Được đánh giá bởi:
    • ∑ i=1 tài khoản_regulatory_costs_pretax
  • tax_amount_micros: Tổng hợp từ Điều chỉnh_tax + regulatory_costs_tax + export_charge_tax + ∑ i=1 tài khoản_budget_tax
  • total_amount_micros: Tổng hợp từ pretax + regulatory_costs_pretax + export_charge_pretax + tax

Ví dụ về cách lặp lại hoá đơn được truy xuất:

// lặp qua tất cả các hoá đơn đã được truy xuất và in thông tin của chúng
for (Invoice invoice : response.getInvoicesList()) {
System.out.printf(
"- Đã tìm thấy hoá đơn '%s':\n"
+ " id (còn được gọi là số hoá đơn): '%s'\n"
+ " Loại: %s\n"
+ " billing setup id: '%s'\n"
+ " payments account id (còn được gọi là số tài khoản thanh toán): '%s'\n"
+ " payments profile id (còn được gọi là billing id): '%s'\n"
+ " Ngày phát hành (còn được gọi là ngày hoá đơn): %s\n"
+ " Ngày đến hạn: %s\n"
+ " Mã tiền tệ: %s\n"
+ " Phạm vi ngày dịch vụ (bao gồm): từ %s đến %s\n"
+ " Điều chỉnh: tổng trước thuế '%.2f', thuế '%.2f', tổng '%.2f'\n"
+ " Chi phí quy định: tổng trước thuế '%.2f', thuế '%.2f', tổng '%.2f'\n"
+ " Hoá đơn thay thế: '%s'\n"
+ " Số tiền: tổng trước thuế '%.2f', thuế '%.2f', tổng '%.2f'\n"
+ " Hoá đơn đã chỉnh sửa: '%s'\n"
+ " pdf url: '%s'\n"
+ " ngân sách tài khoản: ",
invoice.getResourceName(),
invoice.getId(),
invoice.getType(),
invoice.getBillingSetup(),
invoice.getPaymentsAccountId(),
invoice.getPaymentsProfileId(),
invoice.getIssueDate(),
invoice.getDueDate(),
invoice.getCurrencyCode(),
invoice.getServiceDateRange().getStartDate(),
invoice.getServiceDateRange().getEndDate(),
convertMicrosToCurrency(invoice.getAdjustmentsSubtotalAmountMicros()),
convertMicrosToCurrency(invoice.getAdjustmentsTaxAmountMicros()),
convertMicrosToCurrency(invoice.getAdjustmentsTotalAmountMicros()),
convertMicrosToCurrency(invoice.getRegulatoryCostsSubtotalAmountMicros()),
convertMicrosToCurrency(invoice.getRegulatoryCostsTaxAmountMicros()),
convertMicrosToCurrency(invoice.getRegulatoryCostsTotalAmountMicros()),
invoice.getReplacedInvoicesList(),
convertMicrosToCurrency(invoice.getSubtotalAmountMicros()),
convertMicrosToCurrency(invoice.getTaxAmountMicros()),
convertMicrosToCurrency(invoice.getTotalAmountMicros()),
invoice.getCorrectedInvoice(),
invoice.getPdfUrl());
for (AccountBudgetSummary accountBudgetSummary : invoice.getAccountBudgetSummariesList()) {
System.out.printf(
" - Ngân sách tài khoản '%s':\n"
+ " tên (còn được gọi là ngân sách tài khoản): '%s'\n"
+ " khách hàng (còn được gọi là id tài khoản): '%s'\n"
+ " tên mô tả khách hàng (còn được gọi là tài khoản): '%s'\n"
+ " số đơn hàng mua (còn được gọi là số đơn mua hàng): '%s'\n"
+ " phạm vi ngày hoạt động thanh toán (bao gồm): từ %s đến %s\n"
+ " số tiền: tổng trước thuế '%.2f', thuế '%.2f', tổng '%.2f'\n",
accountBudgetSummary.getAccountBudget(),
accountBudgetSummary.getAccountBudgetName(),
accountBudgetSummary.getCustomer(),
accountBudgetSummary.getCustomerDescriptiveName(),
accountBudgetSummary.getPurchaseOrderNumber(),
accountBudgetSummary.getBillableActivityDateRange().getStartDate(),
accountBudgetSummary.getBillableActivityDateRange().getEndDate(),
convertMicrosToCurrency(accountBudgetSummary.getSubtotalAmountMicros()),
convertMicrosToCurrency(accountBudgetSummary.getTaxAmountMicros()),
convertMicrosToCurrency(accountBudgetSummary.getTotalAmountMicros()));
}
}

Tải bản PDF của hoá đơn xuống

Bạn có thể tải mọi hoá đơn xuống dưới dạng tệp pdf. Sau khi truy xuất hoá đơn, bạn cần gửi một yêu cầu http đến url được lưu trữ trong pdf_url. Yêu cầu này phải được xác thực bằng chính tài khoản google dùng để truy xuất hoá đơn; tức là bạn cần sử dụng mã thông báo oauth để xác thực yêu cầu, bằng cách chỉ định mã thông báo truy cập trong tiêu đề Authorization: Bearer.

Ví dụ:

curl --request GET \
--header "Authorization: Bearer access_token" \
Invoice.pdf_url > filename.pdf

Kết quả là nội dung pdf của hoá đơn sẽ được lưu vào tệp filename.pdf.

Mã lỗi phổ biến

Trường hợp Mã lỗi
Thông tin thanh toán, năm phát hành hoặc tháng phát hành bị thiếu hoặc trống. RequestError.REQUIRED_FIELD_MISSING
Không thể phân tích cú pháp thông tin thanh toán, năm phát hành hoặc tháng phát hành đã cung cấp. FieldError.INVALID_VALUE
Yêu cầu dành cho hoá đơn phát hành trước ngày 1 tháng 1 năm 2019. InvoiceError.YEAR_MONTH_TOO_OLD
Yêu cầu dành cho khách hàng không nhận được hoá đơn. InvoiceError.NOT_INVOICED_CUSTOMER
Người dùng không có quyền xem hoá đơn của thông tin thanh toán đó. AuthorizationError.ACTION_NOT_PERMITTED

Quản lý hoá đơn Google Ads là một phần quan trọng trong việc theo dõi chi tiêu quảng cáo của bạn. Bằng cách sử dụng InvoiceService và làm theo các bước được hướng dẫn, bạn có thể dễ dàng truy xuất, tải về và quản lý hoá đơn của mình một cách hiệu quả. Điều này không chỉ giúp bạn kiểm soát ngân sách mà còn giúp doanh nghiệp duy trì sự minh bạch và chính xác trong các báo cáo tài chính. Hãy đảm bảo bạn tuân thủ các điều kiện cần thiết và xử lý nhanh chóng các lỗi có thể phát sinh để đảm bảo quá trình truy xuất hoá đơn diễn ra suôn sẻ.

Facebook
X
LinkedIn
Tumblr
Threads
logo_v4seowebsite

V4SEO là đội ngũ SEO & Web xuất phát từ Nha Trang, triển khai dự án cho doanh nghiệp trên toàn quốc. Chúng tôi cung cấp Dịch vụ SEO Nha Trang theo chuẩn Google, kết hợp kỹ thuật, nội dung và entity để tăng trưởng bền vững. Song song, Dịch vụ thiết kế website Nha Trang tối ưu UX, tốc độ và Core Web Vitals nhằm tối đa chuyển đổi; báo cáo minh bạch, hỗ trợ dài hạn.

Nội dung được sự cố vấn của chuyên gia SEO - Võ Quang Vinh
author-founder-v4seowebsite

Võ Quang Vinh – Chuyên gia SEO với hơn 10 năm kinh nghiệm triển khai hàng trăm dự án SEO tổng thể, từ thương mại điện tử đến dịch vụ địa phương. Từng đảm nhiệm vai trò SEO và là Keymember tại Gobranding và dân dắt đội SEO BachhoaXanh.com, anh là người đứng sau nhiều chiến dịch tăng trưởng traffic vượt bậc. Hiện tại, Vinh là người sáng lập và điều hành V4SEO, cung cấp giải pháp SEO & thiết kế website chuẩn UX/UI giúp doanh nghiệp bứt phá thứ hạng Google và tối ưu chuyển đổi. 

Bài viết liên quan
ĐĂNG KÝ V4SEO NGAY HÔM NAY KHUYẾN MÃI 15% TẤT CẢ DỊCH VỤ ÁP DỤNG TỚI HẾT THÁNG 12/2025

Nhận tư vấn từ V4SEO Đăng ký ngay hôm nay Bứt phá trong mai sau