Migrating from Wordline
A practical guide for travel businesses migrating from Wordline (formerly Ingenico ePayments / Ogone) to Felloh. This covers concept mapping, code migration patterns, and a step-by-step migration plan so you can move with confidence.
Wordline is a traditional European payment processor with roots in Ingenico and Ogone. Many travel businesses adopted it years ago and now run on legacy integration patterns — redirect-based hosted checkout pages, PSPID-based authentication, and server-to-server APIs that have evolved through multiple rebrandings. Felloh replaces the gateway and adds the travel-specific layer, letting you modernise your payment stack in one move.
Concept mapping
Understand how Wordline concepts translate to Felloh before writing any code.
Direct equivalents
| Wordline | Felloh | Notes |
|---|---|---|
| Customer / Alias owner | Customer | Felloh customers have name, email, and address — scoped to an organisation. |
| Refund (maintenance operation) | Refund | Felloh uses a two-stage process — refunds require separate authorisation. |
| Webhook / Server-to-server feedback | Webhook | Same concept. Wordline uses SHA signature strings; Felloh uses HMAC-SHA256 on the full request body. |
| Hosted Checkout Page | Payment Link | Wordline's hosted checkout requires form POST or redirect configuration. Felloh payment links are a single API call. |
Different concepts
| Wordline | Felloh | How it differs |
|---|---|---|
| Payment (CreatePayment / CreateHostedCheckout) | Payment Link / Ecommerce / Scheduled Payment | Wordline has a single payment creation flow. Felloh splits collection into three tools — see choosing a payment method. |
| Capture (maintenance operation) | Transaction | Wordline separates authorisation and capture. Felloh handles capture automatically — transactions represent completed payments. |
| Alias / Token | Tokenised Card | In Wordline, you create an alias via the CreateToken API or by setting alias parameters on the hosted checkout. In Felloh, cards are automatically tokenised when a customer pays. |
| Hosted Checkout / Hosted Tokenization | Ecommerce + Felloh SDK | Wordline's hosted tokenization page collects card details in an iframe. Felloh's ecommerce sessions serve the same purpose. |
| Payout | Disbursements + Beneficiaries | Wordline payouts send funds to a bank account or card. Felloh disbursements pay travel suppliers from trust accounts. |
| Fraud Professional (add-on) | Fraud Shield | Wordline offers fraud detection as a separate paid product. Felloh includes Fraud Shield with configurable rules in every account. Configure via the Dashboard. |
| Terminal (in-person) | Terminal | Felloh supports in-person payments via terminals. Speak to your account manager to get set up. |
Felloh concepts with no Wordline equivalent
These are features you gain by moving to Felloh.
| Felloh feature | What it does |
|---|---|
| Booking | A container linking a customer's trip to all their payments, refunds, payment links, and scheduled payments. Replaces the custom booking-to-payment mapping you built around Wordline. |
| Scheduled Payment | Charge a tokenised card on a specific future date. Replaces custom scheduling code and cron jobs. |
| Disbursements | Pay suppliers directly from trust accounts. Replaces manual bank transfers or custom payout code. |
| Beneficiaries | Manage supplier bank details for disbursements. |
| Credit Notes | Track credits and adjustments against bookings. |
| MCP Server | Connect AI agents and editors to Felloh for conversational payment management. |
| Trust accounts | Felloh manages ATOL/ABTA-compliant trust accounts. No separate trust account provider needed. |
| Automatic reconciliation | Every payment — cards, open banking, and bank transfers — is automatically matched to its booking using 3-point verification. Eliminates manual spreadsheet reconciliation. |
| Automatic surcharging | Detects corporate and international cards at the point of payment and applies compliant surcharges in real time. Protects margins without manual fee calculations. |
No Felloh equivalent
| Wordline feature | What to do |
|---|---|
| Product catalogue / Order line items | Felloh doesn't have a product catalog. Your booking system holds trip details. Pass the total as the booking gross_amount. |
| Gift cards | Use a separate gift card provider if required. |
| Multi-currency conversion (DCC) | Handle currency conversion in your own system. Felloh supports GBX, USX, and EUX. |
The booking model
The biggest conceptual shift is that every payment in Felloh is tied to a Booking. In Wordline, you submit a payment with an order.references.merchantReference — the gateway has no concept of what the payment is for. In Felloh, you create a booking first, then collect payments against it.
Wordline flow:
merchantReference → CreatePayment / HostedCheckout → Capture
(you maintain the link to your booking system)
Felloh flow:
Customer → Booking → Payment Link / Ecommerce / Scheduled Payment → Transaction
(booking is a first-class object — payments are linked automatically)
This means you can remove any custom code that links Wordline payment IDs or merchant references to your booking system. Felloh handles this relationship natively.
If you currently use Wordline's merchantReference or the older Ogone ORDERID parameter to link payments to booking references, Felloh replaces that pattern. The booking reference is a first-class field on the booking object, and all transactions are linked automatically.
Choosing a payment method
In Wordline, you call CreatePayment, CreateHostedCheckout, or use the older Ogone form POST. In Felloh, you choose based on the scenario:
| Scenario | Wordline | Felloh |
|---|---|---|
| Send customer a link to pay | CreateHostedCheckout / Ogone redirect | create-payment-link |
| Embed payment in your app | Hosted Tokenization Page / CreatePayment | create-ecommerce + Felloh SDK |
| Charge a saved card later | CreatePayment with token + custom cron | create-scheduled-payment |
| Charge a saved card now | CreatePayment with token | create-scheduled-payment with today's date |
Code migration
Authentication
Wordline uses API key ID and secret (or the older PSPID with SHA passphrase for Ogone). Felloh uses a public/private key pair to generate a bearer token.
Authentication
import { createClient } from 'connect-sdk-nodejs';
// Wordline Connect SDK
const client = createClient({
host: 'eu.api-ingenico.com',
scheme: 'https',
port: 443,
enableLogging: false,
apiKeyId: 'your-api-key-id',
secretApiKey: 'your-secret-api-key',
});
const merchantId = 'your-merchant-id';
Felloh tokens are valid for a limited time. Cache and refresh them as needed. See the Authentication guide for full details.
Creating a customer
Wordline doesn't have a dedicated customer creation API — customer details are passed with each payment or stored as part of a token/alias. Felloh has a dedicated customer resource.
Create a customer
// Wordline — customer details are embedded in the payment request
const paymentRequest = {
order: {
amountOfMoney: { amount: 50000, currencyCode: 'GBP' },
customer: {
contactDetails: { emailAddress: 'sarah@example.com' },
personalInformation: {
name: { firstName: 'Sarah', surname: 'Jones' },
},
billingAddress: {
street: '10 Downing Street',
city: 'London',
zip: 'SW1A 2AA',
countryCode: 'GB',
},
},
references: { merchantReference: 'TRIP-2026-001' },
},
// ... payment method details ...
};
Creating a booking (new concept)
This has no Wordline equivalent — it's the step that replaces your custom booking-to-payment mapping.
Create a booking
const response = await axios({
method: 'post',
url: 'https://api.felloh.com/agent/bookings',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${token}`,
},
data: {
organisation: 'your-organisation-id',
booking_reference: 'TRIP-2026-001',
gross: 150000, // £1,500.00 in pence
currency: 'GBX',
customer_email: 'sarah@example.com',
customer_name: 'Sarah Jones',
departure_date: '2026-08-15',
return_date: '2026-08-22',
},
});
Collecting a payment
Collect a payment
// Create a hosted checkout session
const hostedCheckout = await client.hostedcheckouts.create(merchantId, {
order: {
amountOfMoney: { amount: 50000, currencyCode: 'GBP' },
customer: {
contactDetails: { emailAddress: 'sarah@example.com' },
},
references: { merchantReference: 'TRIP-2026-001-DEP' },
},
hostedCheckoutSpecificInput: {
returnUrl: 'https://example.com/checkout/result',
variant: 'your-template-id',
},
});
// Redirect customer to: hostedCheckout.partialRedirectUrl
Processing a refund
Process a refund
// Wordline — refund is a maintenance operation on the payment ID
const refund = await client.payments.refund(merchantId, paymentId, {
amountOfMoney: { amount: 20000, currencyCode: 'GBP' },
});
// Refund status comes via webhook
Felloh's two-stage refund process is intentional — it prevents accidental refunds and supports compliance workflows where a manager must approve refunds. If you want to auto-authorise, call both endpoints sequentially.
Scheduling a future payment
Wordline supports tokenised payments, but you schedule the timing yourself. Felloh handles scheduling natively.
Schedule a future payment
// Save the card on first payment by enabling tokenisation
const payment = await client.payments.create(merchantId, {
order: {
amountOfMoney: { amount: 50000, currencyCode: 'GBP' },
references: { merchantReference: 'TRIP-2026-001-DEP' },
},
cardPaymentMethodSpecificInput: {
tokenize: true,
// ... card details or hosted tokenization reference ...
},
});
// Later, charge the saved token (you schedule via your own cron job)
const recurringPayment = await client.payments.create(merchantId, {
order: {
amountOfMoney: { amount: 100000, currencyCode: 'GBP' },
references: { merchantReference: 'TRIP-2026-001-BAL' },
},
cardPaymentMethodSpecificInput: {
token: 'token-from-initial-payment',
isRecurring: true,
},
});
Currency mapping
Wordline uses standard ISO 4217 currency codes with amounts in minor units. Felloh uses minor-unit currency codes. The numeric values are the same — only the code changes.
| Wordline | Felloh | Unit |
|---|---|---|
GBP | GBX | Pence |
USD | USX | Cents |
EUR | EUX | Euro cents |
Currency conversion helper
const WORDLINE_TO_FELLOH_CURRENCY = {
GBP: 'GBX',
USD: 'USX',
EUR: 'EUX',
};
function convertCurrency(wordlineCurrency) {
const fellohCurrency = WORDLINE_TO_FELLOH_CURRENCY[wordlineCurrency.toUpperCase()];
if (!fellohCurrency) {
throw new Error(`Unsupported currency: ${wordlineCurrency}`);
}
return fellohCurrency;
}
// Amount values stay the same — both use minor units
// Wordline: { amount: 150000, currencyCode: 'GBP' }
// Felloh: { amount: 150000, currency: 'GBX' }
Webhook event mapping
Wordline uses webhook notifications (or the older Ogone server-to-server feedback). Felloh uses standard webhooks with HMAC-SHA256 signatures.
| Wordline event | Felloh event | Notes |
|---|---|---|
payment.paid | transaction.completed | Payment has been captured |
payment.rejected | transaction.failed | Payment was declined |
refund.refundCompleted | refund.completed | Refund has been processed |
payment.chargebacked | chargeback.created | Customer disputed the charge |
payment.captured | transaction.completed | Capture confirmation (Felloh captures automatically) |
payment.cancelled | — | No direct equivalent — payment links can be deleted via the API |
Migrating a webhook handler
Webhook handler migration
import crypto from 'crypto';
app.post('/webhooks/wordline', express.json(), (req, res) => {
// Verify Wordline signature
const signature = req.headers['x-gcs-signature'];
const keyId = req.headers['x-gcs-keyid'];
// Wordline uses HMAC-SHA256 with your webhook secret
const body = JSON.stringify(req.body);
const expected = crypto
.createHmac('sha256', webhookSecret)
.update(body)
.digest('base64');
if (signature !== expected) {
return res.status(401).send('Invalid signature');
}
const event = req.body;
if (event.payment) {
switch (event.payment.status) {
case 'CAPTURED':
handlePaymentSuccess(event.payment);
break;
case 'REJECTED':
handlePaymentFailure(event.payment);
break;
}
} else if (event.refund) {
if (event.refund.status === 'REFUNDED') {
handleRefund(event.refund);
}
}
res.status(200).send('OK');
});
Wordline uses Base64-encoded HMAC signatures. Felloh uses hex-encoded HMAC-SHA256 signatures. Both sign the request body, making the migration straightforward.
What you can remove
Migrating from Wordline to Felloh lets you remove significant custom code — especially if you're on an older Ogone-era integration.
| Custom code you built | Felloh replacement |
|---|---|
| Booking-to-payment mapping (merchantReference tracking, reconciliation) | Felloh bookings link payments automatically |
| Settlement reconciliation (Merchant Portal reports, manual matching to bookings) | Felloh automatic reconciliation — every payment is matched to its booking via 3-point verification |
| Manual surcharge calculations (spreadsheets, card type identification, compliance checks) | Felloh automatic surcharging — card type detected and surcharge applied in real time |
| Payment scheduling (cron jobs, token-based recurring charges, retry logic) | Felloh scheduled payments |
| Token / alias management and storage | Felloh automatic card tokenisation |
| Hosted checkout page configuration and redirect handling | Felloh payment links with redirect URLs |
| Capture logic (manual or delayed capture) | Felloh handles capture automatically |
| SHA signature calculation (Ogone-era SHA-IN / SHA-OUT strings) | Felloh uses standard HMAC-SHA256 |
| Trust account management and reconciliation | Felloh managed trust accounts |
| Supplier payment processing | Felloh disbursements |
| Fraud Professional configuration (separate product) | Felloh Fraud Shield (included) |
| Form POST generation (Ogone hidden field pattern) | Not needed — Felloh is JSON REST |
Migrating from the older Ogone integration
If you're still on the Ogone-era e-Commerce form POST integration, the migration to Felloh is even more impactful. Here's what changes:
| Ogone pattern | Felloh replacement |
|---|---|
| Hidden HTML form with SHA-IN signed fields | Single JSON API call to create-payment-link |
PSPID, USERID, PSWD authentication | Public/private key pair → bearer token |
| SHA-OUT signature validation on return URL | HMAC-SHA256 webhook signature |
ORDERID parameter for payment tracking | booking_reference first-class field |
Status polling via DirectLink QueryDirect | Webhooks or list-transactions API call |
| Batch file uploads for recurring payments | Individual scheduled payment API calls |
Ogone form POST vs Felloh API
<!-- Ogone hidden form POST pattern -->
<form method="post" action="https://secure.ogone.com/ncol/prod/orderstandard.asp">
<input type="hidden" name="PSPID" value="your-pspid">
<input type="hidden" name="ORDERID" value="TRIP-2026-001">
<input type="hidden" name="AMOUNT" value="50000">
<input type="hidden" name="CURRENCY" value="GBP">
<input type="hidden" name="LANGUAGE" value="en_US">
<input type="hidden" name="EMAIL" value="sarah@example.com">
<input type="hidden" name="SHASIGN" value="calculated-sha-signature">
<input type="submit" value="Pay Now">
</form>
Migration plan
A step-by-step approach to moving from Wordline to Felloh.
Phase 1 — Set up and validate
- Create a Felloh account and generate sandbox API keys from the Sandbox Registration Form
- Set up authentication — implement token generation and caching
- Create a test booking and payment link to verify your integration works
- Connect the MCP server (optional) — useful for exploring the API interactively during migration
Phase 2 — Audit and plan
- Identify your Wordline integration type — are you on the newer Connect API, the older Ogone form POST, or a mix?
- List all payment flows — hosted checkout, direct API, tokenised recurring, batch files
- Create customers in Felloh — pull customer data from your booking system
- Create bookings for any active reservations
- Map your existing order IDs / merchant references to Felloh bookings using the
booking_referencefield
Phase 3 — Migrate payment flows
- Replace hosted checkout / Ogone form POST with Felloh payment links
- Replace direct API / hosted tokenization with Felloh ecommerce sessions and the Felloh SDK
- Replace token-based recurring payments (cron jobs or batch files) with Felloh scheduled payments
- Replace refund maintenance operations with Felloh's two-stage refund process
- Replace Wordline webhook handlers with Felloh webhook handlers
- Remove capture logic — Felloh handles capture automatically
- Remove SHA signature calculation code — Felloh uses standard HMAC-SHA256
Phase 4 — Test in sandbox
- Run through every payment flow in the Felloh sandbox
- Test edge cases: declined payments, partial refunds, expired tokens
- Verify webhook delivery and handling
- Confirm customer-facing payment pages work correctly
Phase 5 — Go live
- Switch to production API keys
- Run Wordline and Felloh in parallel for a transition period — new bookings go through Felloh, existing Wordline payments settle naturally
- Monitor the Felloh Dashboard for transaction status
- Decommission Wordline integration and remove legacy code
- Cancel Wordline Fraud Professional add-on (now covered by Fraud Shield)
You don't need to migrate historical transaction data. Wordline retains your historical records via the Merchant Portal / Back Office. Felloh starts fresh with new bookings.
Common migration questions
Can I run Wordline and Felloh in parallel? Yes. Route new bookings to Felloh and let existing Wordline transactions settle naturally. There's no conflict between the two.
Do I need to re-collect card details? Yes, for new payments. Wordline tokens/aliases are not transferable to Felloh. Customers will enter their card details on their first Felloh payment, and the card is automatically tokenised for future use.
What about PCI compliance? Felloh handles PCI compliance the same way — card details are collected via Felloh's hosted payment pages or SDK, never touching your servers. If you were using Wordline's Hosted Tokenization Page, the Felloh SDK provides equivalent security.
I'm still on the old Ogone integration. Is migration harder? Actually, it's often easier — the Ogone form POST pattern is simple but inflexible. You replace the form and SHA signature logic with a single Felloh API call. See the Ogone migration section above.
I use Wordline batch files for recurring payments. How does that translate? Replace batch files with individual Felloh scheduled payments. Each scheduled payment has a specific execution date and amount — Felloh handles the execution automatically. No batch files, no cron jobs.
What about 3DS (Strong Customer Authentication)? Felloh handles 3DS automatically on payment links and ecommerce sessions. You can configure 3DS rules in Fraud Shield — for example, setting velocity thresholds for when 3DS challenges are triggered.
Can I use the Felloh MCP server during migration? Absolutely. Connect the MCP server to your AI editor and use it to explore the API, create test bookings, and debug your integration interactively.
