Build a payment solution with maximum flexibility and full control over design and user experience
Fill in your payment details to complete the purchase.
Great customer service is one of our three core values. That’s why you won’t just be handed off to a chatbot when you need help.
How do I insert my logo?
Hi Adam!
You’ll find it under "Payment" and then "Payment windows". Let me know if you need any further help 💪
Best, Anders
ePay is owned and run by its founders. That means short decision-making paths, strong passion, and a sharp focus on delivering a payment solution that makes sense.

Want to get started quickly with an elegant and secure payment solution that integrates directly into your own checkout?
With Blocks you only need a few lines of code to embed our fields and gain full control of the entire payment flow.
Our flexible JavaScript client is built for developers who want to craft their own experience - without compromising on security or the user journey.
You control exactly how the fields behave and easily react to errors, approvals and redirects - with a robust set of events that covers the whole flow.
|With Blocks you can easily offer Apple Pay, Google Pay and MobilePay - side by side with your card fields.
You decide which payment methods to show and where the buttons should appear in your checkout.
All you need is to call the appropriate method via JavaScript.
The fields fully integrate into your existing flow and follow the same event structure as card payments.
You get a streamlined experience - both as a developer and for your customers.
1// 1️⃣ Initialize payment session first server side
2// 2️⃣ Include the ePay.js script in your webpage using the URL from the javascript-field in the session response
3
4// 3️⃣ Initialize Blocks
5 epay
6 .setSessionId("<SESSION_ID>") // Use the session ID from the server response
7 .setSessionKey("<SESSION_KEY>") // Use the session key from the server response
8 .setCallbacks({
9 clientReady: clientReadyCallback,
10 invalidSession: invalidSessionCallback,
11 challengeIssued: challengeIssuedCallback,
12 transactionAccepted: transactionAcceptedCallback,
13 transactionDeclined: transactionDeclinedCallback,
14 feeUpdated: feeUpdatedCallback,
15 clientRedirect: clientRedirectCallback,
16 invalidInput: invalidInputCallback,
17 inputValidity: inputValidityCallback,
18 inputSubmit: inputSubmitCallback,
19 sessionExpired: sessionExpiredCallback,
20 error: errorCallback,
21 })
22 .init();
23
24// 4️⃣ Mount the fields where you wish - use the id attribute, e.g. <div id="fields"></div>
25 epay.mountFields("fields", {
26 theme: "default",
27 language: "da", // Optional parameter ["da", "en", "sv", "no"]
28 variables: {
29 colorText: "#2e3033",
30 },
31 });