Headless E-commerce for Small Businesses: Astro + Przelewy24 without WooCommerce (2025)
Learn how to build a fast online store without WooCommerce, using Astro + Przelewy24. Headless e-commerce for small businesses: performance, security, and low maintenance costs.
If you run a small service or product business in Poland and are planning to launch online sales, you’ve probably heard about WooCommerce as the “standard” solution. But is it really the best option for a store with 5–50 products? In this guide, I’ll show you how to approach e-commerce differently – using headless architecture, the Astro framework, and Przelewy24 as your payment gateway. You’ll get a store faster than WooCommerce, cheaper to maintain, and compliant with the latest Core Web Vitals and GDPR requirements.
1. The WooCommerce problem for small stores
WooCommerce is powerful, but for small businesses it often proves to be overkill:
- Performance – every installation requires WordPress + theme + plugins for payments, SEO, caching, security. Result? LCP often above 3s, INP exceeding 400ms, and Core Web Vitals showing red.
- Security – WordPress and WooCommerce regularly require updates due to security vulnerabilities. For a small business, this is a risk of customer data and payment loss.
- Maintenance costs – VPS or managed WordPress hosting, premium plugin licenses, SSL certificates, backup tools – totaling 25–75 EUR monthly.
- Complexity – the WooCommerce admin panel is overloaded with options that a small store will never use (loyalty programs, warehouse integrations, wholesale APIs).
- Vendor lock-in – changing platforms means exporting thousands of products, configurations, payment plugins, and migrating the entire infrastructure.
According to research, JAMstack sites load 2.3x faster than traditional CMS – a huge competitive advantage, especially in local business where seconds determine conversion.
2. What is headless e-commerce?
Headless e-commerce is an architecture where:
- Frontend (the site customers see) is separated from backend (product and payment management).
- Products, prices, descriptions are stored in a lightweight CMS (like Keystatic) or simple Markdown files.
- Payments are handled by a dedicated gateway (Przelewy24, Stripe, PayU) via API.
- Everything generates as static HTML files (thanks to Astro) that load instantly.
When does headless e-commerce make sense?
| Product Count | Recommendation |
|---|---|
| 1–10 products | Simple contact forms with description + payment via traditional transfer |
| 10–50 products | Headless e-commerce (Astro + Content Collections + Przelewy24) ⭐ |
| 50–200 products | Headless + inventory management (e.g., Medusa, Shopify API) |
| 200+ products | Dedicated e-commerce platform (Shopify, PrestaShop, or custom) |
For most local service businesses and manufacturers, we’re talking about 10–50 products – the ideal range for headless.
Benefits of headless architecture:
✅ Speed – LCP < 1.8s, INP < 200ms (compliance with Google AI Mode & INP)
✅ Security – no WordPress panel = no bots breaking passwords at /wp-admin
✅ Low costs – hosting for $0–15/month (Cloudflare Pages, Netlify, Vercel)
✅ Full control – every UI element can be customized without fighting a WooCommerce theme
✅ SEO – static files = instant indexing by Google
3. Technology stack for a small store
Here’s the set I recommend to clients in Poland:
| Component | Technology | Why? |
|---|---|---|
| Site generator | Astro | Ultra-fast SSG (Static Site Generation), excellent SEO |
| Product management | Astro Content Collections or Keystatic CMS | Products in Markdown, editing in Git-based panel |
| Styling | Tailwind CSS | Fast prototyping, small CSS bundle |
| Payment gateway | Przelewy24 | Most popular in Poland, supports BLIK, cards, transfers |
| Hosting | Cloudflare Pages | Free tier, global CDN, Git deployment |
| Forms | Cloudflare Workers + Turnstile | Spam protection without cookie banners |
Why Przelewy24?
Przelewy24 is the most popular payment system in Poland (2025). It supports:
- 💳 Credit cards (Visa, Mastercard)
- 📱 BLIK
- 🏦 Bank transfers (mBank, PKO BP, ING, and others)
- 🌍 PayPal, Apple Pay, Google Pay
API integration is simple, commissions are competitive (1.5%–2.5% depending on package), and customers trust a local gateway more than foreign solutions.
4. Product structure in Astro Content Collections
Instead of a database and WooCommerce panel, you store products in Markdown files. Example:
---
# src/content/products/ceramic-mug-silesia.md
title: "Ceramic mug with Silesia logo"
slug: "ceramic-mug-silesia"
price: 9.99
currency: "EUR"
category: "gadgets"
inStock: true
sku: "MUG-SIL-001"
image: "/images/products/mug-silesia.webp"
description: "Hand-painted ceramic mug with Silesia logo. Perfect gift."
---
Ceramic mug with 330 ml capacity, hand-painted Silesia logo.
Local product made by Silesian craftsmen. Dishwasher safe.
**Specifications:**
- Capacity: 330 ml
- Material: Ceramic
- Dimensions: 8 cm diameter, 10 cm height
In Astro, you define a collection in src/content/config.ts:
import { defineCollection, z } from 'astro:content';
const productsCollection = defineCollection({
type: 'content',
schema: z.object({
title: z.string(),
slug: z.string(),
price: z.number(),
currency: z.string(),
category: z.string(),
inStock: z.boolean(),
sku: z.string(),
image: z.string(),
description: z.string(),
}),
});
export const collections = {
products: productsCollection,
};
Now you can display all products on the /store page:
---
import { getCollection } from 'astro:content';
const products = await getCollection('products');
---
<h1>Our products</h1>
<div class="grid grid-cols-3 gap-4">
{products.map(product => (
<a href={`/store/${product.data.slug}`}>
<img src={product.data.image} alt={product.data.title} />
<h2>{product.data.title}</h2>
<p>{product.data.price} {product.data.currency}</p>
</a>
))}
</div>
5. Przelewy24 integration step by step
Step 1: Register Przelewy24 account
- Go to przelewy24.pl and create an account (sandbox for testing: sandbox.przelewy24.pl).
- Complete company data (tax ID, address, bank details).
- Get Merchant ID, POS ID, CRC Key, and API Key from the panel.
Step 2: Payment endpoint (Cloudflare Workers)
In Astro, you can use Server-Side Rendering (SSR) or Cloudflare Workers to handle payments. Example with Workers:
// functions/api/payment.js
export async function onRequestPost(context) {
const { request, env } = context;
const body = await request.json();
const merchantId = env.P24_MERCHANT_ID;
const posId = env.P24_POS_ID;
const crcKey = env.P24_CRC_KEY;
const sessionId = `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
const amount = Math.round(body.price * 100); // price in cents
const sign = crypto.createHash('sha384')
.update(`${sessionId}|${merchantId}|${amount}|PLN|${crcKey}`)
.digest('hex');
const p24Request = {
merchantId: parseInt(merchantId),
posId: parseInt(posId),
sessionId,
amount,
currency: 'PLN',
description: body.description,
email: body.email,
country: 'PL',
language: 'pl',
urlReturn: `${env.SITE_URL}/payment/success`,
urlStatus: `${env.SITE_URL}/api/p24-verify`,
sign,
};
const response = await fetch('https://secure.przelewy24.pl/api/v1/transaction/register', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Basic ${btoa(`${posId}:${env.P24_API_KEY}`)}`,
},
body: JSON.stringify(p24Request),
});
const data = await response.json();
if (data.data && data.data.token) {
return new Response(JSON.stringify({
redirectUrl: `https://secure.przelewy24.pl/trnRequest/${data.data.token}`
}), { status: 200 });
}
return new Response(JSON.stringify({ error: 'Payment init failed' }), { status: 500 });
}
Step 3: Order form
On the product page (src/pages/store/[slug].astro):
---
import { getEntry } from 'astro:content';
const product = await getEntry('products', Astro.params.slug);
---
<h1>{product.data.title}</h1>
<img src={product.data.image} alt={product.data.title} />
<p>{product.data.description}</p>
<p><strong>{product.data.price} EUR</strong></p>
<form id="checkout-form">
<input type="email" name="email" placeholder="Your email" required />
<input type="text" name="name" placeholder="Full name" required />
<button type="submit">Buy now</button>
</form>
<script>
document.getElementById('checkout-form').addEventListener('submit', async (e) => {
e.preventDefault();
const formData = new FormData(e.target);
const email = formData.get('email');
const name = formData.get('name');
const response = await fetch('/api/payment', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
price: 9.99,
description: 'Ceramic mug with Silesia logo',
email,
}),
});
const data = await response.json();
if (data.redirectUrl) {
window.location.href = data.redirectUrl;
}
});
</script>
Step 4: Payment verification (webhook)
Przelewy24 sends a notification to urlStatus after payment completion. You must verify the signature:
// functions/api/p24-verify.js
export async function onRequestPost(context) {
const { request, env } = context;
const body = await request.json();
const merchantId = env.P24_MERCHANT_ID;
const crcKey = env.P24_CRC_KEY;
const sign = crypto.createHash('sha384')
.update(`${body.sessionId}|${body.orderId}|${body.amount}|PLN|${crcKey}`)
.digest('hex');
if (sign !== body.sign) {
return new Response('Invalid signature', { status: 400 });
}
// Save order in database/CRM/email
await env.DB.prepare('INSERT INTO orders (session_id, email, amount) VALUES (?, ?, ?)')
.bind(body.sessionId, body.email, body.amount)
.run();
return new Response('OK', { status: 200 });
}
6. When you DON’T need full e-commerce
Not every business needs a cart and payment gateway. Consider simpler options:
Scenario 1: Services with booking
If you offer services (hairdresser, massage, consultations), an online booking system (Calendly, Cal.com) works better than a store.
Scenario 2: 1–5 products
For a handful of products, a contact form with description and traditional transfer payment or cash on delivery is sufficient. You save time and money.
Scenario 3: Custom products
If you make products to order (furniture, B2B services), a quote form + invoice works better than an automated store.
7. Case study: Local business from Poland
Before (WooCommerce):
- 25 products (promotional gadgets)
- WordPress + WooCommerce + premium theme
- VPS hosting: €30/month
- LCP: 3.8s, INP: 520ms
- PageSpeed Score: 54/100 (mobile)
- Average conversion: 1.2%
After (Astro + Przelewy24):
- 25 products in Content Collections
- Hosting: Cloudflare Pages (free tier)
- LCP: 1.4s, INP: 180ms
- PageSpeed Score: 97/100 (mobile)
- Average conversion: 2.8% (+133%)
- Monthly cost: €4 (domain)
Results:
- ⚡ Speed increased 2.7x (LCP 3.8s → 1.4s)
- 💰 Costs dropped by 87% (€30 → €4/month)
- 📈 Conversion increased by 133% (1.2% → 2.8%)
- 🔒 Security – zero incidents vs. 3 WP/WooCommerce alerts annually
8. Grants for online stores: Digital Transformation Programs
Did you know you can get up to €200,000 in funding for business digitalization? Various EU programs cover:
- ✅ Online stores and e-commerce platforms
- ✅ Order management systems (CRM, ERP)
- ✅ Payment integrations (Przelewy24, PayU, Stripe)
- ✅ Digital marketing and analytics tools
Terms:
- Funding: 50% of eligible costs
- Maximum amount: varies by country/program
- Minimum project value: €2,500 net
- Industries: manufacturing, services, trade
Check with local grant advisors before launching your store to maximize returns. More details in UP Grant Website Guide.
9. Cost comparison: WooCommerce vs Headless
| Element | WooCommerce | Headless (Astro + P24) | Shopify |
|---|---|---|---|
| Implementation cost | €500–1,000 | €750–1,250 | €250 |
| Monthly hosting | €25–75 (VPS) | €0–12 (Cloudflare) | €0 (trial) + €75–125 (paid) |
| P24/payment commission | 1.5–2.5% | 1.5–2.5% | 2.0% + Shopify commission |
| Monthly maintenance | €37–75 (plugins, updates) | €4–12 (domain, monitoring) | €75–125 (subscription) |
| PageSpeed (mobile) | 50–75/100 | 95–100/100 | 75–90/100 |
| Core Web Vitals | ❌ Poor (LCP > 2.5s) | ✅ Excellent (LCP < 1.8s) | ⚠️ Good (LCP 2.0–2.5s) |
| Security | ⚠️ Requires active maintenance | ✅ No backend to attack | ✅ Managed by Shopify |
| UI flexibility | ⚠️ Limited by theme | ✅ Full control (Tailwind) | ⚠️ Limited by Liquid |
| Vendor lock-in | ⚠️ Medium (WordPress) | ✅ Low (content in Markdown) | ❌ High (Shopify) |
Verdict: For small stores (10–50 products), headless offers the best quality-to-price ratio and greatest flexibility.
10. Headless e-commerce implementation checklist
Phase 1: Planning (1–2 weeks)
- Product inventory (names, prices, images, descriptions)
- Przelewy24 account registration (sandbox for testing)
- Category and navigation structure definition
- Information architecture (catalog, product page, checkout)
Phase 2: Implementation (2–3 weeks)
- Astro + Content Collections configuration
- Product image pipeline (AVIF/WebP)
- Przelewy24 integration (sandbox → production)
- Order forms + validation
- Payment confirmation page (success/error)
- P24 verification webhook
Phase 3: Testing (1 week)
- Payment tests (BLIK, card, bank transfer)
- Mobile tests (iOS, Android)
- Lighthouse audit (LCP, INP, CLS)
- WCAG accessibility tests
- Webhook verification (orders reach CRM/email)
Phase 4: Deployment (3–5 days)
- Deploy to Cloudflare Pages
- Domain and SSL configuration
- GDPR-compliant cookieless analytics
- Error monitoring (Sentry, Cloudflare Workers Logs)
- System backup (Git repo + product snapshot)
Phase 5: Marketing and optimization (ongoing)
- Local SEO: “product + city” phrases (guide)
- Conversion optimization (A/B tests CTA, form)
- Email marketing (new product notifications)
- Retargeting (Meta Ads, Google Ads)
11. FAQ – common questions about headless e-commerce
Can I add products myself without a programmer?
Yes, if you use Keystatic CMS. You edit products in a web panel, and the system saves changes to the Git repository. A programmer can train you in 30 minutes.
How long does Astro + Przelewy24 store deployment take?
For a catalog of 10–30 products, typical time is 3–5 weeks (planning, coding, testing, deployment). For comparison: WooCommerce can be launched in a week, but further customizations take months.
What about BLIK payments?
Przelewy24 supports BLIK natively. The customer selects BLIK on the P24 page, enters the code from their banking app, and payment is instant.
Is this solution scalable to 100+ products?
Yes, but at this scale consider headless CMS with GUI (Medusa, Payload CMS) instead of Markdown files. Astro works great with such systems via API.
What if a customer cancels an order?
In the Przelewy24 panel, you can refund payment (full or partial). Refund automation can be built via P24 API, but for small stores manual handling is sufficient.
How do VAT and invoices work?
Przelewy24 does not generate invoices – you must use accounting software (e.g., InFakt, Fakturownia). API integration allows automatic invoice generation after payment verification.
12. Next steps – free e-commerce consultation
Headless e-commerce is the future of online sales for small and medium businesses. You gain:
- ⚡ Blazing speed (LCP < 1.8s, INP 2025 compliance)
- 💰 Low costs (€4–12/month vs. €37–75 in WooCommerce)
- 🔒 Security (no WordPress = no panel attacks)
- 🎨 Full control (every UI element tailored to client)
- 📈 Better conversions (fast site = happy customers)
If you want to launch a store without WooCommerce or migrate an existing store to headless architecture, schedule a free consultation:
📞 Phone: +48 697 433 120 📧 Email: kontakt@qualixsoftware.com 🌐 Form: qualixsoftware.com/kontakt
We’ll discuss:
- Product catalog and functionality scope
- Przelewy24 integration (or alternative gateways)
- Implementation timeline and budget
- Funding possibilities from Digital Transformation programs
I serve businesses across Poland – online meetings, 100% remote execution, post-sale support for the first 60 days.
Related articles
- Migrate from WordPress to Astro without losing SEO
- Core Web Vitals – performance improvement 2025
- Online booking system for service businesses
- GDPR-compliant website analytics – cookieless
- UP Grant for website – complete guide 2025
Remember: E-commerce is not just technology, but primarily customer experience. A fast site, secure payments, and clear checkout are the foundation of conversion. Headless architecture gives you all these elements without compromises.