<div id="integration-guide">

<div class="ig-section" id="migration-faq">
<div class="ig-section-header">
<div class="ig-section-icon" style="background:#fef3c7;color:#d97706;"><i class="fas fa-question-circle"></i></div>
<h2>Migration FAQ</h2>
</div>

<p class="ig-section-desc">The questions the migration guides don't answer step by step: timelines, what changes for the merchants you serve, migrating a merchant base, and what is different on the new platform. For the technical migration itself, start at the <a href="/partners/online-payments/migration/overview">overview</a>.</p>

<!-- ============================================================ BEFORE -->
<div class="ig-subsection">
<h3>Before you start</h3>

<h4>When exactly will the legacy platform stop working?</h4>
<p>SecurePay, the RPG payment API, the B-Gateway web service and the Ticket API keep working as normal today. Onboarding to them stops soon, and they are retired in <strong>early 2027</strong>. You will be given notice before anything changes for your customers, and your Teya contact can tell you where you stand at any time.</p>

<h4>What happens if I do nothing?</h4>

<p>Any merchant still routed through your legacy integration when the platform is retired will stop being able to take payments through your platform. Teya will contact merchants directly about the retirement, so merchants will also be asking you what your plan is.</p>

<p>We will contact you before your integration is affected — but don't wait for that: the work is the same now as later, and now is calmer.</p>

<h4>Does migrating cost anything, and does my pricing change?</h4>
<p>There is no Teya fee for migrating, and your pricing agreement with Teya is unchanged — it is not tied to which platform your integration uses. The only prerequisite is that Teya online payments are enabled on your store, which your Teya contact arranges.</p>

<h4>How long does it take?</h4>
<p>It depends on the path. A SecurePay redirect integration moving to Hosted Checkout is a small development project — days including testing, not weeks. Embedded Components and RPG integrations are a little more, mainly frontend work. B-Gateway integrations are a small development project too, and end with less code than you have today. Ticket API users often need no development at all. Stored cards and recurring payments are a separate, phased track that runs alongside normal billing cycles — see the <a href="/partners/online-payments/migration/stored-cards">stored cards guide</a>.</p>

<h4>Do I need a new merchant account, contract or credentials?</h4>
<p>Your Teya merchant account and settlement stay the same. What changes is how your integration authenticates: instead of a SecurePay secret key, an RPG private key or B-Gateway credentials, each store gets OAuth API credentials (a Client ID and Client Secret). For merchants you already serve on RPG you exchange the existing key; for others, credentials arrive through the registration flow — see <a href="/partners/online-payments/migration/overview">credentials for existing merchants</a>. Your store needs Teya's online payments enabled; if credential creation reports that no compatible store was found, ask your Teya contact.</p>

<h4>I don't know whether I'm on SecurePay, RPG or B-Gateway. How do I find out?</h4>
<p>Ask whoever built your site where the customer types their card number. A Teya/Borgun page means SecurePay redirect; a frame inside your page means SecurePay embedded; your own form means a direct API. For a direct API, check what your server sends to <code>borgun.is</code>: JSON to <code>/api/payment</code> is RPG, XML such as <code>getAuthorization</code> to <code>gateway01.borgun.is</code> is B-Gateway. The <a href="/partners/online-payments/migration/overview">overview</a> turns the answers into a guide. If nobody knows, your Teya contact can look up how your payments arrive today.</p>

</div>

<!-- ============================================================ DURING -->
<div class="ig-subsection">
<h3>During the migration</h3>

<h4>Can I run the old and new integrations in parallel?</h4>
<p>Yes, and the guides recommend it: keep the legacy integration live for a day or two after you switch, so rolling back is a configuration change. Both settle to the same merchant account. There is no time limit on parallel running before the retirement date.</p>

<h4>How do I test without touching live payments?</h4>
<p>Everything is rehearsed in Teya's staging environment with a development store and <a href="/partners/online-payments/testing">test cards</a>, including 3D Secure challenges, declines, refunds and webhooks. Nothing reaches your production account until you create production credentials and switch hosts.</p>

<h4>Will my customers notice anything?</h4>
<p>On Hosted Checkout the experience is the same shape as SecurePay: click Pay, enter the card on a Teya page, come back. Differences they may notice are improvements — a declined card lets them try another instead of ending the checkout, Apple Pay appears where the device supports it, and foreign cardholders may be offered to pay in their own currency. With Embedded Components the card fields sit inside your own checkout, so the visible change is that they no longer leave your site.</p>

<h4>What about 3D Secure? I built my own MPI integration.</h4>
<p>You delete it. Authentication runs automatically inside Hosted Checkout and the Embedded Components — enrollment, the bank challenge and validation are handled for you, with no separate calls and nothing to certify. The only place you still see 3D Secure explicitly is customer-present charges on saved cards through the direct API, where a challenge may be returned for you to display.</p>
<p>This also applies if you run 3D Secure through B-Gateway's <code>get3DSAuthentication</code> or a third-party 3D Secure provider: the connection is no longer needed. On the new platform every customer-present payment goes through 3D Secure, and charges without the customer are made on a card they saved with you, as merchant-initiated payments. See the <a href="/partners/online-payments/migration/bgateway-checkout">B-Gateway guide</a>.</p>

</div>

<!-- ============================================================ AFTER -->
<div class="ig-subsection">
<h3>After you switch</h3>

<h4>Can I still refund payments that were taken on SecurePay, RPG or B-Gateway?</h4>
<p>Yes. Refund legacy transactions in B-Online exactly as you do today — it keeps working alongside your new integration and stays available until the legacy platform is retired. Refunds of payments taken on the new platform are made in the Business Portal or by API. Your legacy transactions are also visible in the Business Portal, and stay there.</p>

<h4>Will I still be able to see my old transactions and reports?</h4>
<p>Yes. Your legacy reporting stays available, read-only, until the legacy platform is retired. Your legacy transactions are also visible in the Teya Business Portal and remain there indefinitely, alongside new-platform payments — which appear in the Portal from your first live transaction.</p>

<h4>Our systems pull transaction and settlement data from B-Gateway. What replaces that?</h4>
<p>B-Gateway's transaction list, settlement, chargeback, dispute and fraud reports have no one-to-one API replacement. For a single payment, look up its checkout session by ID; for everything else, use the Business Portal. There are no batches on the new platform, so batch numbers disappear from your records: key them on the <code>transaction_id</code> instead. If a finance or reconciliation system depends on these reports, contact Teya support with your specific case before you migrate so we can check it with you. Each report is listed on the <a href="/partners/online-payments/migration/bgateway">B-Gateway reference</a>.</p>

<h4>Do my customers' saved cards survive the move?</h4>
<p>Yes. Nobody re-enters a card: Teya imports your stored cards, and each legacy token upgrades itself the first time you charge it on the new platform. The order of steps matters — read the <a href="/partners/online-payments/migration/stored-cards">stored cards &amp; recurring guide</a> before changing anything about how cards are saved.</p>
<p>This includes virtual card numbers from B-Gateway's <code>getVirtualCard</code>.</p>

<h4>What happens to my old credentials and settings?</h4>
<p>Once your parallel-running window is over, remove the legacy code; Teya retires the old SecurePay, RPG or B-Gateway credentials for you — nothing to request. Branding settings do not carry over: logo, checkout and receipt messages and legal URLs are configured once per store in the Business Portal.</p>

<h4>What about chargebacks and disputes on legacy transactions?</h4>
<p>Disputes are handled against your merchant account, not the integration, so a chargeback on a payment taken through SecurePay is handled the same way after you migrate.</p>
<p>Evidence for legacy transactions remains retrievable — they stay visible in the Business Portal.</p>

<h4>How do I reconcile orders across the two platforms?</h4>
<p>Use <code>merchant_reference</code> for your order number, and keep writing your legacy order ID into <code>metadata</code> during the transition if your back office keys on it. Every new-platform payment has a <code>transaction_id</code> that appears in the webhook, the session lookup and the Business Portal — store it on the order.</p>

</div>

<!-- ============================================================ DIFFERENCES -->
<div class="ig-subsection">
<h3>What is different on the new platform</h3>

<h4>Why are amounts sent as integers?</h4>
<p>Amounts are in the smallest unit of the currency: €54.43 is <code>5443</code>, £9.99 is <code>999</code>. ISK has no subunit, so 100 ISK is simply <code>100</code>. This is the single most common bug in migrations from SecurePay, which took a decimal string.</p>

<h4>Why is there no webhook for failed payments?</h4>
<p>The platform sends a signed webhook for successful payments (<code>payment.succeeded.v1</code>). Failures and abandoned checkouts are covered by looking the session up by its ID, which also tells you whether a customer who never returned to your site did in fact pay. See <a href="/partners/online-payments/webhooks">Webhooks</a>.</p>

<h4>Where do I see payments, refunds and settlements now?</h4>
<p>In the Business Portal (and the Teya app), alongside your in-store payments if you have Teya card machines. Refunds can be issued there without a developer.</p>
<p>Settlement does not change: same merchant account, same payout timing and statements. New-platform transactions simply appear in the Business Portal as well.</p>

<h4>Do refunds, captures and cancellations work the same way?</h4>
<p>Refunds are full or partial, and can be repeated up to the original amount. A payment is captured at most once per authorisation, and the remainder is released. There is no separate "cancel": a refund on an uncaptured payment reverses the authorisation. See <a href="/partners/online-payments/payment-actions">Payment Actions</a>.</p>

<h4>Can I still take pre-authorisations?</h4>
<p>Yes — and if you were on SecurePay this is new. Create the session with type <code>PRE_AUTHORISATION</code> and capture later, including a partial amount. Pre-authorisations are currently available for certain tourism-related business activities; if your business needs them for another use case, contact your Teya account manager.</p>

<h4>Does currency conversion (DCC) still work?</h4>
<p>Yes, automatically: when a cardholder's currency differs from the transaction currency, the checkout offers to pay in their own currency. There is nothing to implement. DCC is not offered on pre-authorisations.</p>

<h4>Which currencies and languages are supported?</h4>
<p>The same ISO currency codes as before (ISK, EUR, GBP, CZK, HUF, USD and others). HRK is no longer used; Croatia settles in EUR. The checkout language is auto-detected from the customer's browser or set per session with a BCP 47 code such as <code>is-IS</code> or <code>cs-CZ</code>.</p>
<p>Checkout languages include English, Icelandic, Czech, Slovak, Croatian and Hungarian, among others.</p>

<h4>What is different about security and PCI?</h4>
<p>Card data is entered on Teya-hosted pages or inside Teya-hosted iframes, so your systems never see it and you stay in the lightest PCI category (SAQ A). Per-request signatures (<code>checkhash</code>) are replaced by short-lived access tokens, and payment confirmations are RSA-signed webhooks you verify with a public key rather than a shared secret. Sending raw card data to Teya from your own servers is restricted to merchants with PCI DSS (SAQ D) evidence.</p>
<p>If you use B-Gateway today, card numbers pass through your own servers. Moving to Embedded Components or Hosted Checkout takes them out entirely, which is usually the biggest reduction in compliance work of any migration path.</p>

<h4>I use other B-Gateway features. What happens to them?</h4>
<p>Some B-Gateway features work differently on the new platform or depend on your set-up: batches (settlement is now automatic), partial reversals (capture the final amount on a pre-authorisation, or refund the difference), Dynamic Descriptors, invoice detail data (<code>sendDetailData</code>), passenger itinerary data, batch authorisations, and telephone, keyed (B-Online) or card-reader payments. If you use any of them, contact Teya support with your specific case before you migrate. The <a href="/partners/online-payments/migration/bgateway">B-Gateway reference</a> lists every operation and where it lives now.</p>

<h4>Are the test cards the same?</h4>
<p>No. Use the official list on the <a href="/partners/online-payments/testing">Testing</a> page; it covers frictionless and challenge 3D Secure, declines and specific error cases.</p>
</div>

<!-- ============================================================ PARTNERS -->

<div class="ig-subsection">
<h3>Migrating a merchant base</h3>

<h4>How do I get credentials for merchants I already serve, without asking them to re-onboard?</h4>
<p>For merchants on RPG: exchange each merchant's RPG private key for new credentials with one API call per store — see <a href="/partners/online-payments/migration/rpg-credentials">RPG Credentials Migration</a>. For merchants on SecurePay: register each merchant through the <a href="/partners/online-payments/register-merchants">registration flow</a>, where the merchant approves the connection once from their Teya account. To migrate a large merchant base, talk to your Teya partner contact about the approach.</p>

<h4>Can I migrate merchants gradually?</h4>
<p>Yes. Credentials are per store and every merchant switches independently, so you can move a handful, verify, and continue. Keep the legacy route available per merchant for a short rollback window.</p>

<h4>Who tells the merchants, and what do they need to do?</h4>
<p>Teya notifies every legacy merchant directly about the retirement. The preparation is managed by you; merchants may need to reconnect their store or approve the connection between your platform and their Teya account when the switch happens, so tell them what to expect. You know your merchants and your migration plan, so you decide how and when to communicate with them — most partners tell merchants in advance that the migration is handled by the platform, so nobody acts on Teya's notice by looking for a new provider. If you would like support or guidance with that communication, ask your Teya partner contact.</p>

<h4>Which of my merchants are on the legacy platform?</h4>
<p>Every merchant that pays through your legacy integration is on it — your own merchant records are the list. Use them to plan and track the migration store by store. If you need help identifying stores or reconciling them with Teya's records, ask your Teya partner contact.</p>

<h4>A merchant uses my platform and their own direct integration. Who migrates what?</h4>
<p>Each integration is migrated by whoever built it: you migrate your platform's integration for that merchant's store, the merchant's own developer follows the Businesses guides for theirs. Credentials are per store, so both can proceed independently.</p>

<h4>Do I need to be certified, or identify my plugin?</h4>
<p>No certification. If your merchants integrate through a plugin, Teya assigns a <code>plugin_type</code> for you to send with each credential exchange or registration; it identifies your integration for support and debugging.</p>

<h4>How does the stored-card migration work across many merchants?</h4>
<p>The four phases run per merchant, and the import in Phase 3 is per merchant. Agree phase dates with your Teya partner contact in batches, and confirm a merchant for import only once Phase 1 is complete for every store and code path. See the <a href="/partners/online-payments/migration/stored-cards">stored cards guide</a>.</p>

<h4>What if some of my merchants haven't moved by the retirement date?</h4>
<p>Any merchant still on your legacy integration when the platform is retired will stop being able to take payments through it. Agree a migration plan and completion date with your Teya partner contact; we will contact you before any of your merchants is affected, and work with you to avoid it.</p>
</div>

<!-- Need help -->
<div class="ig-subsection">

```admonition
icon: fas fa-life-ring
title: Question not answered here?
content: Contact your Teya partner contact. For integration questions, see <a href="/support">Support</a>.
```

<h3>Next steps</h3>
<ul>
<li><a href="/partners/online-payments/migration/overview">Migration overview</a> - Find your path and the guide that applies</li>
<li><a href="/partners/online-payments/migration/ai-assistant">Migrate with an AI assistant</a> - Prompts and a downloadable pack for LLM-assisted migrations</li>
<li><a href="/partners/online-payments/testing">Testing</a> - Test cards and integration checklist</li>
<li><a href="/support">Support</a> - How to reach Teya</li>
</ul>
</div>

</div>
</div>
