Add the MCP server
claude mcp add --transport http veracity-pay https://pay.veracity.se/mcp
Build checkout, subscriptions and webhooks before you choose a payment partner or sign a contract. Your coding agent connects it through MCP.
11 payment partners, from card and Swish to invoice and company purchases. Free for now.
Name, e-mail and a code – as a private person too. No review of company and owners (KYC) as at a real provider.
2 stepsNo transaction moves real money, and there are no transaction or chargeback fees.
SEK 0One account runs all eleven. Try several side by side before you choose.
11 partnersEach flavour follows the original’s paths, fields and callbacks. You change host and keys, not code.
3 linesclaude mcp add --transport http veracity-pay https://pay.veracity.se/mcp
“I want us to use Veracity Pay to emulate payments in this project.”
Merchant ID, keys and ready commands arrive in your inbox. The agent sees no secrets.
Card, Swish, invoice, instalments and bank transfer, for consumers and companies, in Swedish and English. The customer approves with a code by e-mail, and in the test panel you pick the outcome.
Checkout API v68–v72: sessions with Hosted Checkout, /payments with test cards, stored payment methods and HMAC-signed notifications such as AUTHORISATION, CAPTURE and REFUND.
Read about the Adyen flavourCheckout v3 (formerly Klarna Checkout): the order returns an html_snippet with the checkout, your shop validates the purchase and sets shipping, and order management handles capture and refunds.
Read about the Kustom flavourA B2B checkout for companies: OAuth2, an order session and the checkout embedded with bootstrap.js, a credit check, company search and Order Management with partial capture and refunds.
Read about the Ledyer flavourPayment API v1 with a hosted or embedded payment page, partial charges, subscriptions and saved cards for later charges (uCoF). Webhooks go to your URLs with your Authorization.
Read about the Nets Easy flavourMerchant API with Qliro-signed calls: the checkout as an html snippet, status pushes, company purchases, saved cards and order management with delivery, refunds and cancellation.
Read about the Qliro One flavourCheckout Sessions, PaymentIntents, subscriptions, coupons, Payment Links and webhooks with Stripe’s objects and ids. Stripe’s SDK and an emulated Stripe.js work against the base URL.
Read about the Stripe flavourCheckout API and Payment Admin with Svea-signed calls: invoice, instalments with campaigns, company purchases, saved cards and delivery or credit afterwards.
Read about the Svea Checkout flavourCheckout v3 with the Payment Menu: redirect or Seamless View, callbacks, capture, cancel and reversal, Verify, saved cards for one-click and token-based recurring payments.
Read about the Swedbank Pay flavourSwish Commerce API: payment requests for e-commerce and m-commerce, QR codes, refunds, payouts and recurring payments. A key in the base URL stands in for the certificate.
Read about the Swish Commerce flavourInvoices for companies: company search, an up-front credit decision, an order the buyer verifies on Two's page, partial fulfilment and refunds, with webhooks signed as at Svix.
Read about the Two flavourCheckout with OAuth2: invoice, card and Swish, company purchases, customer tokens for subscriptions, signed webhooks and order management with activation, refunds and cancellation.
Read about the Walley flavour// X-API-Key: vp_sk_test_…
{ "merchantAccount": "acct_…",
"amount": { "value": 12500,
"currency": "SEK" },
"reference": "order-1042",
"mode": "hosted",
"countryCode": "SE",
"returnUrl": "…/retur" }
{ "purchase_country": "SE",
"purchase_currency": "SEK",
"order_amount": 50000,
"order_tax_amount": 10000,
"order_lines": [{ … }],
"merchant_urls": {
"confirmation": "…/tack",
"push": "…/push" } }
// Authorization: Bearer …
{ "country": "SE", "currency": "SEK",
"orderLines": [{ … }],
"totalOrderAmount": 125000,
"totalOrderVatAmount": 25000,
"reference": "order-1042",
"settings": { "urls": {
"terms": "…/villkor" } } }
{ "order": {
"items": [{ … }],
"amount": 50000,
"currency": "SEK" },
"checkout": {
"integrationType":
"HostedPaymentPage",
"returnUrl": "…/klar",
"termsUrl": "…/villkor" } }
{ "MerchantReference": "order-1042",
"Currency": "SEK",
"Country": "SE",
"OrderItems": [{ … }],
"MerchantConfirmationUrl":
"…/klar",
"MerchantCheckoutStatusPushUrl":
"…/push" }
const session = await vp.checkout
.sessions.create({
mode: "subscription",
line_items: [{ price: plan }],
customer_email: user.email,
client_reference_id: org.id,
success_url: `${APP}/klar`,
cancel_url: `${APP}/planer`,
});
{ "CountryCode": "SE",
"Currency": "SEK",
"ClientOrderNumber": "order-1042",
"Cart": { "Items": [{ … }] },
"MerchantSettings": {
"PushUri": "…/push",
"CheckoutValidationCallBackUri":
"…/validera" } }
{ "paymentOrder": {
"operation": "Purchase",
"currency": "SEK",
"amount": 12500,
"vatAmount": 2500,
"urls": { "completeUrl": "…/klar",
"callbackUrl": "…/cb" },
"payeeInfo": { … } } }
{ "payeePaymentReference": "1042",
"callbackUrl": "…/swish/callback",
"payerAlias": "46712345678",
"payeeAlias": "1231181189",
"currency": "SEK",
"message": "Order 1042",
"amount": "125.00" }
// X-Api-Key: secret_test_…
{ "gross_amount": "1250.00",
"net_amount": "1000.00",
"tax_amount": "250.00",
"currency": "SEK",
"line_items": [{ … }],
"buyer": { "company": { … } },
"merchant_urls": { … } }
// Authorization: Bearer …
{ "storeId": 1201,
"countryCode": "SE",
"reference": "order-1042",
"notificationUri": "…/walley",
"redirectPageUri": "…/klar",
"cart": { "items": [{ … }] } }
Every payment from every partner in one list, filtered by status, method and payment solution. Open one for its timeline, customer and refunds.
Ask the agent“Show my latest purchases and which were declined.”
Read about the dashboardEvery webhook and callback with its status code, your app's answer and retries for a day. Resend with one button.
Ask the agent“Why did the app not react to the latest purchase?”
Read about webhooksMake a payment partner slow, down, rate-limited or flaky, or hold webhooks back, and see how your app copes.
Ask the agent“Simulate Nets Easy being down for ten minutes.”
Read about outagesMove the account's test clock forward, and renewals, failed charges and cancellations run at once.
Ask the agent“Move the clock a month and let the next renewal decline.”
Read about subscriptionsWhat we see of your app: failing calls, duplicate calls without an Idempotency-Key and webhooks that do not arrive.
Ask the agent“Check the integration's health and fix what it warns about.”
Read about the dashboard




Insufficient funds, a blocked card, 3-D Secure or a timeout – per payment or for the next renewal.
Move the clock a month: the invoice is created, charged without a code and invoice.paid is sent.
Complete a checkout through the API with the outcome you pick, without a browser, and check webhooks in CI.
Codes, receipts and invoices land in a searchable inbox. With a Resend key they are also sent for real.
Everything else is in the docs.
Read the docsNo. No real money moves, and there are no transaction, chargeback or monthly fees.
No. Sign up as a private person and try your idea.
Change the host and keys; the docs list each deviation.
As close as the public docs allow; the differences are listed.
They last one month at a time. Extend with one click in the dashboard or with extend_key.