I’ve been carefully evaluating various services related to online payment systems and digital product sales for some time now. As is well known, PayPal has been unavailable in Turkey since 2016. Considering the widespread adoption of PayPal, you must have personally experienced the extent of difficulties encountered in online transactions and payments.
On the other hand, Stripe—which I also mentioned under several headings—is likewise not offering support in Turkey. Of course, despite all these barriers, individuals and communities continue to test new solutions, with some companies actively trying to get involved. Iyzico is one of these options, enabling product and service sales through connections, especially via the Iyzilink feature. However, it fails to meet the needs of automation and integration with different services.
For some time, I’ve been selling digital products through Gumroad, and I’ve received numerous messages regarding this. Gumroad processes payments via PayPal and Stripe, but unfortunately, as I mentioned earlier, these services are not integrated with Turkey’s payment channels (such as banks). As a result, either you must have a physical address in a supported country, or you must operate multiple different services simultaneously, and thus, you must also consider numerous potential disruptions. Recently, I began migrating my products from Gumroad to another service called Paddle. There were two main reasons for this transition: outages and Gumroad’s failure to deliver on the performance I had expected. Let’s take a closer look at these points.
What is Paddle?
Paddle, a revenue delivery platform1 headquartered in London, developed with SaaS (Software as a Service) requirements in mind. In short, revenue delivery refers to a business strategy that optimizes the journey from a customer’s purchase intent to their bank account—by enabling rapid adaptation to new growth opportunities through online product and/or service sales revenue generated2.
According to data shared by Paddle in 2020, the company’s annual revenue increased by more than 175% over the past four years. In 2017, the company partnered with MacPaw’s DevMate, a software development platform, and raised $12.5 million in a funding round led by Notion Capital3. As of these dates, Paddle serves over 2,000 services across 245 countries and regions.
Paddle, based on its core solution framework, is the only revenue delivery platform designed specifically to support SaaS businesses in achieving sustainability across purchase, transaction reconciliation, and growth/expansion processes4. With Paddle’s platform, global tax compliance, online payments, subscriptions, and payment transfer processes can be easily managed. The payment methods supported by Paddle are Bank/Wire Transfer, PayPal, and Payoneer.
Paddle usage currently requires an approval process. After answering a few basic questions about the business model, a membership application is approved.
Paddle enables you to quickly get started with payment management, checkout (payment processing), subscriptions, and tax calculations. You can integrate your customers and/or subscribers via the Audience page, define digital product, subscription, and license key configurations via the Catalog section, create discount coupons and product groups, and customize your checkout page through the Checkout page. Payment integrations can be implemented in various formats and languages via options such as SDK, iframe, and custom pages.
Paddle Integration
Paddle provides customizable integration options for one-time purchases and subscriptions5. Each option comes with its own pricing plan, along with related tax and discount rules. Additionally, discount coupons can be linked to products and/or transactions, either during the checkout step or externally.
For client-side integrations, you’ll need to load a JavaScript file. After that, you can include products into the purchase process using a unique user identity.
<script src="https://cdn.paddle.com/paddle/paddle.js"></script>
<script type="text/javascript">
Paddle.Setup({ vendor: 1234567 }); // unique user identity
</script>
After loading the JavaScript file and specifying the identity, you can call products either directly within the JavaScript or via the data-product attribute, triggering a button or iframe.
<a href="#!" class="paddle_button" data-product="12345">Buy Now!</a>
You can integrate the relevant actions with analytics tools such as Google Analytics using the Paddle.Checkout.open() method.
document.getElementById('buy').addEventListener('click', openCheckout);
function openCheckout() {
Paddle.Checkout.open({
product: 520773,
successCallback: function(data) {
dataLayer.push({'event': 'checkoutSuccess'});
},
closeCallback: function(data) {
dataLayer.push({'event': 'checkoutClose'});
}
});
};
You could also handle this inside the Paddle.Setup() function instead of using an external function.
Paddle.Setup({
vendor: 12345,
eventCallback: function(data) {
if (data.event === 'Checkout.Complete') {
dataLayer.push({'event': 'checkoutSuccess'});
}
else if (data.event === 'Checkout.Close') {
dataLayer.push({'event': 'checkoutClose'});
}
}
});
If you’d like to use the purchase event, you can create the dataLayer content accordingly alongside the successCallback as shown below6.
dataLayer.push({
'event': 'purchase',
'ecommerce': {
'currencyCode': data.checkout.prices.customer.currency,
'purchase': {
'actionField': {
'id': data.checkout.id,
'affiliation': 'Your store name',
'revenue': data.checkout.prices.customer.total,
'tax': data.checkout.prices.customer.total_tax,
'coupon': data.checkout.coupon.coupon_code
},
'products': [{
'name': data.product.name,
'id': data.product.id,
'price': data.checkout.prices.customer.total,
'brand': 'Your brand name',
'quantity': data.product.quantity
}]
}
}
});
I’ll continue to add further enhancements and share my experiences with the service over time.