Connectors
If your shop or system runs on a known platform, there is nothing to program. Download the connector, paste your key, and you can charge cards.
- Tested
- Ran end to end against the real platform, with a real charge.
- Beta
- Downloadable and working, but it has not run against that platform yet. Test it on a staging copy before letting it charge.
- Recipe / No install
- Nothing to download: it is code you paste, or a page where you build it.
- On request / Planned
- Does not exist yet. If you need it, write to us and it moves up.
Online stores
Your platform already has a cart and a checkout. The connector adds card payments to it.
WooCommerce
WordPress
In the official WordPress directory
Take card payments in your store, with the card fields inside your own checkout or by sending the customer to the ROKI checkout. Classic and block checkout, refunds from the panel, and automatic reconciliation if a webhook goes missing.
Two ways to charge, picked in the settings
The customer presses "Place order" and leaves for a ROKI page, pays there and comes back to your store.
- Where they pay
- On a ROKI page
- You need
- Only the secret key
- Your store
- Works even without HTTPS
- Choose it if
- You want the simplest path, or your theme breaks the iframe
The card fields are rendered inside your checkout, in a ROKI iframe. The customer never leaves your store.
- Where they pay
- In your own store
- You need
- Secret key and publishable key
- Your store
- Must be HTTPS
- Choose it if
- You care about customers dropping off when they leave
You need: WordPress 6.2 or later, WooCommerce 8.0 or later, PHP 8.0 or later
How to install it
- Download the ZIP file.
- In your WordPress, go to Plugins → Add New → Upload Plugin, choose the ZIP and activate it.
- Go to WooCommerce → Settings → Payments → ROKI Connect.
- Paste your secret key. Start with
sk_test_to try it out andsk_live_to charge for real; it is in the API Integration tab of the portal. - This is where you pick the mode. The Como cobra dropdown has two options - the two modes compared above. The label is in Spanish in the plugin itself, so it reads the same on an English WordPress:
• "Checkout de ROKI (el cliente sale de tu tienda)" is mode 1, and it is the default.
• "Campos de tarjeta en tu tienda" is mode 2: the customer pays without leaving. - If you picked mode 2, also paste the publishable key (
pk_test_orpk_live_) from the same portal tab, and make sure your store is HTTPS. Without those two the plugin falls back to the ROKI checkout on its own, and the diagnostic tells you why. - Copy the webhook URL shown on that same screen, register it in the portal under the Webhooks tab, and paste back the signing secret it returns.
- Press Run diagnostics. If all five checks come back green, you are ready to charge.
What it does for you
| Card fields in your store | The customer never leaves: ROKI renders the card fields inside your checkout, in a secure iframe, and the number never touches your server. Chosen in the settings; the hosted checkout stays as a fallback. |
| Block checkout | Both modes work in the new WooCommerce checkout, not just the classic one. |
| Refunds and voids | From the order in WooCommerce. If the transaction can still be voided it does that, which never reaches the customer's statement; otherwise it refunds. |
| If a webhook goes missing | Every five minutes it checks pending orders and asks ROKI. A customer who paid is never left with a stuck order. |
| Fee pass-through | One switch. Turn it on and ROKI recalculates the total so you keep the order amount. |
| Updates | The notice reaches your WordPress panel like any other plugin's. |
Shopify
Shopify
There is nothing to download here: the bridge runs on ROKI's servers and your store just connects to it. Shopify does not allow charging cards inside its checkout without its closed payments program, so the bridge uses what any store IS allowed: the order is created pending, the customer gets a payment link, and on payment the order marks itself paid.
A payment link, neither HPP nor SPI. Shopify does not allow third-party card fields in its checkout outside its payments program, which is closed and approval-gated. It does not allow redirecting from the checkout either. The only thing it permits is what the bridge does: the order stays pending and the customer gets a payment link.
Two different ROKI apps for Shopify
This is the one that charges. The order is created pending, the customer gets their payment link by email, and on payment the order marks itself paid.
- What it does
- Charges cards
- Where it lives
- On ROKI servers
- How to enable it
- With the steps below
- In the App Store
- It is not, and it does not need to be
Lets your shoppers save a cart and share it by link. Whoever opens it gets those items back in your store and continues to the Shopify checkout.
- What it does
- Save and share carts
- Charges
- No. Charging is the bridge's job
- Price
- Free
- How to install it
- One click from the App Store
The bridge is tested end to end, with Shopify deliveries and real sandbox payments. It is enabled per store: write to ROKI to register yours, and place a test order with an sk_test_ key before opening it to your customers.
You need: Any Shopify plan. No partner account and nothing to install: the store creates its own custom app and a manual payment method from its own admin.
How to install it
- In your Shopify admin, go to Settings → Payments → Manual payment methods and create one named Tarjeta de credito o debito (ROKI).
- Enable custom apps under Settings → Apps and sales channels → Develop apps, create one with the
read_ordersandwrite_ordersscopes, and install it. Copy the access token. - Write to ROKI with your store's domain. ROKI registers you and sends back your two bridge addresses:
https://connect.roki.la/shopify/pedido/<your-store>for Shopify andhttps://connect.roki.la/shopify/roki/<your-store>for the ROKI portal. - Under Settings → Notifications → Webhooks create one for Order creation with your
pedidoaddress as the URL, and share with ROKI - over a secure channel - the signing secret shown on that screen along with the token from step 2. - In the ROKI portal, register your
rokiaddress as a webhook. That completes the setup and it runs itself: pending order → emailed link → paid.
What it does for you
| How it feels to the customer | They place the order, the link arrives by email, they pay on the ROKI checkout and return to their order status page on Shopify. |
| If a webhook goes missing | The bridge checks pending payments every five minutes and asks ROKI, just like the WooCommerce plugin. |
| Duplicate orders | The idempotency key is derived from the order content: a redelivered webhook returns the same payment instead of creating another. |
| What it does not do | It does not charge inside the Shopify checkout. That requires their payments program, which is closed and approval-gated; here payment is the step after the order. |
GiveWP
WordPress con GiveWP 3.0+
Accept card donations on your GiveWP forms. For churches, NGOs, fundraisers and schools asking for contributions - what today gets collected by bank transfer and a screenshot.
ROKI checkout (HPP). The donor goes out to the ROKI page, pays and comes back. Fields inside the form are planned.
Run against a real GiveWP 4: the gateway shows up in both the new and the legacy forms, the donation is created, the charge goes to the sandbox and the signed notification marks it complete. As with any payment method, install it on a copy of your site first and make a donation with an sk_test_ key before taking real money.
You need: WordPress 6.2 or later, GiveWP 3.0 or later, PHP 7.4 or later.
How to install it
- Download the ZIP and install it from Plugins → Add New → Upload Plugin.
- Go to Donations → Settings → Payment Gateways and open the ROKI Connect section.
- Paste your secret key into Llave secreta de sandbox to test, or the production one to charge for real. The plugin's own fields are in Spanish whatever language your admin is in.
- Copy the webhook URL shown on that screen, register it in the ROKI portal and paste the Secreto de firma del webhook here.
- Under Donations → Settings → General set the currency to Honduran Lempira. ROKI charges in lempiras: with another currency the plugin stops before charging instead of charging the wrong amount.
- Enable ROKI Connect on the form and make a test donation with a sandbox key.
What it does for you
| New and legacy forms | Works the same in the GiveWP visual form builder and in the previous generation of forms, which is what many organizations already have built. |
| Refunds from the admin | It voids first, which never shows on the donor's statement; if it already settled, it refunds. |
| Whose notification is whose | Each donation carries its own key. A payment made on another site under the same ROKI account cannot complete a donation on this one. |
| What it does not do | It does not mark a donation received because the donor came back from the checkout. Coming back means the browser came back, not that the money moved. |
PrestaShop
PrestaShop 8.0 or later
A payment module of the same kind as the WooCommerce one: the customer pays on the ROKI checkout and the order is confirmed once the payment is verified.
ROKI checkout (HPP). Fields inside the store are planned here too.
Installed and verified on a real PrestaShop 8 store: the module ends up active with its hooks, creates its own order state, and shows up as "Pagar con ROKI Connect" at the payment step of the checkout. As with any payment method, try it on a copy first and place an order with an sk_test_ key before going to production.
You need: PrestaShop 8.0 or later, PHP 8.1 or later, with cURL and OpenSSL.
How to install it
- Download the ZIP.
- In your PrestaShop, go to Modules → Module Manager → Upload a module and choose the file.
- Open the module configuration and paste your secret key:
sk_test_to test,sk_live_to charge. - Copy the webhook URL shown on that screen, register it in the ROKI portal and paste the signing secret.
- Enable ROKI Connect under Payment → Preferences for the right currencies and countries.
- Place a test order with a sandbox key before going to production.
What it does for you
| Its own order state | Creates "Pendiente de pago (ROKI Connect)" instead of using the native ones: marking an order paid without confirmation, or as an error while the customer is still paying, are the two classic mistakes. |
| Refunds and voids | From the order page in the back office. |
| If a webhook goes missing | A scheduled job checks pending orders and asks ROKI. |
A payment method for Magento 2, built on its gateway command architecture, the recommended one since 2.3.
ROKI checkout (HPP). Fields inside the store are planned for Magento.
Installed and verified inside a real Magento 2.4.7-p3: setup:di:compile resolves every dependency the module declares, Magento recognises the payment method among its own, and it builds all nine classes that move money. Still Beta because one thing is missing, and it is the one this catalogue calls tested: a complete charge through a store checkout. Install it on a copy first and place an order with an sk_test_ key before going to production.
You need: Magento 2.4 or later, PHP 8.1 or later, with command-line access to the server.
How to install it
- Download the ZIP and unzip it into
app/code/, so it ends up asapp/code/Roki/Connect. - From the command line:
bin/magento module:enable Roki_Connect - Then:
bin/magento setup:upgradeandbin/magento cache:flush - In the admin panel, go to Stores → Configuration → Sales → Payment Methods and open the ROKI Connect section. Magento translates those menus, but the module's own fields are in Spanish whatever language your admin is in.
- Paste your secret key into Llave secreta ("secret key"). The prefix decides the environment:
sk_test_tests andsk_live_charges for real. - Register the webhook URL in the ROKI portal. The screen shows it as
https://SU-DOMINIO/rokiconnect/webhook/index- replace SU-DOMINIO with your own domain. The signing secret the portal gives you goes into Secreto del webhook ("webhook secret"). - Set Habilitado ("enabled") to Yes and place a test order with a sandbox key.
What it does for you
| Architecture | Uses gateway commands and value handlers, not the deprecated AbstractMethod. |
| The invoice | Is generated when the payment is confirmed, not when the customer returns from checkout. |
| Webhook without CSRF | The controller implements the interface Magento requires to accept a server-to-server call. |
Code you paste into your Wix site to charge amounts that depend on what the visitor chooses. It is not a plugin: Wix does not let anyone publish a gateway without its approval.
ROKI checkout (HPP). Card fields inside a Wix page would need the merchant to run their own server, which is exactly what Wix does not give.
This is code you paste into your site by hand, not a plugin you install. Run the whole flow with an sk_test_ key and a small amount, and confirm the webhook reaches you, before charging anyone.
You need: A Wix site on a Premium plan, which is what enables Velo. A free site has no backend, and without a backend the amount would be calculated in the browser.
How to install it
- If what you sell has a fixed price, you do not need this: use the payment button and you are done.
- If the amount depends on what the visitor chooses, go to the Wix recipe: three blocks of code and seven steps.
What it does for you
| Why there is no ZIP | Publishing a gateway on Wix requires business approval from Wix and a permission they enable by hand. It is the same shut door as Shopify. |
| What you can do | Velo lets you put your own code in any Wix site on a Premium plan. With that you charge today, site by site. |
| The amount is calculated on the server | The Velo backend (<code>.jsw</code>) runs on the Wix side. The browser sends what the visitor picked, never what it costs. |
| If Wix opens its API | We will publish the real connector, one-click. The recipe will keep working the same. |
Any website
Pasteable payment button
A snippet you paste into your page - built with Wix, Squarespace, Webflow or by hand - and you are taking card payments. The shortest path when your site is not a store.
ROKI checkout (HPP). Fields in your own page need someone programming on the site side; the button exists precisely for the sites where that does not happen.
You need: A page where you can paste HTML. That is all: no server, no database, no particular platform.
How to install it
- In the ROKI portal, create a payment with the amount you want to charge, marked as a reusable link.
- Copy the link it gives you, the one starting with
https://aura.roki.systems/pay/. - Go to the button page, paste it and choose how it should look.
- Copy the snippet and paste it into your page, in an HTML or embed-code block.
What it does for you
| One button, one amount | The amount is fixed in the link. If you sell things at different prices, it is one link and one button for each. |
| No server | Your page can be completely static. The charge happens on ROKI's side. |
| How you know you got paid | It arrives in the portal like any other payment. If your site has a server, register a webhook and you find out automatically. |
| Where it works | Anywhere that lets you paste HTML: Wix, Squarespace, Webflow, Blogger, a hand-made landing page, or an email with the bare link. |
Business systems
The system you invoice, bill or run your business with: ERP, accounting, hosting, forms.
Odoo
Odoo 15, 16, 17, 18 and 19
Charge from the customer portal and the Odoo store, with the payment recorded against the invoice. One module per version.
ROKI checkout (HPP). Odoo would allow rendering the fields inside its own page, but these are four modules across two different payment frameworks, and on an invoice the customer has already decided to buy: the redirect does not cost the sale the way it does in a retail store.
All five modules were installed and verified on real Odoo instances: the module ends up installed, the payment provider created and its reconciliation job active. On Odoo 19 a real sandbox charge was also created from inside Odoo. As with any payment method, install it on a test database first and run a charge with an sk_test_ key before going to production.
You need: Odoo 15, 16, 17, 18 or 19, with access to the addons directory. Odoo Online does not allow installing custom modules.
How to install it
- Download the ZIP for your Odoo version. They are not interchangeable.
- Unzip it inside your addons directory, next to the other modules.
- Restart Odoo and refresh the app list: Apps → Update Apps List.
- Search for ROKI Connect and install it.
- Go to Accounting → Configuration → Payment Providers (in Odoo 15, Payment Acquirers), open ROKI Connect and paste your secret key.
- Copy the webhook URL shown on that screen, register it in the ROKI portal and paste back the signing secret.
- Set the provider to Enabled and make a test charge with an sk_test_ key.
What it does for you
| One module per version | Odoo changed the provider model between major versions. Installing another version's module does not fail on copy: it fails on install. |
| How the charge is recorded | The payment is posted against the customer's invoice, not as a loose entry. |
| If a webhook goes missing | A scheduled job checks pending transactions and asks ROKI. |
| Odoo Online | Does not allow manually installed modules. Those accounts need a listing in the Odoo app store, or an external integration through the Odoo API. |
Charge WHMCS invoices by card - the system hosting companies and ISPs bill with. It is two files copied over your installation.
ROKI checkout (HPP). The customer leaves to pay and comes back. Fields inside WHMCS would force the card number through your server, with everything that brings.
It does not charge renewals automatically: each invoice is paid through its link. Charging without the customer present requires storing their card, and that module is enabled per merchant on ROKI. If your account already has it, write to us - that version is a separate module.
You need: WHMCS 8.0 or later, self-hosted, PHP 7.4 or later with cURL, and FTP or SSH access. WHMCS Cloud does not allow custom modules.
How to install it
- Download the ZIP and unzip it.
- Copy the
modules/gateways/folders over your WHMCS installation, by FTP or SSH. They do not overwrite anything you already have. - In the admin, go to Configuration → System Settings → Payment Gateways, All Payment Gateways tab, and activate ROKI Connect.
- Paste your secret key:
sk_test_to test,sk_live_to charge. - Copy the webhook URL shown on that screen, register it in the ROKI portal and paste the signing secret here.
- Run a test invoice with a sandbox key before leaving it live for your customers.
What it does for you
| Who decides it was paid | The invoice is marked paid by the signed webhook, not when the browser comes back. Coming back means the browser came back, not that the money moved. |
| Refunds from the admin | It tries to void first, which never reaches the customer's statement; if that is no longer possible, it refunds. |
| The amount credited | Is the one on the WHMCS invoice, never the one in the webhook. A tampered body cannot credit more than the invoice says. |
| Fee pass-through | Optional. ROKI recalculates the total so you keep the invoice amount. |
Charge by card from the forms on your WordPress site: registrations, donations, tuition, bookings. For the site that is not a store but still needs to get paid.
ROKI checkout (HPP). Card fields inside the form would push the number through the site server, with the PCI obligations that brings. Gravity Forms allows it; this connector deliberately does not use it.
Beta release. Install it on a staging copy of your site first and run a full submission with an sk_test_ key and a small amount, before letting it charge for real.
You need: WordPress 6.2 or later, Gravity Forms 2.5 or later with an active license, PHP 8.0 or later, and HTTPS.
How to install it
- Download the ZIP and upload it from Plugins → Add New → Upload Plugin. Gravity Forms must be active.
- Go to Forms → Settings → ROKI Connect and paste your keys:
sk_test_to test,sk_live_to charge. - Copy the webhook URL shown on that screen, register it in the ROKI portal and paste the signing secret here.
- Make sure the form has at least one product field: that is where the amount comes from.
- On the form, go to Settings → ROKI Connect → Add New, choose where the amount comes from and save.
- Run a test submission with a sandbox key before publishing it.
What it does for you
| Where the amount comes from | Gravity Forms calculates it from the product fields on the form, server-side. It never travels through the browser, so there is nothing to change from the console to pay less. |
| Who decides it was paid | The entry is marked paid by the signed webhook, not when the browser comes back. Coming back means the browser came back, not that the money moved. |
| Resubmitting the form | Does not create a second charge: an idempotency key derived from the content is sent and ROKI returns the payment that already existed. |
| Repeated deliveries | ROKI retries until it gets an answer. They are discarded by event id, using the deduplication Gravity Forms already ships. |
| Subscriptions | It does not do them, on purpose. Charging without the customer present requires storing their card, and that module is enabled per merchant on ROKI. Promising them without it means failing at the first renewal. |
Google Sheets
Google Sheets spreadsheet
Charge the same list every month without creating the links one by one. You fill in the sheet, press a button, and every row gets its payment link and its WhatsApp message ready to send.
ROKI checkout (HPP). Each person on the list gets their own link and pays on the ROKI page. It is the only thing that makes sense when the charge goes out over WhatsApp.
Beta release. Test it with an sk_test_ key and a three-row list before sending links to a hundred and twenty people.
You need: A Google account; the free one is enough. Nothing else: no server, no website, no programmer.
How to install it
- Download the ZIP and open a new Google Sheets spreadsheet.
- Go to Extensions → Apps Script, delete whatever is there and paste the contents of
Codigo.gs. - Save, go back to the sheet and reload it. A new menu appears: ROKI.
- Menu ROKI → 1. Configurar mi llave. Paste your secret key:
sk_test_to test,sk_live_to charge. - Menu ROKI → 2. Preparar esta hoja. It builds the columns for you.
- Fill in name, phone, description and amount, and press Crear los enlaces.
What it does for you
| The key does not live in a cell | It lives in the script properties, inside your Google account. That is why you can share the sheet with your assistant without sharing the key. |
| Pressing twice does not duplicate | Rows that already have a link are skipped, and an idempotency key built from the month is sent: within the same month, the same row returns the same payment. |
| It does not depend on your connection | The calls go out from Google servers. If the school loses its internet while it runs, it still finishes. |
| Who paid and who did not | The status button reads the full listing and paints paid rows green. One query for the whole list, not one per row. |
| It does not charge by itself | This is not recurring billing: the customer still opens their link and pays. Charging without the customer present requires storing their card, and that module is enabled per merchant on ROKI. |
Charge enrolments, courses and certificates by card inside Moodle. For schools and universities that today receive the bank transfer receipt by email.
ROKI checkout (HPP). The student goes out to the ROKI page, pays and comes back; access is granted once the payment is confirmed.
Tested end to end on a real Moodle 4.5: a course with a cost was created, Pay was pressed, the charge was created at ROKI, the signed notification came in over HTTP to the webhook and the student ended up enrolled. The opposite was checked too: a notification saying 'paid' does not hand over the course if ROKI says that charge is still pending. As with any payment method, install it on a copy first and run an enrolment with an sk_test_ key before charging a student.
You need: Moodle 4.5 or later, with access to the site directory. On third-party hosted Moodle you need to ask them to install it.
How to install it
- Download the ZIP and unzip it into your Moodle's
payment/gateway/, so it ends up aspayment/gateway/rokiconnect. - Log in as an administrator: Moodle picks up the plugin and asks you to confirm the install. You can also do it with
php admin/cli/upgrade.php. - Go to Site administration → Payments → Payment accounts and create an account, or open the one you already have.
- On that account, enable ROKI Connect and paste your Llave secreta ("secret key"):
sk_test_to test,sk_live_to charge for real. The prefix decides the environment. - Copy the webhook URL shown on the plugin settings screen, register it in the ROKI portal and paste the Secreto de firma del webhook ("webhook signing secret") on the same account.
- Put a cost on a course and run a test enrolment with a sandbox key.
What it does for you
| The amount includes the surcharge | Moodle allows a per-gateway surcharge. What the student is charged is the cost with that surcharge applied, not the bare course price. |
| If a notification is lost | A task checks pending charges from the last 24 hours every fifteen minutes and asks ROKI. The student who paid gets in anyway. |
| Whose notification is whose | The reference carries the site prefix and the webhook checks it. A production Moodle and its staging copy on the same ROKI account do not hand each other courses. |
| What it does not do | It does not grant access because the student came back from the checkout. Coming back means the browser came back; access is granted when ROKI confirms the charge. |
Two nodes that connect ROKI to everything else you already use. Instead of one connector per platform, one that talks to all of them: a spreadsheet, an email, WhatsApp, your own system.
Payment link (HPP). The node creates the charge and returns the link; where you send it from there is your workflow's call.
Installed on a real n8n 2.35: n8n loads both nodes and their credentials, the key test button works, and a workflow using the node was saved, executed and left the charge created at ROKI. As with any payment method, build it first with an sk_test_ key and run a test charge before letting it work with real money.
You need: A self-hosted or cloud n8n with permission to install community nodes. For the trigger, your n8n must be reachable from the internet.
How to install it
- In your n8n, go to Settings → Community nodes → Install and enter
n8n-nodes-roki-connect. If your n8n does not allow community nodes, download the ZIP and copy it into~/.n8n/custom/. - Create a ROKI Connect API credential and paste your secret key. The prefix decides the environment:
sk_test_tests andsk_live_charges. Hit Test before saving. - Add the ROKI Connect node to your workflow and pick Crear Enlace De Pago. The amount goes in lempiras with decimals, never in cents.
- To listen for payments, add the ROKI Connect Trigger node. Copy its test URL and register it in the ROKI portal as the sandbox webhook; when you activate the workflow, copy the production one and register it as the production webhook.
- Create a ROKI Connect Webhook credential with the signing secret the portal gives you. It is deliberately separate from the key: a workflow that only listens has no business seeing the key that charges.
- Run a test charge with a sandbox key and watch the workflow start on its own.
What it does for you
| What the action node does | Create the payment link, get, list with filters, void and refund. |
| Retrying does not charge twice | The idempotency key is derived from the charge content. If n8n retries the node, ROKI returns the same payment; if the amount changes, it creates a new one. |
| The trigger drops redeliveries | ROKI retries when it is unsure you received the notification. Without dropping them, the same payment starts your workflow twice: two emails, two invoices, two shipments. |
| What it does not do | It does not register the webhook for you: ROKI has no route for that. It is the only manual step, and it is once per environment. |
SAP Business One
SAP B1
Every B1 installation is customized and integrates through the Service Layer. It is built against a specific client, together with their implementation partner.
What you need to enable on your side →QuickBooks
QuickBooks Online
A payment link on the invoice, and reconciliation of the charge against it.
What you need to enable on your side →Zoho
Zoho Books and Invoice
A payment link from the invoice, with the charge recorded back when the webhook arrives.
What you need to enable on your side →Salesforce
Sales Cloud
Publishing on AppExchange requires a partner agreement and a long security review. It will be evaluated when a client asks for it by name.
What you need to enable on your side →Your platform is not here
Any system that can make an HTTP request can charge with ROKI. Start with the quickstart, or hand the MCP server to whoever writes the code: it integrates itself.









