takemypay

Checkout page

We host the checkout page. Creating a payment gives you a checkout_url shaped like https://takemypay.net/c/<token>; send the customer there by redirect or by link, whichever suits you.

What the customer sees

The available payment methods, the amount and your order description. The customer picks the method, not you: which methods are offered is configured gateway-side and can change without touching your integration.

  • SBP — an NSPK QR code scanned in a banking app.
  • Mir and international Visa/Mastercard — a card form, with 3-D Secure where the bank asks for it.
  • Crypto — an address for a USDT transfer on TRC20.

When it is over the customer lands on return_url or fail_url if you supplied them. That redirect is not proof of payment. Proof is the webhook: a customer can close the tab before the redirect and the payment will still go through.

How long a payment lives

30 minutes from creation, or 60 minutes for crypto counted from the moment that method is picked. The current value always sits in expires_at. After it passes the payment becomes expired and cannot be paid — create a new one.

The test-mode simulator

While the account is not activated, the checkout page shows a simulator with "succeed" and "decline" buttons instead of real methods. The same outcome can be driven by a request, which is how you exercise the integration in automated tests with nobody at a browser:

curl
curl -X POST https://takemypay.net/api/v1/checkout/PUBLIC_TOKEN/test/complete \
  -H "Content-Type: application/json" \
  -d '{"outcome": "succeeded"}'

outcome accepts succeeded or declined. Both fire a real webhook, so the whole chain can be verified end to end — including signature checking on your side.

The request errors if the payment is not a test one, is no longer pending, or has expired.

Polling state

The checkout page polls the payment while the customer is on it:

curl
curl https://takemypay.net/api/v1/checkout/PUBLIC_TOKEN/status

This address needs no authentication and works off the public token from checkout_url. It is not meant for server-side reconciliation — use GET /api/v1/payments/{id} with your key for that.

The rest of the checkout addresses

A few more addresses live under /api/v1/checkout/{token} — fetching payment info, starting payment with the chosen method (/initiate), refreshing (/refresh), submitting card data (/card/submit) and the 3-D Secure form (/card/3ds-form). Our checkout page calls them; your integration does not need them, and we do not guarantee their shape between releases.

Of the whole checkout, the stable contract for you is checkout_url and /test/complete. The rest serves the page.