Open the full card finder → · Or look up a BIN range →

8 programmes compared · Last reviewed November 2026

Best Virtual Cards for Heroku

Most cards that fail at Heroku are not out of money. They fail a check the merchant runs before the charge: the billing country, the postal code, or a 3-D Secure challenge that never completes. Below is how that works for Heroku, plus the cards whose published terms fit it.

Short answer

Mesh Payments is the closest fit on published terms (3-D Secure is documented, so a step-up challenge can finish instead of timing out). COCA is the fallback if that issuer will not take you, and Affirm Card is the cheaper-to-fund option if you expect several charges a month.

8programmes compared
8with 3-D Secure
0no-KYC options
3picks below

Heroku: what lands on the card, and when

Heroku bills dynos, add-ons and data transfer monthly in USD, with prorating when dynos are scaled mid-cycle.

On the pricing page this is From $7/mo (Eco dyno). Whatever you budget, add a margin: the first authorisation is often a little above the headline price.

Metered accounts are reviewed continuously: a card that fails one authorisation can put the whole billing account on hold until it is replaced.

Why a card that works elsewhere fails here

Scaling dynos changes the invoice immediately, and the prorated charge can exceed a card limit set to the previous month. Add-ons bill on the same card and are easy to forget.

  • The card's issuing country does not match the country on the account. The BIN gives it away before any charge is attempted.
  • The billing address differs from the issuer's record by a house number or a ZIP digit, and AVS fails on the comparison.
  • The card is already attached to another billing account, which the provider flags as duplicate.
  • The card's per-transaction limit sits below the busiest metered charge of the month.
  • The billing account goes on hold after a failed authorisation, which blocks new resources rather than only the payment.
  • The balance covers the headline amount but not that amount plus tax and a temporary hold.

The five checks the billing account runs

What is checkedHow it works hereWhat to pick
Verification holdA small authorisation ($0–$1 at Google Cloud, about $1 at AWS and Azure) is placed when the card is added.A card that accepts small holds, with at least $5 on it
Card typePrepaid instruments are refused at sign-up by Azure and treated as higher risk elsewhere.A card issued as debit or credit, not a gift/prepaid instrument
Billing countryThe billing account's country is fixed at creation and must match the card's issuing country.A card issued in the country your billing account uses
Metered chargesUsage is authorised continuously, not once a month.A per-transaction limit above the busiest hour of usage
Duplicate-card detectionA card already attached to another account is flagged.A card that is not shared with other billing accounts

Not every check runs on every attempt. Heroku applies them in the order its processor decides, which is why the same card can pass one day and fail the next after an issuer-side change.

Three cards that fit this checkout

Chosen by the parameters that decide Heroku — country matching, step-up support, recurring behaviour and the cost of keeping the card funded — not by the order they appear in a directory.

1. Mesh Payments — 9.0/10

Mesh Payments scores 9.0/10 in the catalogue and fits on the parameters that decide this checkout. In fee terms, no creation fee is published and the top-up is 0%, so the only cost is what you leave on the card.

Works for this checkout

  • 3-D Secure is documented, so a step-up challenge can finish instead of timing out
  • a US billing address can be recorded against the card

What it costs you

  • full identity documents at signup

Full profile

2. COCA — 9.1/10

COCA scores 9.1/10 in the catalogue and fits on the parameters that decide this checkout. In fee terms, no creation fee is published and the top-up is 0%, so the only cost is what you leave on the card.

Works for this checkout

  • 3-D Secure is documented, so a step-up challenge can finish instead of timing out
  • a US billing address can be recorded against the card

What it costs you

  • ID required at signup, so not anonymous

Full profile

3. Affirm Card — 8.9/10

Affirm Card sits third of the three on fit for this checkout, with a catalogue rating of 8.9/10. On cost, no creation fee is published and the top-up is 0%, so the only cost is what you leave on the card.

Works for this checkout

  • 3-D Secure is documented, so a step-up challenge can finish instead of timing out
  • a US billing address can be recorded against the card

What it costs you

  • full identity documents at signup

Full profile

The shortlist, side by side

#Card / issuerKYCCreation feeTop-upFX3DSRating
1Mesh PaymentsYes$00%Not disclosed3DS9.0/10
2COCANo (basic) / Yes (advanced)Free virtual0% top-up0%3DS9.1/10
3Affirm CardYes$00%0%3DS8.9/10
4Coinbase CardYes (full KYC: ID + selfie +…Free0% USD/USDC-funded spend0% foreign transaction fee3DS8.6/10
5NovoYes$00%0%3DS9.2/10
6InfiniYes (KYC/KYB; basic info -> $500…~$100%0.1% per txn3DS8.5/10
7NavanYes$00%Not disclosed3DS8.9/10
8Jupiter GlobalYes (full KYC via SumSub; ID +…$00%0% USD spend3DS9.0/10

Every figure is the issuer's own published term, converted where necessary and re-checked monthly. Where a cell says “not disclosed”, the issuer does not publish it — that is different from zero.

What funding the card costs

Modelled on $100 moving through the card, which is a normal month for this category. It is the fee load, not the purchase price, so you can compare issuers on the same basis.

CardCreationTop-up on $100FX on $100Total fee load
Mesh Payments$0$0——
COCA$5$0$0$5
Affirm Card$0$0$0$0

A card with no creation fee can still be the more expensive one once the top-up percentage is applied to a large monthly figure.

Paying Heroku with a virtual card, step by step

  1. 1

    Start from the billing country

    Start with jurisdiction, not price. The card's country and the account's region have to agree before Heroku will authorise anything, and that check happens before the balance is even considered.

    Create your accountEmailyou@example.comPassword••••••••••Enable two-factor authenticationCreate accountVerification tiersNo KYCZebec CarbonLimits scale with the tier you pick
  2. 2

    Set the card up

    Issue one card for this merchant rather than reusing a shared card. A limit above the expected charge keeps the authorisation from failing on a technicality.

    Add fundsAmount100.00 USDFunding methodUSDT (TRC-20)Local walletConfirm top-upBefore you commitLoad one month, not one yearCheck the top-up fee firstKeep the first charge small
  3. 3

    Fund it with headroom

    Top up with headroom. A card funded to the exact amount is the single most common self-inflicted decline on this kind of checkout.

    Your cardsLockedActiveNew cardCreate Heroku-locked cardCard settingsSpend limit$120 / monthLocked toHerokuCVV displayshown once
  4. 4

    Enter the address from the dashboard

    Paste rather than type. The address on the card is the only one that can pass verification, even if it is not where you live.

    PaymentCard number518504 0000 0000MM / YYCVCBilling address (paste, do not retype)Address line 1ZIPStatePay HerokuWatch these two fieldsZIP codemust match the issuer address3-D Securecards above support thisMismatch here is the singlemost common cause of a decline.
  5. 5

    Approve the step-up

    Approve the challenge while the payment page is open. Disable popup blockers first, and keep the issuer's app or SMS route available.

    Verify it is youEnter the 6-digit code Zebec Carbon sends307418ApproveThen go back and confirm the plan shows as active.If the code never arrivesCheck the issuer app, not SMSSome issuers need a device bindingDo not retry more than twice
  6. 6

    Verify and pre-fund the renewal

    Confirm the charge posted, then leave a balance for the next cycle. A card that clears once and is emptied afterwards fails the renewal.

If it still fails

Work down this list in order. Each row is a different check, so changing the card before you know which one failed usually repeats the same decline on a new BIN.

What you seeWhat it means hereWhat to do
Card declined / generic declineThe processor refused the authorisation without naming a reason. On this checkout the usual cause is a country or address mismatch, not the balance.Stop retrying. Re-check the billing country and the address before the next attempt; repeated failures raise the risk score.
Insufficient fundsThe authorisation plus any hold is larger than the available balance — a $1 verification hold on top of the plan price is enough to cause this.Leave 15–20% headroom above the charge, then retry once.
Incorrect ZIP / address mismatchAVS compared the postal code with the issuer's records and they differ.Paste the address from the card dashboard character for character; do not substitute your home address.
Authentication requiredA 3-D Secure challenge was issued and did not complete — usually a blocked popup or an OTP that never arrived.Disable popup blockers, retry in a private window, and make sure the card's phone or email is current.
Card not supportedThe BIN is recognised as prepaid, or the issuing country is not accepted here.Switch to a debit or credit BIN issued in an accepted country.
Payment method invalid after a changeThe old card was removed or expired, and the merchant is still pointing at it.Re-add the card and set it as default; on console stores wait 24 hours after too many changes.

What a failed payment actually costs you

A failed charge can put the billing account on hold rather than just stop the payment: new resources are blocked and some services are suspended until the card is replaced. That is a production problem, not an invoicing one.

Weigh the fee against the failure, not against zero. The cheapest card on paper is often the one that needs the most attention at renewal.

Questions we get asked

Yes, if the card matches the account's country and can complete a step-up challenge. Mesh Payments is the closest fit on published terms, with COCA as the fallback. The failure people report is rarely a balance problem; it is a country or address check.

Because Heroku runs its own checks before the charge: the card's issuing country against the account's region, the postal code against the issuer's records, and a 3-D Secure challenge where the region requires one. A card that works at a domestic merchant can still fail all three.

On a From $7/mo (Eco dyno) plan, the cheapest is the one with the lowest top-up and FX load rather than the lowest creation fee. For Mesh Payments, no creation fee is published and the top-up is 0%, so the only cost is what you leave on the card. Run the same spend through two issuers before deciding; the fee that dominates is usually the top-up.

Prepaid instruments are the first thing this kind of checkout screens out. Even when a prepaid card is accepted, it usually cannot take the renewal, so it buys one cycle rather than a subscription.

It depends on the site version. A cross-border checkout will often take a foreign card and convert at the issuer's rate, while the domestic path will not. Check which currency the checkout quotes before choosing the card.

On a metered or threshold account the charge is retried, and a second failure can put the billing account on hold — which stops service, not just the payment. Keep the card funded above the threshold rather than at it.

Other ways to pay Heroku

A virtual card is one path. These are the others, and each has a different failure mode.

  • Annual prepaid where offered
  • a card with a limit above peak dyno count
  • a separate card for add-ons

How the data on this page is built

Figures come from issuer pricing pages and published merchant-support lists, re-checked monthly. Where a term is unpublished, the table says “not disclosed” rather than filling the gap with an estimate. The full protocol is on the methodology page. The full protocol, including how declines are recorded, is on the methodology page.

Fees, limits and terms quoted on this page are as published by the issuer and can change at any time — verify with the issuer before applying.