Koru Financing Options
Shows your VTEX payment rules' installments and banks on the product page, with logos, CFT/TEA and highlights — no manual data entry, always with the real amounts.
Pre-release installation identifier
Koru Financing Options currently runs internally as pardosit.koru-financing-options
for development only. The final public VTEX App ID will replace
{vendor}.koru-financing-options in every command and in the theme dependency before
publish or release. Do not use the development account for a production installation.
Koru Financing Options is a VTEX Admin App with a storefront block that shows, on the product page, the store's real financing options: how many installments, with which bank and payment method, how much each installment costs, the plan total and the difference against the cash price.
What sets it apart from a traditional installments app is where the data comes from. Instead of typing banks, installments, validity dates and recurrences by hand, the app reads the payment rules that already exist in VTEX and groups them into options. The operator only adds what VTEX does not have: the bank or card logo, colors, a display name, the order, which ones to highlight, and the regulatory data (CFT, TEA and legal disclaimers). The amounts shoppers see are never calculated by the app: they come from the product itself in VTEX, so they cannot contradict the checkout.
The app has two sides:
- In VTEX Admin, the ecommerce team reviews the options coming from their payment rules, sees which ones are shown today and why, enriches them, uploads logos and adds options VTEX does not have as a rule (for example Mercado Pago or MODO).
- On the product page, the
financing-blockblock shows the headline installment, the highlighted options, a plan comparison table and a popup with the full detail, filterable by bank or card.
What Koru Financing Options does not do
Koru Financing Options does not create, edit or delete payment rules, payment conditions or promotions in VTEX: those are still managed in VTEX's Payments module. It does not change what the checkout charges, does not compute its own interest, does not show payment-method discounts, and does not appear on the product page by itself: the block is declared in the store's Store Theme.
About CFT and TEA
CFT (Costo Financiero Total, total financial cost) and TEA (Tasa Efectiva Anual, effective annual rate) are the rates Argentine regulations require stores to display next to installment plans. The storefront shows them as "CFT" and "EAR/TEA" depending on the store language.
Before you begin
Recommended owners
| Task | Usual owner |
|---|---|
| Install the app and validate the account/workspace | VTEX agency, developer or tech lead |
| Activate the app for the site in Koru Suite | Red Clover / Koru Suite administrator |
| Declare the block in the Store Theme | Theme developer |
| Maintain payment rules in VTEX | Payments owner or ecommerce manager |
| Enrich options and enter CFT/TEA | Ecommerce manager or commercial owner |
| Upload bank and payment-method logos | Ecommerce manager or design |
| Validate the product page before publishing | Ecommerce manager or QA |
One person may cover several roles in a small store.
Required access
Before installing, make sure you have:
- A valid VTEX Admin session in the store account.
- A License Manager role with the Gerenciar condições de pagamento (manage
payment conditions) resource —
GerenciarCondicoesPagamento— for the people who will use the app. Without it, VTEX rejects reading the payment rules and the app reports it with the name of the missing resource. - The official VTEX CLI installed and up to date.
- Permission to install apps in the chosen workspace and to modify the app's settings.
- Access to the store's Store Theme repository, to declare the block.
- The ecommerce Website ID in Koru Suite, with Koru Financing Options active for that site.
Koru Financing Options does not create its own VTEX role. Access is managed with the access controls available in VTEX License Manager.
Identifiers you will encounter
| Identifier | Example | Defined by | Configured? |
|---|---|---|---|
| Store VTEX account | my-store | Merchant | Used to log in with the CLI |
| VTEX workspace | master or financing-qa | Merchant/agency | Determines where it is installed and validated |
| VTEX App ID | {vendor}.koru-financing-options | App publisher | Used in vtex install and in the theme |
| Storefront block | financing-block | The app | Declared in the theme |
| Koru Website ID | Site UUID | Koru Suite | Yes, once per store |
| Koru App ID | Internal Koru Financing Options UUID | App build | No; it is built in and cannot be changed |
Do not mix up the two accounts
The store account, used in vtex login, does not necessarily match {vendor}, which
represents the account that publishes Koru Financing Options.
Installation with the VTEX CLI
Installation uses the official VTEX CLI and has two parts: installing the app in the account (this section) and declaring the block in the theme (see below). Without the second part, the Admin works fully but shoppers see nothing.
Install in a validation workspace first
If the store has a QA process, install and configure in a development workspace first. Replace the values in braces:
Log in to the store account
vtex login {store-account}Select the validation workspace
vtex use {store-account}/{workspace}Confirm the context before installing
vtex whoamiThe output must show the account and workspace you expect. Do not continue if the context is wrong.
Install Koru Financing Options
vtex install {vendor}.koru-financing-options@0.xThe 0.x range installs the latest available version of major 0.
Open the app in VTEX Admin
The app appears in the VTEX Admin side menu, under the store setup section, as Opciones de Financiación. You can also navigate directly:
https://{workspace}--{store-account}.myvtex.com/admin/koru-financing-optionsFor master, use the account's main Admin domain:
https://{store-account}.myvtex.com/admin/koru-financing-optionsIf the app does not show up in the navigation, check vtex list, reload VTEX Admin and
make sure you are looking at the same account and workspace where you installed it.
Install in master
Once the setup is validated in the corresponding workspace, select master, confirm the
context again and repeat the installation:
vtex use {store-account}/master
vtex whoami
vtex install {vendor}.koru-financing-options@0.x
vtex listSettings are per installation/workspace. Check the Website ID in the final environment even if you already tested it in another workspace. Enrichment, logos and manual options, on the other hand, are stored at the account level.
Updating and uninstalling
Update within the current major
Select the right account/workspace, confirm it and install the range again:
vtex whoami
vtex install {vendor}.koru-financing-options@0.x
vtex listAfter updating, open the app, confirm the license and open the Options tab so the copy of the rules used by the product page is regenerated. Then check a real product page.
0.x versions may change the block structure
While the app is on 0.x, a new version may change the block's HTML structure and its
CSS handles. If the theme overrides the block's styles, review them in a workspace
before updating master.
Uninstall
Uninstalling applies to the current workspace:
vtex whoami
vtex uninstall {vendor}.koru-financing-options
vtex listBefore uninstalling, remove the block and the dependency from the Store Theme: if
the theme still references financing-block without the app installed, the product page
fails with a missing block error.
Uninstalling does not touch your payment rules
The app never modified VTEX's payment rules, so uninstalling it changes nothing in the checkout. Enrichment, logos and manual options stay stored in the account and become available again if the app is reinstalled.
Activation and first access
Get the Website ID
Before first use, Red Clover must activate Koru Financing Options for the corresponding website in Koru Suite. The Website ID is obtained from Koru Suite or delivered during activation.
The Website ID:
- Identifies the ecommerce within Koru Suite.
- Is not a password or a secret.
- Must belong to the same VTEX store where you installed the app.
- Is the only Koru identifier the merchant enters manually.
Connect the store
On first access, the app shows Connect this store to Koru Suite:
Paste the Website ID
Enter the full value, with no extra spaces.
Save and continue
The app stores the value in its VTEX settings. It can also be managed from the app's
Settings tab or from Admin → Apps → Opciones de Financiación, using the
koruWebsiteId property.
Confirm the license
The Overview tab must show the license as active. If an inactive license screen appears, do not continue: first check the Website ID and the activation in Koru Suite.
The app does not ask for an extra Koru login. The person is already authenticated in VTEX Admin; Koru Suite only validates that the Website ID + Koru Financing Options combination has an active license.
Each tab includes a guided tour that opens the first time you visit it and that you can replay with the View tour button.
Recommended initial setup
Follow this order to get to a correct product page without surprises:
Confirm the Website ID and the active license
In Overview, the Koru authorization check must be active. Without a license, the product page shows only VTEX's basic installment, with none of what you configure.
Open the Options tab and review the list
The app reads the account's payment rules and groups them into options. This step also generates the copy of the rules used by the product page: until someone opens Options (or Logos) for the first time, the product page shows nothing enriched.
Review the Visibility column
Make sure the options you expect to see today show as Visible. If one does not, the column states the reason (inactive in VTEX, validity expired, not started yet, does not apply today due to its recurrence). It is fixed in the VTEX payment rule, not in the app.
Upload the logos
In Logos, upload the logo of each bank and payment method that will appear on the product page. Without a logo, the page shows a colored badge with the name.
Enrich the options
From Enrich, enter the display name and colors of the bank or payment method and, for every option with interest, the CFT and TEA. Highlight the ones you want to show first and hide the ones that do not apply.
Add the options VTEX does not have
If you offer financing that does not exist as a payment rule (for example installments with Mercado Pago or MODO), create it with Create option.
Declare the block in the theme and validate in a workspace
Follow Show the block on the product page and check several real product pages: with and without interest, with and without logo, on desktop and mobile.
Full configuration
The installation's own configuration is minimal: everything operational (enrichment, logos, manual options) is managed from the app's tabs.
| Field | Key | Default | Behavior |
|---|---|---|---|
| Koru Website ID | koruWebsiteId | — (no default) | Connects the store to the Koru license. Without it, the app stays on the setup screen and the product page shows only VTEX's basic installment. |
The Koru App ID is built into the app and cannot be overridden from settings. Nothing is applied until you save; if you try to leave Settings with unsaved changes, the browser warns you.
How options are built
From payment rules to options
VTEX usually has many nearly identical payment rules: the same installment promotion repeated per card level (classic, gold, platinum…), per payment condition or per sales channel. For shoppers that is a single option. The app groups into one option all the rules that share:
- the issuing bank,
- the payment method,
- the installments with their interest rate,
- the validity (start and end date), and
- the recurrence (the weekdays on which it applies).
Card level, payment condition and sales channel do not split options. An option is considered active if at least one of its rules is. The list is sorted by bank and, within each bank, from most installments to fewest.
Visibility: is it shown on the product page today?
Each option shows a status, evaluated in this order:
| Status | Meaning | Where to fix it |
|---|---|---|
| Inactive in VTEX | None of its rules is active. | In the VTEX payment rule |
| Validity expired | The end date has passed. | In the VTEX payment rule |
| Not started yet | The start date is in the future. | Wait or change the rule |
| Does not apply today | It has a recurrence and today is not one of its days. | In the rule's recurrence |
| Visible | It applies today. | — |
The product page recalculates visibility on every request, so an option with a recurrence (for example "Wednesdays only") appears and disappears on its own. Also, an option hidden from Enrich is not shown on the product page even if it is visible.
Which options appear on each product
The product page does not show every option on every product. It matches each option against the installments VTEX calculates for that product: an option appears only if the product has the same payment method, the same number of installments and the same rate. That way, a product that does not allow 18 installments never shows "18 interest-free installments", and the amounts are always VTEX's.
Manual options are the exception: since they do not exist in VTEX, there are no product installments to match them against, so they are always shown while active and valid.
Enrichment
From the Options tab, the Enrich button on each row opens a form with two sections.
Reusable data (per bank or payment method)
Shared with all options of the same bank or, if the option has no bank, of the same payment method. Enter it once and it applies to all their campaigns.
| Field | Limit | Use on the product page |
|---|---|---|
| Display name | Up to 60 characters | Replaces the technical name of the bank or method. |
| Badge color | #RRGGBB | Badge background when there is no logo. |
| Text color | #RRGGBB | Badge text when there is no logo. |
This option's data
Applies only to the option you are editing.
| Field | Limit | Use on the product page |
|---|---|---|
| Highlight this option | Yes / No | Highlighted options are shown first, above the table. |
| Order | Integer from 0 to 9999 | Sorts options; options without an order go last. |
| CFT | 0 to 999.99 (% per year, 2 decimals) | Shown in the legal footer and in the popup. |
| TEA | 0 to 999.99 (% per year, 2 decimals) | Shown in the legal footer and in the popup. |
| Legal disclaimer | Up to 500 characters | Shown in the legal footer and in the popup. |
| Hide this option | Yes / No | The option is not shown on the product page. |
CFT and TEA are regulatory data
VTEX does not expose the total financial cost or the effective annual rate in any API, which is why they are entered by hand. In the block, rates are only shown for the visible options with interest; rates from different payment methods are never mixed in the same line, so it is always clear which method each CFT belongs to.
When a campaign changes in VTEX: "New" status
The Enrichment column shows whether the option is Enriched, Not enriched or New.
An option becomes New when the campaign it had enriched is rebuilt in VTEX: its installments or rates, dates, recurrence, bank or payment method change. From the app's point of view it is a different option, so:
- The option's data (CFT, TEA, disclaimer, highlight, order, hide) stops being shown on the product page. Showing a CFT entered for a rate that no longer exists would be risky.
- The bank's or method's reusable data stays visible.
- When you open Enrich, the form brings back the previous values so you can review them and confirm them with Save.
Changing only the card level, payment condition or sales channel does not turn the option into a new one.
Manual options
With Create option you add financing that does not exist as a payment rule in VTEX, for example installments from a digital wallet processed outside the standard checkout.
| Field | Limit | Notes |
|---|---|---|
| Payment method | Up to 60 characters, with at least one letter or digit | If it matches the name of a method that already has a logo, that logo is used. |
| Number of installments | Integer from 1 to 36 | |
| Interest-free / Interest rate | Rate greater than or equal to 0 | With interest, the product page does not show the per-installment amount. |
| Valid from / until | Optional | "Until" cannot be earlier than "from". Dates are taken in Argentina time (UTC−3). |
| Days of the week | Optional | For promotions that apply only on some days. |
| Active option | Yes by default | Turn it off to withdraw it without deleting it. |
- There cannot be two manual options for the same method with the same number of installments (ignoring case, accents and spaces).
- A manual option is enriched like any other, from Enrich.
- Edit details and Delete are in the Actions column. Deleting cannot be undone and also removes its enrichment.
- On the product page they are always shown (they are not matched against the product's installments), with a per-installment amount equal to price ÷ installments when they are interest-free.
A manual option promises something VTEX does not validate
VTEX's checkout does not know about manual options. Only enter financing the store actually offers, and check its validity: once expired it stops showing on its own, but an option with no "until" date stays published until you deactivate it.
Logos
The Logos tab lists every bank and every payment method that appears in the account's payment rules, once each. The logo you upload is used in every option where it appears.
| Requirement | Value |
|---|---|
| Format | PNG or WebP (JPG is not accepted) |
| Background | Transparent, recommended |
| Height | 48 px (40 to 56 px accepted) |
| Width | Up to 144 px |
| Size | Up to 100 KB |
- The file is validated in the browser before uploading and again on the server.
- On the product page, the logo replaces the colored badge. If an option has both a bank logo and a payment-method logo, the bank logo is shown.
- Once saved, the product page shows it within 15 minutes (see Update times).
- Replace uploads a new version; the With logo / Without logo filters help you see what is missing.
Show the block on the product page
The app declares the financing-block block, but it is the store's Store Theme that
places it on the product page. There are two changes in the theme repository.
Declare the dependency in the theme's manifest.json
"dependencies": {
"{vendor}.koru-financing-options": "0.x"
}The range must match the installed major. If the app moves to 1.x, the theme must
update the range or it stops finding the block.
Add the block to store.product
The recommended placement is the buy column, below the price, which is where shoppers are already looking at installments:
// store/blocks/product.jsonc
{
"flex-layout.col#right-col": {
"children": [
"product-name",
"product-price",
"financing-block",
"product-quantity",
"add-to-cart-button"
]
},
"financing-block": {
"props": {
"maxHighlights": 3
}
}
}financing-block does not accept children. It can go anywhere in the store.product
tree, because it reads the product from VTEX's product context.
Link or publish the theme in a workspace and validate
Check real product pages before promoting to master. Remember to open the Admin's
Options tab in the account first (see Recommended initial setup).
Block props
All are optional and can also be edited from the Site Editor.
showHighlightsboolean · default trueoptionalShows the block. When false, the block is not rendered.
maxHighlightsnumber · default 3optionalMaximum number of highlighted options above the table, counting the headline installment.
titlestring · default emptyoptionalBlock title. Empty uses the app's translated text ("Financing").
subtitlestring · default emptyoptionalGray text below the title. Empty shows nothing.
triggerLabelstringoptionalText of the link that opens the popup. Accepts {count} to insert the number of plans.
modalTitlestringoptionalPopup title. Default: "Opciones de financiación".
closeLabelstringoptionalText of the button that closes the popup. Default: "Cerrar".
What shoppers see
- Headline installment: the product's best interest-free option, large, with its per-installment amount and the bank or method. On a tie, the one with more installments wins.
- Highlights: the options marked as highlighted (or, if there are none, the ones that
apply), up to
maxHighlights, each with its logo or badge. - Comparison table: plan rows with installment amount, total and the difference vs. cash price, grouped into Interest-free, Cheaper than cash and With interest, plus the "1 payment" row.
- Popup ("See all N plans, with total and CFT"): Interest-free, More installments and Cash tabs, a bank or card filter, and extra columns with TEA / CFT and the payment-method logos. It closes with Escape, by clicking outside or with the button.
- Legal footer: CFT/TEA of the visible options with interest, the legal disclaimers entered, and always the note that the final plan is confirmed at checkout.
The block is translated into Spanish, English and Portuguese, following the store language. While loading, it reserves its space with a skeleton so the page does not jump.
Styles
The app ships its own base styles, so the block looks right straight after installation
without writing any CSS. To adapt it to the brand, the theme can override the block's
CSS handles (container, title, hero, highlight, badge, logo, table,
tableRow, modal, legal, among others) with the prefix
{vendor}-koru-financing-options-0-x-.
If something does not look right
| Symptom on the product page | Likely cause |
|---|---|
The page fails with Missing block …:financing-block | The theme uses the block but does not declare the dependency, or declares another major. |
| Nothing appears and the page loads fine | The product has no installments in VTEX (and there are no manual options), or showHighlights is false. |
| Installments show without logos, highlights or CFT | The page is in basic mode: inactive license, nobody has opened the Options tab yet, or no enriched option matches that product's installments. |
| A change made in the Admin does not show yet | Product page cache: it can take up to 15 minutes. |
Update times
The product page does not query VTEX Admin on every visit. It works with a copy of the options and a short cache, so it adds no latency to the page:
- Changes in the app (enrichment, logos, manual options): shown on the product page within 5 to 15 minutes.
- Changes in VTEX payment rules (a new campaign, a change of installments or validity): the copy is refreshed every time someone opens the Options or Logos tab in the Admin. After editing rules in VTEX, open Options and use Refresh; the product page reflects it within the next 15 minutes.
- Visibility by date and recurrence: recalculated on every request, no need to open the Admin.
Screens and daily operation
The app is organized into four tabs within the same panel.
Integration status: VTEX account, workspace and license, plus the main checks (Koru authorization and Website ID) with their status. Refresh status validates the license again and shows the time of the last validation. If a check shows Review, resolve it before moving on.
License and security
License validation
All Admin routes require:
- A valid VTEX Admin session.
- An active Koru license for the Website ID and the Koru Financing Options App ID.
The product page (and the logos it shows) also depend on the license: if it is not active, the block falls back to basic mode and shows only the installment VTEX calculates, without logos, highlights, table, CFT or manual options. The product page never breaks because of a license problem.
To tolerate transient failures, a positive validation is kept for up to 72 hours if Koru Suite does not respond, and for 5 minutes after an isolated negative response. Past that margin, the app distinguishes an inactive license (the screen says so and offers to review the configuration) from a temporary outage (it asks you to retry, with no need to change anything).
Data and credentials
- The browser never calls VTEX private APIs or Koru Suite directly: everything goes through the app's own routes.
- The app does not ask for or store the merchant's AppKey/AppToken. Payment rules are read with the logged-in admin's session; that is why their role needs the Gerenciar condições de pagamento resource.
- The app only reads payment rules: it never creates, modifies or deletes them.
- Enrichment, manual options, logos and the rules copy used by the product page are stored in the account's own Master Data, in the app's entities.
- The product page's public route exposes only what is displayed to shoppers: method names, installments, rates, CFT/TEA, disclaimers and logos.
- Website ID and App ID identify resources, but they are not passwords.
Troubleshooting
The app does not appear after installing
- Run
vtex whoami. - Confirm the account and workspace.
- Run
vtex listand look for{vendor}.koru-financing-options. - Reload VTEX Admin.
- Try the direct URL
/admin/koru-financing-optionson the same domain/workspace.
The session was rejected or expired
Log in to VTEX Admin again and reload the app.
"Your user does not have permission to read payment conditions"
Your License Manager role does not include the Gerenciar condições de pagamento
resource (GerenciarCondicoesPagamento). Ask an account administrator to add it to your
role and open the tab again.
"This account has no payment rules loaded in VTEX"
The account has no payment rules configured. Create them in VTEX's Payments module or, if the financing does not go through VTEX, use Create option.
An option is not shown on the product page
- Check its Visibility column in Options: it must say Visible.
- Make sure it is not marked Hide this option in Enrich.
- Confirm that the product has that method, that number of installments and that rate in VTEX: the option only appears on products where VTEX offers it.
- If the campaign changed in VTEX, open Options, use Refresh and wait up to 15 minutes.
The option shows as "New" and lost its CFT
The campaign changed in VTEX. Open Enrich, review the previous values the form brings back and confirm them with Save.
"The option changed in VTEX: refresh the list and try again"
Someone modified the payment rule while you had the list open. Use Refresh and enrich the option again.
The logo is not accepted
Check the format (PNG or WebP), height (40 to 56 px, ideally 48 px), width (up to 144 px) and size (up to 100 KB). The error message says which requirement is not met.
I cannot create a manual option
- A manual option for the same method with the same number of installments already exists: edit that one.
- The "until" date is earlier than the "from" date.
- The number of installments is outside 1 to 36.
The license shows as inactive
- Compare the Website ID with the right site in Koru Suite.
- Confirm that Koru Financing Options is active for that website.
- Make sure you did not copy extra spaces.
- Retry the validation from Overview → Refresh status.
- If it persists, send the Website ID, account and workspace to support, without sending credentials.
Functional limits
The current version:
- Only reads VTEX payment rules; it does not show payment-method discounts or promotions.
- Does not distinguish sales channel or payment condition on the product page: an option is shown if the product has those installments in VTEX.
- Refreshes the rules copy used by the product page only when someone opens Options or Logos in the Admin; it does not sync on its own.
- Interprets the dates and days of manual options in Argentina time (UTC−3).
- Supports up to 5,000 records per data type (enrichments, manual options).
- Does not show the per-installment amount of manual options with interest.
- Always operates on the VTEX account where it is installed.
Pre-publishing checklist
- Koru Financing Options installed in the right account and workspace.
- Store Website ID verified and license active in Overview.
- Users with the Gerenciar condições de pagamento resource in their role.
- Options tab opened at least once in the account.
- Option visibility reviewed against the current campaigns.
- Logos uploaded for the banks and methods that are shown.
- CFT and TEA entered for every option with interest.
- Highlighted and hidden options defined.
- Manual options reviewed (real validity and installments).
-
financing-blockdependency and block declared in the theme. - Real product pages checked on desktop and mobile in a workspace.
- Owner defined to review the app whenever campaigns change in VTEX.
Useful data when asking for support
Send the VTEX account, workspace, the URL of an affected product page, the option's bank and method, and what you expected to see. Avoid sending credentials or cookies.