Test payments for apps in development

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.

Payments from the first sprint. The contract can wait.

  • An account without a company or contract

    Name, e-mail and a code – as a private person too. No review of company and owners (KYC) as at a real provider.

    2 steps
  • No money, no fees

    No transaction moves real money, and there are no transaction or chargeback fees.

    SEK 0
  • Choosing a partner

    One account runs all eleven. Try several side by side before you choose.

    11 partners
  • Going live

    Each flavour follows the original’s paths, fields and callbacks. You change host and keys, not code.

    3 lines
granbacken-app .env.production +3−3
1PAYMENT_API_URL=https://…pay.veracity.se
1PAYMENT_API_URL=https://api.…
2PAYMENT_SECRET_KEY=vp_sk_test_…
2PAYMENT_SECRET_KEY=live_…
3PAYMENT_WEBHOOK_SECRET=3fQ…
3PAYMENT_WEBHOOK_SECRET=Lk9…
44NODE_ENV=production
Payment partners
3 of 11 on
  • LedyerInvoices to companies
  • Nets EasyHosted payment page
  • Swish HandelE- and m-commerce
  • Svea CheckoutInvoice and instalments

The MCP server in three steps. The agent does the rest.

1

Add the MCP server

claude mcp add --transport http veracity-pay https://pay.veracity.se/mcp
granbacken-app
~/app$claude mcp list
veracity-payHTTPok
register_merchanttool1/14
integration_guidetool2/14
complete_checkouttool3/14
2

Ask the coding agent

“I want us to use Veracity Pay to emulate payments in this project.”

Coding agent
Which payment providers do you want to emulate?
Swish and Svea
And which e-mail should own the account?
3

Get the API keys by e-mail

Merchant ID, keys and ready commands arrive in your inbox. The agent sees no secrets.

Your Veracity Pay keys
3 of 4
  • .env.local, 7 lines
  • vercel env add, 7 commands
  • Webhook URL connected
  • First test payment

Hosted and embedded checkout with a test mode

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.

Eleven payment partners with their own APIs. Each with its own checkout.

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 flavour
JSONPOST /v72/sessions200 OK
// X-API-Key: vp_sk_test_…
{ "merchantAccount": "acct_…",
  "amount": { "value": 12500,
    "currency": "SEK" },
  "reference": "order-1042",
  "mode": "hosted",
  "countryCode": "SE",
  "returnUrl": "…/retur" }
mode hosted returns a checkout url.

A dashboard for the whole test. Your agent can do the same.

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 dashboard
Dashboard: payments from Kustom, Nets Easy, Stripe and Swish with filters

Test every outcome before your customers do. Without a single real krona.

Declines payments with a chosen reason

Insufficient funds, a blocked card, 3-D Secure or a timeout – per payment or for the next renewal.

Next charge
1 of 4 on
  • Decline: insufficient fundsinvoice.payment_failed
  • Decline: card blockedrestricted_card
  • Timeout after 30 sNobody confirms the charge
  • Always appliesOtherwise only next time

Renews subscriptions with a test clock

Move the clock a month: the invoice is created, charged without a code and invoice.paid is sent.

Test clock: +1 month
4 of 5
  • Invoice GRANB-0002 created
  • SEK 99.00 charged, Visa •••• 4242
  • invoice.paid delivered
  • Receipt in the test inbox
  • Next charge 7 January

Runs the payment flow in your tests

Complete a checkout through the API with the outcome you pick, without a browser, and check webhooks in CI.

granbacken/appzsh
~/app$pnpm test:payments
checkout.test.ts12 tests1.4s
renewals.test.ts9 tests2.1s
webhooks.test.ts7 tests0.9s
Tests28 passed(28)

Collects e-mail in the test inbox

Codes, receipts and invoices land in a searchable inbox. With a Resend key they are also sent for real.

  • Code 482 913Approve SEK 99.00 to Granbacken
  • Receipt for invoice GRANB-0001Anna Lind
  • Refund SEK 250.00Road fee 2027

Common questions

Everything else is in the docs.

Read the docs

Does it cost anything?

No. No real money moves, and there are no transaction, chargeback or monthly fees.

Do I need a company?

No. Sign up as a private person and try your idea.

What happens when we sign a contract?

Change the host and keys; the docs list each deviation.

How close are the emulations to the originals?

As close as the public docs allow; the differences are listed.

Why do the keys expire?

They last one month at a time. Extend with one click in the dashboard or with extend_key.

Missing a payment method or partner?

Request a payment method or suggest a partner.