Stripe, wired in so every payment reconciles

Stripe Checkout or the Payment Element, subscriptions and invoices, wallets, 3-D Secure, tax settings and webhooks that update your orders reliably. Card data stays on Stripe's side. I test failed payments and refunds before go-live. From €690.

from€690proposed, excl. VAT 25.5 %. Fixed price after a look at your site.
Your Stripe account, in your nameWritten quote in one working dayFailure drill before go-live
WHAT HAPPENS, IN ORDER
  1. CheckoutThe customer presses Pay €43.90. The Payment Element sends the test card straight to Stripe; your server never sees the number.
  2. StripeThe PaymentIntent pi_test_3PqR8 moves from processing to succeeded.
  3. Your siteThe return page says "Thanks, confirming your payment" but does not mark the order paid: redirects get missed, reloaded or faked.
  4. Webhookpayment_intent.succeeded reaches /webhooks/stripe. Signature checked, event stored, 200 returned in 142 ms.
  5. OrderTEST-1042 is set to Paid by the webhook, and the payment id pi_test_3PqR8 is saved on the order for reconciliation.
  6. EmailOne receipt goes to [email protected] and stock is reduced once.

Paid, reconciled, one receipt. The order changed only when the signed webhook arrived.

Wire this into my site

PICK A TEST OUTCOME

TEST MODEno real money moves

Sample store (test)
€43.90
  • Wool socks, 2 pairs€38.00
  • Shipping€5.90
CARD NUMBER (STRIPE TEST CARD)
4242 4242 4242 4242TEST
EXPIRY
12 / 34TEST
CVC
123TEST
Payment succeeded (test). The customer sees this; your order table waits for the webhook.
WHAT YOUR SYSTEM SEESsample, test mode
Order
TEST-1042: Paid

Paid by webhook evt_test_1042a. Payment id saved.

Webhook

POST /webhooks/stripe
evt_test_1042a payment_intent.succeeded
200 OK in 142 ms

Receipt
Receipt TEST-1042[email protected]
Wool socks, 2 pairs€38.00
Shipping€5.90
Total paid (test)€43.90
Card ending 4242, test1 receipt

Stripe's published test cards: 4242 for success, 0002 for a generic decline, 3184 for a card that always asks for 3-D Secure. Event and payment ids here are made up and only look like test ids. Nothing on this page connects to Stripe.

Five stations between Stripe and your order table

The webhook is the only message that reliably says "this payment happened". Every one I build passes through the same five stations. Send a delivery through and watch what each station does.

DELIVERY
  1. Event received

    passed

    POST from Stripe: evt_test_7Hn2, type payment_intent.succeeded.

  2. Signature checked

    passed

    The Stripe-Signature header matches the endpoint secret and the timestamp is fresh.

  3. Stored

    passed

    Saved to a webhook_events table before any work starts.

  4. Processed once

    passed

    Order TEST-1042 set to Paid, event id marked done.

  5. Retried if it fails

    not needed

    Not needed: the endpoint answered 200 in 120 ms.

endpoint log, sampleTEST MODE

12:00:01 POST /webhooks/stripe evt_test_7Hn2

payment_intent.succeeded

12:00:01 signature ok, stored

12:00:01 order TEST-1042 -> paid

12:00:01 200 OK 120 ms

One event, one order update, one receipt.

IDEMPOTENCY, IN TWO SENTENCES

Stripe can deliver the same event more than once, so the handler records each event id and does nothing the second time it sees one. In the other direction, every refund or charge request my code sends carries an idempotency key, so a retried request still happens only once.

Retry behaviour follows Stripe's webhook documentation at the time of writing (in live mode, failed deliveries are retried with growing gaps for up to three days). Check the provider's current pages.

Checkout, Payment Element or Payment Links

Three ways to put Stripe on a site. I recommend one in the quote, with the reason in writing.

compareCheckoutStripe-hosted or embedded pagePayment Elementfields inside your own checkoutPayment Linksa link or QR code
Where it livesA payment page run by Stripe, opened from your cart or embedded in it.Your page and layout; Stripe supplies the secure fields.A shareable link. No code on your site.
Build effortLowest: configuration, branding and webhooks.Highest: your page, confirmation and return handling.Minutes, in the Stripe dashboard.
Card data on your serverNo. It stays with Stripe.No. The fields are Stripe frames.No.
SubscriptionsYes, in subscription mode.Yes, with Stripe Billing.Yes, for simple recurring prices.
Webhooks still neededYes, to mark orders paid.Yes, to mark orders paid.Yes, if anything should happen automatically.
Best forMost stores and sign-ups that want speed and fewer moving parts.Custom checkouts where the steps and design matter.A few products, deposits or invoices without a store.

Summary of Stripe's own documentation at the time of writing. Payment methods shown at checkout depend on your account settings, country and the customer's device. Check the provider's current pages.

What the integration covers

Set up in test mode first, then switched to live keys once every failure case behaves.

Checkout or Payment Element

The right surface for your site, styled to match, with the return page handled so a reload never charges twice.

Wallets

Apple Pay and Google Pay where your account and customers support them, including registering your domain so the buttons appear.

3-D Secure

Strong customer authentication for UK and EU cards, tested with challenge cards on phone and desktop, in-app browsers included.

Subscriptions and invoices

Plans, trials, proration, the customer portal and failed-payment emails, with access on your site following invoice events.

Tax settings

Stripe Tax configured to the registrations you tell me about. Which ones you need is a question to confirm with your accountant.

Refunds and reconciliation

Refunds from your store reach Stripe and back, and payouts match orders through the payment id saved on each one.

Tell me where Stripe needs to plug in. You get a fixed price tomorrow.

Get a Stripe quote

From test keys to the first real payout

Usually one to two weeks for a plugin set-up, longer for custom code. owner to confirm

  1. 1

    Access

    You own the Stripe account. I join as a team member with a developer role. No passwords by email.

  2. 2

    Build in test mode

    Test keys, a test webhook endpoint and the Stripe CLI forwarding events to staging.

  3. 3

    Failure drill

    Declines, 3-D Secure, a refund, a test dispute, a replayed webhook and a duplicate one.

  4. 4

    Go live

    Live keys stored on the server, a live endpoint with its own signing secret, one small real payment refunded.

  5. 5

    First payouts

    I check webhook deliveries and the first payouts against orders, then hand over written notes.

Packages

Prices in euros, excluding VAT 25.5 %. Stripe's own fees are between you and Stripe and depend on your contract; I never add to them.

Plugin set-up

€690from, proposed
  • Stripe on WooCommerce, Magento or OpenCart through the maintained extension
  • Wallets and 3-D Secure checked
  • Webhook endpoint verified with a test event
  • Failure drill and handover notes
Ask about a plugin set-up
Recommended

Custom integration

Quotedfixed price after a short look at your code owner to confirm
  • Checkout or Payment Element in your own code
  • Idempotent webhook handler with an event log
  • Refunds and disputes flowing into your orders
  • Daily payments-to-orders check
Ask about a custom integration

Subscriptions and billing

Quoteddepends on plans and access rules owner to confirm
  • Plans, trials and proration
  • Customer portal for cards and cancellations
  • Invoices and failed-payment emails
  • Access on your site driven by invoice events
Ask about subscriptions

Extra work at €95 an hour. If the integration does not pass the failure drill in test mode, it does not go live and you do not pay the balance. owner to confirm

When I would not recommend Stripe

Stripe is a strong default, not the answer to every checkout.

  • 01Most of your buyers are in Finland and expect online bank buttons. Compare a Finnish provider first: Finnish payment methods.
  • 02Your bank or acquirer already requires another gateway. Then Worldpay integration or your existing provider is the shorter path.
  • 03You sell a handful of things. Payment Links on their own may be enough, and you do not need a developer to set them up.

Questions about Stripe

Checkout or Payment Element: which should I use?

Use Checkout unless the payment step must sit inside your own page design. Checkout is a Stripe-hosted page that needs less code and picks up new payment methods with little work. The Payment Element lives inside your checkout and gives full control over layout and steps, at the cost of more code to build and maintain.

Can Stripe handle subscriptions and invoices?

Yes. Stripe Billing handles recurring plans, trials, upgrades with proration and one-off invoices, and a hosted customer portal lets subscribers update cards or cancel. I connect it to your site so access and orders follow webhook events such as invoice.paid and invoice.payment_failed, rather than whatever page the customer happened to land on.

How do you make sure webhooks never lose an order?

Each event is verified by its signature, saved before any work starts and processed once by its event id, so a repeat delivery changes nothing. The endpoint answers fast and does slow work afterwards, so Stripe's retries cover outages. A daily check compares Stripe payments with orders and flags any that do not match.

Get a Stripe quote

Your platform, what you sell and whether you need subscriptions. You get a written fixed price within one working day.

Pikselipolku does not process money or hold card data. You contract directly with Stripe, payments go straight into your Stripe account, and card details stay with Stripe.

Pikselipolku is an independent studio and is not affiliated with Stripe, PayPal, Worldpay, Klarna, Paytrail or any other provider named here.

Or email [email protected]

Store enquiryReply within one working day

What you sell, roughly how many products, and what is not working today.

About 2 minutes. Helps me send a firmer price.

Reply within one working day

Or email me: [email protected]

Made in Tampere. The path ends here.61.4978° N, 23.7610° E

Tell me what you need. I reply within one working day.

About these landmarks
  • Näsinneula tower, Tampere, 1971. Opened in 1971, with an observation deck and a revolving restaurant at the top.
  • Finlayson mill, Tampere, 1820. Cotton mill founded in 1820 by James Finlayson; the red-brick mill and chimney still stand by the Tammerkoski rapids.
  • Tampere Cathedral, 1907. National Romantic granite church by Lars Sonck, with frescoes by Hugo Simberg.
  • Helsinki Cathedral, 1852. White neoclassical church with green domes above the Senate Square steps, designed by Carl Ludvig Engel.
  • Parliament House, Helsinki, 1931. Eduskuntatalo, built of red granite behind a front row of tall columns.
  • Temppeliaukio Church, Helsinki, 1969. The Rock Church: cut into solid bedrock and roofed with a copper dome.
  • Suomenlinna sea fortress, Helsinki, 1748. Island fortress begun in 1748 at the entrance to Helsinki harbour; a UNESCO World Heritage Site.
  • Olavinlinna castle, Savonlinna, 1475. Medieval castle with three round towers, built on a rock island between two lakes.
  • Sauna by a frozen lake, UNESCO 2020. Finnish sauna culture is on UNESCO’s list of the intangible cultural heritage of humanity.
  • Lapland: spruce, reindeer and a fell, North. The northern end of the journey: spruce forest, a reindeer and a snow-capped fell.
© 2026 Pikselipolku, Tampere, FinlandBusiness ID [Y-tunnus]Built to WCAG 2.2 AABack to top