Connect any app

One connection to PAYWAYS → charge through any provider, in Israel and worldwide. SDK · REST · MCP.

🛡️
PCI-DSS · SAQ-A

Card data never touches your server or the PAYWAYS server. The shopper enters their card only on the gateway-hosted page; we store tokens only, never card numbers. That keeps you in the lowest PCI scope (SAQ-A) — no heavy compliance.

268
payment providers
🇮🇱 + 🌍
Israel + 17 regions
hosted
hosted payment pages
tokens
token-based recurring

Get a key and connect

Create an organization and get an x-pay-key (shown once). Your server uses it — never the browser.

SDK · @payways/sdkFor Node/Next apps
import { PayWays } from '@payways/sdk';

const pw = new PayWays({ apiBase: process.env.PAYWAYS_API, payKey: process.env.PAYWAYS_KEY });

// create a charge → redirect the shopper to the gateway-hosted page
const charge = await pw.charges.create({
  amount: 295.0, description: 'Order #1042',
  customer: { fullName: 'ישראל ישראלי', email },
  successUrl: 'https://store.com/thanks',
});
res.redirect(charge.checkoutUrl);

// confirm (never trust the redirect alone)
const status = await pw.charges.waitForPayment(charge.id); // PAID | FAILED
REST · pay-api/v1Any language
curl -X POST $PAYWAYS_API/pay-api/v1/charges \
  -H "x-pay-key: ddcpay_..." -H "Content-Type: application/json" \
  -d '{"amount":295,"description":"Order #1042",
       "customer":{"fullName":"ישראל ישראלי"},
       "successUrl":"https://store.com/thanks"}'
# → { checkoutUrl, statusUrl, id }
MCPFor AI agents
{
  "mcpServers": {
    "payways": {
      "command": "node",
      "args": ["packages/mcp/dist/index.js"],
      "env": { "PAYWAYS_API_URL": "https://api.payways..." }
    }
  }
}

The money flows through the business's own gateway — PAYWAYS only orchestrates. Never trust the redirect alone; verify with charges.get / waitForPayment. Or run the PAYWAYS_CONNECT_IDAN skill in any project and it connects automatically.