# Anchors of 0002-stripe-eur-tax-products.patch (plan part 1, task 3.4 and decision 1.6).
# Format: path|literal text|exact count (see anchors/0004-tiktok-audit-ux.txt).
#
# Five hardcoded currencies and three product lookups on the pinned Stripe SDK.
pnpm-lock.yaml|  stripe@20.4.0:\n    resolution:|1
libraries/nestjs-libraries/src/services/stripe.service.ts|currency: 'usd'|5
libraries/nestjs-libraries/src/services/stripe.service.ts|(product) => product.name.toUpperCase() === body.billing.toUpperCase()|3
libraries/nestjs-libraries/src/services/stripe.service.ts|        name: body.billing,|3
libraries/nestjs-libraries/src/services/stripe.service.ts|ild_tier|0
libraries/nestjs-libraries/src/services/stripe.service.ts|  private async createCheckoutSession(|1
libraries/nestjs-libraries/src/services/stripe.service.ts|    const { url } = await stripe.checkout.sessions.create({\n      customer,|1
libraries/nestjs-libraries/src/services/stripe.service.ts|  private async createEmbeddedCheckout(|1
#
# Contract of the result: only the hosted Checkout collects tax IDs and updates billing details.
after:libraries/nestjs-libraries/src/services/stripe.service.ts|'usd'|0
after:libraries/nestjs-libraries/src/services/stripe.service.ts|'eur'|5
after:libraries/nestjs-libraries/src/services/stripe.service.ts|    const { url } = await stripe.checkout.sessions.create({\n      customer,\n      locale: 'pt',\n      billing_address_collection: 'required',\n      tax_id_collection: { enabled: true, required: 'if_supported' },\n      automatic_tax: { enabled: true },\n      customer_update: { name: 'auto', address: 'auto' },|1
after:libraries/nestjs-libraries/src/services/stripe.service.ts|tax_id_collection:|1
after:libraries/nestjs-libraries/src/services/stripe.service.ts|automatic_tax:|1
# Metadata must win over a legacy name even when the legacy product appears first in the list.
after:libraries/nestjs-libraries/src/services/stripe.service.ts|      allProducts.data.find(\n        (product) => product.metadata?.ild_tier === body.billing\n      ) ||\n      allProducts.data.find(\n        (product) => product.name.toUpperCase() === body.billing.toUpperCase()\n      )|3
after:libraries/nestjs-libraries/src/services/stripe.service.ts|        name: ildProductNames[body.billing],\n        metadata: { ild_tier: body.billing },|3
after:libraries/nestjs-libraries/src/services/stripe.service.ts|  STANDARD: 'iLoveDigital Social Inicial',|1
after:libraries/nestjs-libraries/src/services/stripe.service.ts|  TEAM: 'iLoveDigital Social Equipa',|1
after:libraries/nestjs-libraries/src/services/stripe.service.ts|  PRO: 'iLoveDigital Social Agência',|1
after:libraries/nestjs-libraries/src/services/stripe.service.ts|  ULTIMATE: 'iLoveDigital Social Interno',|1
# Currencies derived from Stripe invoices, charges and previews are not rewritten.
after:libraries/nestjs-libraries/src/services/stripe.service.ts|currency: invoice.currency|2
after:libraries/nestjs-libraries/src/services/stripe.service.ts|currency: charge.currency|1
after:libraries/nestjs-libraries/src/services/stripe.service.ts|currency: lastCharge.currency|1
after:libraries/nestjs-libraries/src/services/stripe.service.ts|currency: preview.currency|1
