Skip to content

Render tax details in the transaction timeline #10707

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 28 commits into
base: develop
Choose a base branch
from

Conversation

marcinbot
Copy link
Contributor

@marcinbot marcinbot commented Apr 17, 2025

Fixes WOOPMNT-4878

Changes proposed in this Pull Request

This PR adds support for displaying tax information in the transaction timeline where available. The changes include:

  • Added new TimelineFeeTax interface to support tax details including amount, currency, description, and percentage rate
  • Extended TimelineFeeRates interface to include tax and before_tax information
  • Added new composeTaxString function to format tax information for display
  • Updated fee string composition to handle tax-related amounts
  • Modified timeline event mapping to include tax details in the display
  • Updated test snapshots to reflect the new tax display functionality

The tax information will be displayed in the transaction timeline with the following format:

  • Tax description (if available)
  • Tax percentage rate (if available)
  • Tax amount in the appropriate currency

This change helps merchants better understand the tax components of their transaction fees.

Screenshots

1. Tax information in the timeline

Screenshot 2025-05-06 at 12 00 34

2. Tax information in the Transaction breakdown

Screenshot 2025-05-06 at 12 02 20

Testing instructions

Note: The transaction breakdown is temporarily disabled. Please edit the disableTransactionBreakdown const to enable it.

The tax on fee feature is under development, you need to set a metadata flag in the server to use it: npm run cli wp wcpay set_account_meta <YOUR_ACCOUNT_ID> --key=tax_on_fee_enabled --value=1.

Please note the tax calculation feature is limited to accounts not in US, CA, HK, AE so you might need to re-onboard with an account in a supported country from this list.

  • View any charge from before the tax
  • Confirm the timeline renders correctly
  • Create a charge with tax applied to fees
  • Confirm the tax appears in the timeline

@botwoo
Copy link
Collaborator

botwoo commented Apr 17, 2025

Test the build

Option 1. Jetpack Beta

  • Install and activate Jetpack Beta.
  • Use this build by searching for PR number 10707 or branch name fix/10616-tax-details in your-test.site/wp-admin/admin.php?page=jetpack-beta&plugin=woocommerce-payments

Option 2. Jurassic Ninja - available for logged-in A12s

🚀 Launch a JN site with this branch 🚀

ℹ️ Install this Tampermonkey script to get more options.


Build info:

  • Latest commit: d662f0b
  • Build time: 2025-05-07 16:36:33 UTC

Note: the build is updated when a new commit is pushed to this PR.

Copy link
Contributor

github-actions bot commented Apr 17, 2025

Size Change: +581 B (0%)

Total Size: 1.26 MB

Filename Size Change
release/woocommerce-payments/dist/index.js 232 kB +581 B (0%)
ℹ️ View Unchanged
Filename Size
release/woocommerce-payments/assets/css/admin.css 1.45 kB
release/woocommerce-payments/assets/css/admin.rtl.css 1.45 kB
release/woocommerce-payments/assets/css/success.css 1.06 kB
release/woocommerce-payments/assets/css/success.rtl.css 1.06 kB
release/woocommerce-payments/dist/blocks-checkout-rtl.css 2.74 kB
release/woocommerce-payments/dist/blocks-checkout.css 2.74 kB
release/woocommerce-payments/dist/blocks-checkout.js 56.2 kB
release/woocommerce-payments/dist/cart-block.js 17.3 kB
release/woocommerce-payments/dist/cart.js 5.73 kB
release/woocommerce-payments/dist/checkout-rtl.css 1.28 kB
release/woocommerce-payments/dist/checkout.css 1.28 kB
release/woocommerce-payments/dist/checkout.js 34.7 kB
release/woocommerce-payments/dist/express-checkout-rtl.css 367 B
release/woocommerce-payments/dist/express-checkout.css 367 B
release/woocommerce-payments/dist/express-checkout.js 15.9 kB
release/woocommerce-payments/dist/frontend-tracks.js 854 B
release/woocommerce-payments/dist/index-rtl.css 19.6 kB
release/woocommerce-payments/dist/index.css 19.6 kB
release/woocommerce-payments/dist/multi-currency-analytics.js 1.08 kB
release/woocommerce-payments/dist/multi-currency-rtl.css 4.39 kB
release/woocommerce-payments/dist/multi-currency-switcher-block.js 60.9 kB
release/woocommerce-payments/dist/multi-currency.css 4.39 kB
release/woocommerce-payments/dist/multi-currency.js 56.4 kB
release/woocommerce-payments/dist/order-rtl.css 740 B
release/woocommerce-payments/dist/order.css 740 B
release/woocommerce-payments/dist/order.js 42.3 kB
release/woocommerce-payments/dist/payment-gateways-rtl.css 1.34 kB
release/woocommerce-payments/dist/payment-gateways.css 1.34 kB
release/woocommerce-payments/dist/payment-gateways.js 37.4 kB
release/woocommerce-payments/dist/plugins-page-rtl.css 375 B
release/woocommerce-payments/dist/plugins-page.css 375 B
release/woocommerce-payments/dist/plugins-page.js 20.1 kB
release/woocommerce-payments/dist/product-details-rtl.css 433 B
release/woocommerce-payments/dist/product-details.css 436 B
release/woocommerce-payments/dist/product-details.js 12.7 kB
release/woocommerce-payments/dist/settings-rtl.css 12 kB
release/woocommerce-payments/dist/settings.css 12 kB
release/woocommerce-payments/dist/settings.js 222 kB
release/woocommerce-payments/dist/subscription-edit-page.js 703 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal-rtl.css 524 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal.css 524 B
release/woocommerce-payments/dist/subscription-product-onboarding-modal.js 20.2 kB
release/woocommerce-payments/dist/subscription-product-onboarding-toast.js 730 B
release/woocommerce-payments/dist/subscriptions-empty-state-rtl.css 120 B
release/woocommerce-payments/dist/subscriptions-empty-state.css 120 B
release/woocommerce-payments/dist/subscriptions-empty-state.js 19.3 kB
release/woocommerce-payments/dist/success.js 6.03 kB
release/woocommerce-payments/dist/tokenized-express-checkout-rtl.css 367 B
release/woocommerce-payments/dist/tokenized-express-checkout.css 367 B
release/woocommerce-payments/dist/tokenized-express-checkout.js 17.1 kB
release/woocommerce-payments/dist/tos-rtl.css 235 B
release/woocommerce-payments/dist/tos.css 235 B
release/woocommerce-payments/dist/tos.js 21.8 kB
release/woocommerce-payments/dist/woopay-direct-checkout.js 6.13 kB
release/woocommerce-payments/dist/woopay-express-button.js 23.5 kB
release/woocommerce-payments/dist/woopay-rtl.css 4.31 kB
release/woocommerce-payments/dist/woopay.css 4.28 kB
release/woocommerce-payments/dist/woopay.js 71.1 kB
release/woocommerce-payments/includes/subscriptions/assets/css/plugin-page.css 625 B
release/woocommerce-payments/includes/subscriptions/assets/js/plugin-page.js 814 B
release/woocommerce-payments/vendor/automattic/jetpack-assets/build/i18n-loader.js 2.46 kB
release/woocommerce-payments/vendor/automattic/jetpack-assets/build/jetpack-script-data.js 957 B
release/woocommerce-payments/vendor/automattic/jetpack-assets/src/js/i18n-loader.js 1.02 kB
release/woocommerce-payments/vendor/automattic/jetpack-assets/src/js/script-data.js 69 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/babel.config.js 163 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/identity-crisis.css 2.47 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/identity-crisis.js 14.3 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/identity-crisis.rtl.css 2.47 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-connection.css 10.1 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-connection.js 29.7 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-connection.rtl.css 10.1 kB
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-admin-create-user.css 198 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-admin-create-user.js 280 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-admin-create-user.rtl.css 198 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-login.css 625 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-login.js 333 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-login.rtl.css 626 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-sso-users.js 417 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/jetpack-users-connection.js 161 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/tracks-ajax.js 521 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/dist/tracks-callables.js 585 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-admin-create-user.css 215 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-admin-create-user.js 521 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-login.css 721 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-login.js 412 B
release/woocommerce-payments/vendor/automattic/jetpack-connection/src/sso/jetpack-sso-users.js 625 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/about.css 1.04 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin-empty-state.css 294 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin-order-statuses.css 408 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/admin.css 3.59 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/checkout.css 301 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/modal.css 746 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/view-subscription.css 574 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/css/wcs-upgrade.css 414 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/admin-pointers.js 543 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/admin.js 9.4 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/jstz.js 6.78 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/jstz.min.js 3.84 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/meta-boxes-coupon.js 545 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/meta-boxes-subscription.js 2.52 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/moment.js 22.2 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/moment.min.js 11.7 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/payment-method-restrictions.js 1.29 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/admin/wcs-meta-boxes-order.js 507 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/payment-methods.js 358 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/single-product.js 428 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/view-subscription.js 1.38 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/frontend/wcs-cart.js 782 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/modal.js 1.09 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/assets/js/wcs-upgrade.js 1.26 kB
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/build/index.css 391 B
release/woocommerce-payments/vendor/woocommerce/subscriptions-core/build/index.js 3.04 kB

compressed-size-action

@mgascam mgascam self-assigned this Apr 21, 2025
@mgascam mgascam marked this pull request as ready for review May 6, 2025 10:06
@mgascam mgascam requested a review from a team May 6, 2025 10:07
Copy link
Contributor

@frosso frosso left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I havent' been able to see the tax breakdown in any of my transactions, yet. Do you have some suggestions for me? 😬

* - "AU GST" for Australian Goods and Services Tax
*/
type TaxDescriptionKey =
| 'AT VAT' // Austria VAT
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(minor) do we get any advantage by specifically typing each one of these? I wonder if we can just declare TaxDescriptionKey as a string, and taxDescriptions as Record< string, string > 🤷

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 here. We should probably avoid hardcoding things in this way and over-relying on types to enforce values too. Especiallly that we also have a handling for the default (i.e. not found) case.

@mgascam
Copy link
Contributor

mgascam commented May 6, 2025

I havent' been able to see the tax breakdown in any of my transactions, yet. Do you have some suggestions for me? 😬

@frosso My bad, you need to set a metadata flag in the server: npm run cli wp wcpay set_account_meta <YOUR_ACCOUNT_ID> --key=tax_on_fee_enabled --value=1. Just added it to the description, sorry!

@frosso
Copy link
Contributor

frosso commented May 7, 2025

Thank you @mgascam !
I now added the tax_on_fee_enabled meta to my account on the server.
I updated the disableTransactionBreakdown flag

diff --git a/client/payment-details/transaction-breakdown/index.tsx b/client/payment-details/transaction-breakdown/index.tsx
index 00aa2eff2..0ce362ffb 100644
--- a/client/payment-details/transaction-breakdown/index.tsx
+++ b/client/payment-details/transaction-breakdown/index.tsx
@@ -35,7 +35,7 @@ interface PaymentTransactionBreakdownProps {
  *
  * Switch to `false` while testing.
  */
-const disableTransactionBreakdown = true;
+const disableTransactionBreakdown = false;
 
 const PaymentTransactionBreakdown: React.FC< PaymentTransactionBreakdownProps > = ( {
 	paymentIntentId,

But I still can't see the tax on the transaction breakdown.
I attempted this with a US-based and IT-based customer.

Screenshot 2025-05-07 at 11 34 04 AM

Do I need anything else to see the tax in the transaction details page?

…iptions to be in English language by default.
@mgascam
Copy link
Contributor

mgascam commented May 7, 2025

But I still can't see the tax on the transaction breakdown. I attempted this with a US-based and IT-based customer.

Do I need anything else to see the tax in the transaction details page?

Apologies again, @frosso — I forgot to mention that tax calculation is limited to merchants based in certain countries. This means the merchant account linked to your WooPayments store must be located in a supported country, and the appropriate metadata flag must be set on that account.
I’ve added a reference to the list of supported countries in the testing instructions. For testing, you can use a merchant based in ES, GB, or IT, for example.
Please note that the customer’s country is not relevant to the tax calculation — only the merchant’s country matters, since the fees are charged to them.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants