🎉 Celebrate with 10% OFF on All Products! Use Code: GFEX10 Or Buy Any 2+ Items for 30% OFF with Code: GFEX30!

Gravity Forms Omise Premium Add-on Setup Guide

Updated 10 min read Gravity Forms Integrations A–Z
On this page
  1. What you need
  2. Install and activate
  3. Connect your Omise account
  4. Currencies and payment methods
  5. Create the feed
  6. What the customer sees
  7. Webhooks
  8. Payment statuses
  9. Refunds
  10. Authorize now, capture later
  11. How this add-on differs
  12. For developers
  13. Troubleshooting
  14. Go live

The Gravity Forms Omise Premium Add-on takes payments in Thailand, Japan, Singapore and Malaysia with your forms through Omise (Opn Payments). The form shows a payment box with the methods of your currency: cards everywhere, PromptPay, TrueMoney, Rabbit LINE Pay and mobile banking apps in Thailand, Konbini and Pay-easy in Japan, PayNow in Singapore, and FPX and DuitNow QR in Malaysia. The amount is always the total Gravity Forms worked out on the server, and before an entry changes the add-on reads the charge back from Omise and checks it.

Cards stay with Omise

Card fields in the payment box have no name, so the browser never sends them to your website. Omise.js turns the card into a one-time token with your public key, and only that token is submitted with the form. When the bank asks for 3-D Secure, the customer confirms the payment on Omise’s page and comes back to your confirmation.

This guide covers the setup, the feed, the payment methods, webhooks, refunds, capture and going live. The add-on costs one site $49 a year, five sites $69 a year, unlimited sites $199 a year.

What you need

  • Gravity Forms 2.9 or newer, WordPress 6.5 or newer and PHP 7.4 or newer.
  • An Omise account in Thailand, Japan, Singapore or Malaysia, with the payment methods you want enabled on it. Omise enables some methods (for example FPX, Konbini and PayNow) on request.
  • Your site on HTTPS. Omise sends webhooks to HTTPS addresses only, and Omise.js needs a secure page for cards.
  • A form with product fields and a total, in one of the supported currencies.

Install and activate

  1. Upload the add-on in Plugins → Add New → Upload Plugin and activate it.
  2. Open Forms → Settings → Omise and activate your license key. The Omise settings appear once the license is active.

Connect your Omise account

In the Omise dashboard open Keys. Each mode has a public key and a secret key: pkey_test_… and skey_test_… in test mode, pkey_… and skey_… in live mode.

  1. Leave the mode on Test.
  2. Paste the test public key and the test secret key. The secret key field refuses a public key, and each field refuses the key of the other mode.
  3. Save. The account line shows the masked keys, and the currency line lists the methods for the currency of your forms.
Omise settings: test or live mode, the public and secret key of each mode, the Thai baht currency line with the methods for baht, the account-ready line with masked keys and the webhook address
Settings: choose test or live mode and paste the public and secret key of each mode from the Omise dashboard. Secret keys are stored encrypted.

The secret key creates every charge and reads every result back. It is stored encrypted with a key made from your site’s salts and is never shown again. The public key is not a secret: Omise.js uses it in the customer’s browser to create card tokens.

Currencies and payment methods

Choose the currency in Forms → Settings. The payment box offers the ticked methods that take that currency:

Currency Methods in the payment box How the customer pays
Thai baht (THB) Card, PromptPay, TrueMoney, Rabbit LINE Pay, mobile banking (SCB Easy, K PLUS, KMA, Bualuang mBanking, Krungthai NEXT) Card fields on your form; a PromptPay QR code on the confirmation; the wallet or banking app page for the others
Japanese yen (JPY) Card, Konbini / Pay-easy / Online banking Card fields on your form; payment instructions from Omise to pay at a convenience store, by Pay-easy or by online banking
Singapore dollar (SGD) Card, PayNow Card fields on your form; a PayNow QR code on the confirmation
Malaysian ringgit (MYR) Card, FPX, DuitNow QR Card fields on your form; the bank page for FPX; a DuitNow QR code on the confirmation
USD, EUR, GBP, AUD, CAD, CHF, CNY, HKD, DKK Card Only when your Omise account charges cards in that currency

Amounts go to Omise in the smallest unit of the currency: satang for baht, cents for Singapore dollars and ringgit, and whole yen for the Japanese yen, which has no decimals. A form total of ¥6,000 is sent as 6000, and ฿3,250.00 as 325000. Omise sets a minimum per currency and per method, for example THB 20 for every Thai method, JPY 100 for cards and JPY 200 for Konbini, SGD 1 for PayNow and MYR 1 for FPX. When the total is outside the limits of the chosen method, the form shows a message before anything is saved.

Create the feed

  1. Open the form, then Settings → Omise, and add a new feed.
  2. Keep the transaction type Products and Services and the payment amount Form Total.
  3. Tick the payment methods to offer. Methods of other currencies are ignored on this form.
  4. Choose when cards are charged: at once, or authorize only and capture later from the entry screen.
  5. Write the charge description shown in your Omise dashboard. Merge tags such as {form_title} and {entry_id} work.
  6. Keep Send form notifications only after the customer has paid ticked so bookings are confirmed only when the money is there.
  7. Add conditional logic if only some submissions should be paid.
The Omise feed: products and services with the form total, the nine payment methods with their currencies, card capture at once or later, the charge description and notifications after payment
The feed: tick the payment methods, choose when cards are charged and write the charge description.

What the customer sees

The payment box sits above the submit button. The customer picks a method and fills in what it needs: the card fields for cards, a 10-digit phone number for TrueMoney, the bank for FPX and mobile banking, and a short name, email and phone number for Konbini and Pay-easy.

A Thai cooking class booking form with quantities, the total in baht and the Omise payment box with card, PromptPay, TrueMoney, Rabbit LINE Pay and mobile banking, card fields filled in
The payment box on the form. Card details go straight to Omise; the other methods show a QR code or open the wallet or bank page.
  • Card: on submit, Omise.js creates a token. If the card is charged at once, the customer sees your confirmation. If the bank asks for 3-D Secure, the customer confirms on Omise’s page and returns to your confirmation. A declined card shows the reason and a link back to the form.
  • PromptPay, PayNow, DuitNow QR: the confirmation shows the QR code and the amount. The customer scans it with a banking app; the page checks the payment by itself and also has a “check now” link.
  • TrueMoney, Rabbit LINE Pay, mobile banking, FPX: the customer goes to the wallet or bank page, approves the payment and comes back to your confirmation.
  • Konbini, Pay-easy, online banking: the customer receives the payment instructions from Omise and pays within the time Omise allows. The entry waits as Pending.

Webhooks

QR, wallet, bank and Konbini payments often finish after the customer has left your site, so Omise reports them with webhooks. Copy the webhook address from the settings page and add it as the endpoint of each mode in the Omise dashboard (Webhooks). One address serves both modes.

For every event the add-on asks Omise for the event by its id. A made-up event does not exist at Omise and is refused; an event whose type or charge differs from the one Omise holds is refused too. Then the charge is read back and checked against the entry: your reference, the amount, the currency and the mode must match. The same event delivered twice is applied once.

For a second layer, paste the webhook signing secret of each mode from the Omise dashboard. With it saved, every webhook needs a valid Omise-Signature header (HMAC-SHA256 of the timestamp and the body), and webhooks without one are answered 401. The webhook address also answers too many requests from one address with 429.

Payment statuses

What Omise reports Entry
Charge successful Paid, with the charge id and the method (for example “Visa •••• 4242” or “PromptPay”) in the notes
Card authorized but not captured (feed option) Authorized; the entry screen shows a Capture button
Charge pending: 3-D Secure, QR code not scanned yet, wallet or bank page open Stays Processing; it updates when the customer returns or the webhook arrives
Konbini / Pay-easy charge waiting for the store payment Pending, with the Payment Pending notification event
Charge failed or expired Failed, with the reason from Omise; nothing was charged
Authorized card charge reversed Voided
Refund (full or partial, from the entry or the Omise dashboard) Refunded or Partially Refunded, each Omise refund booked once

Refunds

Open the entry. The Omise box shows the status, the charge, the method, the amount and what was refunded. Type an amount (the rest of the payment is filled in) and press Refund. Full and partial refunds work, and each refund is booked by its Omise refund id, so the refund webhook for it later is not counted again. Refunds made in the Omise dashboard are recorded on the entry when their webhook arrives or when you press Check the payment with Omise.

An entry paid by card through Omise and fully refunded in two steps: the Omise box with the status, charge, card, Omise status, amount and refunded amount, and the notes
The entry: status, Omise charge, method, and full or partial refunds from the entry screen.

Omise cannot refund PromptPay and Konbini / Pay-easy payments, so those entries show a short note instead of the refund form. Other methods have their own refund periods at Omise, for example 30 days for TrueMoney and six months for PayNow and FPX; Omise’s answer is shown when a refund is refused.

Authorize now, capture later

With Authorize only, capture later in the feed, card payments are authorized and the entry is marked Authorized. Press Capture in the entry box when you are ready; the add-on captures the charge and reads it back before the entry is marked Paid. Authorizations that are not captured expire at Omise after the period your account allows.

How this add-on differs

  • Card details are typed in your form but turned into a one-time token by Omise.js in the browser; the card fields have no name, so the card number is never sent to your website.
  • The local methods of four countries in one feed, each shown only for its currency and only when the total is within Omise’s limits for that method.
  • Nothing is trusted from the browser, the return address or a webhook: every result is read back from Omise with your secret key and checked against the entry (charge, reference, amount, currency, mode).
  • Webhook events must exist at Omise, and with a signing secret saved they also need a valid Omise-Signature; the same event is never applied twice.
  • Refunds from the entry screen are booked by their Omise refund id, so a webhook for the same refund, or a refund made in the dashboard, is counted once.
  • Card payments can be authorized only and captured later from the entry screen.

For developers

The filter gravityextra_omise_charge_body changes the charge request before it is sent. The amount, the currency, the return address, the reference and the card token or source are set again after the filter, so they always match the entry.

// Add the customer's email to the Omise charge metadata for one form (ID 7).
add_filter( 'gravityextra_omise_charge_body', function ( $body, $feed, $form, $entry ) {
    if ( 7 !== (int) rgar( $form, 'id' ) ) {
        return $body;
    }
    $body['metadata']['customer_email'] = (string) rgar( $entry, '2' );
    return $body;
}, 10, 4 );

Other filters: gravityextra_omise_webhook_url (the webhook address), gravityextra_omise_js_url (the Omise.js address) and gravityextra_omise_rate_limit (requests per minute per address for the webhook and the return page).

Troubleshooting

What you see What to do
“This is a public key (pkey_)” The secret key field takes the secret key (skey_test_ in test mode, skey_ in live mode). The public key goes in the public key field above it.
“This key belongs to the other mode” Each field takes the key of its own mode: test keys contain _test_, live keys do not.
The card option is missing from the form Save the public key of the current mode. Without it the add-on cannot create card tokens, so it only offers the other methods.
“Online payment is not available in EUR” Choose Thai Baht, Japanese Yen, Singapore Dollar or Malaysian Ringgit in Forms → Settings, or a currency your Omise account charges cards in.
“The smallest amount that can be paid with PromptPay is ฿20.00” Omise sets a minimum per currency and per method (for example THB 20, JPY 100 for cards and JPY 200 for Konbini). Check the prices and quantities of the form.
The customer paid by QR but the entry stays Processing Check that the webhook address is added in the Omise dashboard for the mode you use. The QR page also checks again by itself, and the entry box has a “Check the payment with Omise” button.
Webhooks answered 401 A signing secret is saved but does not match the one in the Omise dashboard. Paste it again, or clear the field: the add-on still confirms every event with Omise.
No refund box on a PromptPay or Konbini entry Omise cannot refund these methods. Refund the customer another way and add a note to the entry.

Go live

  1. Make a test payment with each method you offer, using the Omise test cards and the test pages of the other methods.
  2. Paste the live public key and the live secret key, and add the webhook address in live mode in the Omise dashboard.
  3. Switch the mode to Live and save.
  4. Make one small real payment and refund it from the entry screen.

Entries paid in test mode keep a test label and stay checked against the test keys, so test and live payments never mix.

Still need help?

Our support team answers tickets every day, usually within a few hours.

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