🎉 Celebrate with 10% OFF on All Products! Use Code: GFEX10 Or Buy Any 2+ Items for 30% OFF with Code: GFEX30!
Guides & Tutorials November 9, 2026

How to Take SumUp Payments with Gravity Forms (Step by Step)

GravityExtra
How to Take SumUp Payments with Gravity Forms (Step by Step)

SumUp is a popular choice for small businesses in Europe, the UK and Latin America: many already use it in the shop, and its online payments let customers pay the same account on the web. If your bookings, orders or donations come in through Gravity Forms, connecting the two means the total from the form becomes a SumUp payment, and the entry knows when it is paid. This tutorial walks through the whole setup, from the sandbox account to the first live payment, and explains what happens behind the scenes so you can trust the result.

We use the Gravity Forms SumUp Premium Add-on throughout. It creates a SumUp checkout for the exact form total, sends the customer to the SumUp hosted checkout page, reads every payment back from SumUp before an entry is marked paid, and lets you send refunds from the entry screen.

What you need before you start

  • A SumUp merchant account that can take online payments.
  • A SumUp sandbox merchant account for testing. You create it in the SumUp dashboard under Developer Settings → Sandboxes; it never moves real money.
  • A WordPress site on https with Gravity Forms 2.9 or newer.
  • About twenty minutes.

Online payments only

This tutorial is about payments on your website. Card readers and in-person payments are separate SumUp products and are not involved.

How the pieces fit together

It helps to picture the flow once before clicking through settings. Gravity Forms works out the total on your WordPress server. The plugin sends that total to the SumUp Checkouts API together with your merchant code, the currency of your account and a unique reference for this payment attempt, and asks for a hosted checkout. SumUp answers with the address of a payment page on its own checkout site. The customer is sent there, pays, and finds a button back to your site on the success page.

SumUp also sends a short status update to your site whenever the checkout changes. These updates carry only the checkout ID and are not signed, which is why the plugin treats them as a doorbell, not as proof. When the doorbell rings, when the customer comes back and every five minutes, the plugin asks SumUp directly for the checkout. Only a PAID checkout that has a successful transaction for the entry amount and currency, with your reference and merchant code, marks the entry Paid.

Step 1: Prepare the sandbox account

  1. Log in to the SumUp dashboard and switch to the sandbox merchant account. It has its own merchant code and shows a clear warning that it is a sandbox.
  2. Open Settings → For Developers → Toolkit → API Keys and create a key named, for example, “Website forms”.
  3. Copy the secret key (it starts with sup_sk_). SumUp shows it only once, so keep it somewhere safe until you paste it. The public key (sup_pk_) is for other integrations and does not work here.

Step 2: Connect Gravity Forms

SumUp settings: Test or Live mode, the merchant code and masked secret API key of each mode, how long a checkout stays valid, the currency line, the connection line with the sandbox account and the webhook address
Settings: the merchant code and a secret API key for your sandbox account (Test) and your real account (Live).

Install the plugin, activate your licence in Forms → Settings → SumUp and keep the mode on Test. Enter the merchant code and the secret key of the sandbox account and save. The plugin asks SumUp for the account with this key; nothing is created. It also checks that the account really is a sandbox: a real account under Test, or a sandbox under Live, is refused so test and real payments never mix. The connection line then shows the merchant code, the account type and the account currency, with the key masked to its first and last four characters. The key itself is stored encrypted.

One more setting is worth a look. Checkout valid for sets how long a checkout can be paid: 45 minutes by default. The SumUp payment page is open for 30 minutes; after the checkout expires, the entry is cancelled so it does not wait forever.

Step 3: Match the currency

SumUp takes online payments only in the currency of your account, for example euros for a German account or pounds for a UK account. Open Forms → Settings and set the Gravity Forms currency to the account currency shown on the connection line. If they differ, the currency line in the plugin settings turns red and payments are refused before anything is sent, so no customer ever reaches a payment page that cannot work.

Gravity Forms ships most SumUp currencies, but not Chilean pesos, Colombian pesos or Romanian lei. The plugin adds these three with the right format: pesos without decimals for Chile, two decimals for the others. That matters more than it sounds: with a wrong number of decimals, a price could be read a hundred times too high or too low. The plugin sends the exact total in major units, for example 285.50 for euros or 28550 for Chilean pesos, and refuses a total with more decimals than the currency has instead of rounding it.

Step 4: Build the form and the feed

A bike service booking form with quantities, the customer name and email, and the total of 285,50 euros, with the Continue to payment button
The form: Gravity Forms works out the total in the currency of your SumUp account.

Any Gravity Forms form with product fields or a total works. Our example is a bike workshop that sells a full service for 120,00 € and a new chain and cassette for 45,50 €. Two services and one chain make 285,50 €. In the form settings, open SumUp → Add New, choose Products and Services, pick the form total as the payment amount, and write a description such as Bike service #{entry_id}. You will see it with the payment in your SumUp dashboard, which makes matching payments to bookings quick.

The SumUp feed: products and services with the form total, the checkout description with merge tags and notifications only after payment
The feed: write the description you will see with the payment in your SumUp dashboard.

Tick “Send form notifications only after the customer has paid” if your booking email should wait for the payment. The plugin holds the notifications and sends them once, as soon as the payment is confirmed.

Step 5: Make a test payment

Open the form, fill it in and submit. You land on the SumUp payment page with the amount in your currency. Pay with one of the test cards from the SumUp developer documentation; the sandbox shows the same pages as the real checkout. On the success page, click the button back to the shop. The plugin reads the checkout from SumUp and shows your form confirmation. If SumUp is a moment slower than the customer, the page says it is confirming the payment and checks again by itself.

An entry paid through SumUp: the box with the status, amount, checkout, reference, SumUp status, transaction code, payment type and refunded amount, the Refresh status button and the refund form
The entry: status, checkout and transaction details read back from SumUp, and refunds sent from here.

In Forms → Entries the entry shows Paid, the SumUp transaction as the transaction ID, and a note with the transaction code and payment type. The SumUp box on the right shows the same details and the current checkout status. Try a declined payment too: in the sandbox, an amount of 11.00 always fails. The entry becomes Failed and the customer is told nothing was charged.

What each checkout status means for your entries

SumUp checkout Entry
PENDING (not paid yet) Processing. After three days without a payment the entry is set to Cancelled (a later payment is still recorded).
PAID with a successful transaction Paid, after the checkout, reference, merchant code, amount and currency match the entry. The transaction code and payment type are added to the note.
PAID without a successful transaction for the amount Processing, with a note. Never marked Paid on the checkout status alone.
FAILED (declined or not authenticated) Failed. If the customer pays later on the same checkout, the entry becomes Paid.
EXPIRED Cancelled

Two cases deserve a closer look. A declined payment marks the entry Failed, but the customer may try again on the same SumUp page; if they pay, the next update marks the entry Paid. And if SumUp ever shows a checkout as PAID without a successful transaction for the full amount, the entry stays as it is with a note, because a status alone is not money in your account.

When the internet is slow

Payments run over networks, and networks sometimes drop an answer. If SumUp does not answer the request that creates a checkout, the plugin does not simply try again, which could create two checkouts for one booking. It asks SumUp for any checkout with the reference it just used and continues with that one. If nothing exists, the customer stays on the form and is told nothing was charged. Status updates that go unanswered are sent again by SumUp, and the five-minute status check reads every waiting checkout, so a missed update never leaves a paid booking unpaid in your entries.

Refunds from the entry screen

On a paid entry, type the amount in the SumUp box and click Refund with SumUp. The plugin reads the checkout back first, then asks SumUp to refund that amount of the transaction. It records the refund only when the transaction read back from SumUp shows it, once per refund. Partial refunds are fine: the box shows how much has been refunded and how much is left, and the entry becomes Refunded when the whole amount is back with the customer.

Refunds you make in the SumUp dashboard are picked up as well: click Refresh status on the entry and they are recorded. If SumUp shows a refund as pending, the box lists it as “Refund pending” and the status check records it once SumUp completes it. A refund that fails is never recorded.

A worked example

Northfield Bike Workshop has a German SumUp account in euros. On a Saturday morning a customer books two full services and a new chain: 285,50 €. The plugin creates a checkout for 285.50 EUR with a unique reference and sends the customer to the SumUp page. They pay, tap the button back and see “Thank you! Your bike service is booked and paid.” A few seconds later SumUp sends its status update; the plugin reads the checkout again, sees the entry is already Paid and changes nothing. The booking email goes out once. On Monday the customer cancels the chain, and the workshop refunds 45,50 € from the entry. The transaction read back from SumUp shows the refund, and the entry lists 45,50 € refunded.

Why this setup is safe by design

  • An update is a signal, not proof. SumUp does not sign its payment updates, so the add-on always asks SumUp for the checkout itself before an entry changes.
  • Paid means a real transaction. A checkout status is not enough: there must be a successful transaction for the entry amount and currency.
  • Sandbox and real accounts never mix. A sandbox key cannot be saved under Live, and a real account cannot be saved under Test.
  • No double checkouts. If SumUp does not answer in time, the add-on looks up the checkout by its reference instead of creating a second one.
  • Refunds you can trust. A refund is recorded when the transaction read back from SumUp shows it, once per refund.

Tips for smooth payments

  • Keep the Gravity Forms currency equal to your SumUp account currency; check the currency line after any change.
  • Write descriptions with the entry number so you can match payments quickly in your SumUp dashboard.
  • Use https on your site so SumUp can send its status updates; the status check covers you either way, but updates are faster.
  • Add your business logo and name in the SumUp dashboard (Branding and Business profile) so the payment page looks like yours.
  • Test a declined payment and a partial refund in the sandbox before you switch to Live.

Going live

When your tests look right, switch the SumUp dashboard to your real merchant account, create a secret API key there, enter the merchant code and key in the Live fields, switch the mode to Live and save. Make one small real payment and refund it. Entries created in Test keep reading their checkouts from the sandbox, so nothing gets mixed up.

Questions

Does the plugin store card details?

No. Customers enter their payment details on the SumUp hosted page. The plugin creates the checkout, reads it back and sends refunds.

Which currencies can my forms use?

The currency of your SumUp account: euros, pounds, US dollars, Brazilian reais, Swiss francs, Czech, Danish, Norwegian and Swedish crowns, Hungarian forints, Polish zloty, Romanian lei, Chilean pesos or Colombian pesos.

What if a status update is missed?

The plugin also reads the checkout when the customer returns and every five minutes, and you can click Refresh status on any entry.

Are recurring payments supported?

Not in this version. The plugin handles one-off payments for products, services and donations.

Get started

Get the Gravity Forms SumUp Premium Add-on and follow the setup guide. Plans: one site $49 a year, five sites $69 a year, unlimited sites $199 a year.

0
0
Your Cart
Your cart is emptyReturn to Shop
🔥 FREQUENTLY BOUGHT TOGETHER
Complete Combo & Save 40%!
ITEM IN YOUR CART
Gravity Forms Klaviyo Add-on
$39.00/yr
+
🎁 RECOMMENDED ADD-ON SAVE 40% OFF
Original Price: $39.00/yr
Bundle Special Price: $23.40/yr