Portmone Ukraine
Cards, Apple/Google Pay, Privat24, hold (pre-authorisation). Official documentation: https://docs.portmone.com.ua/docs/en/PaymentGatewayEng/. Gateway fee: per contract with Portmone.
Credentials
payee_id, login, password and the signature key are issued by your Portmone manager. Test mode is switched on per payee_id; test cards 4444 3333 2222 1111 (success) and 4111 1111 1111 1111 (decline).
- Environment variables
PORTMONE_PAYEE_IDPORTMONE_LOGINPORTMONE_PASSWORDPORTMONE_KEYPORTMONE_API_BASE (opt.)- Webhook
POST /webhooks/portmone. Portmone callbacks are not signed (form-POST to success_url or a JSON notification) — Mistok authenticates every callback by re-reading the bill viaresultwith login/password and checking payee_id and shopOrderNumber.
What Mistok calls
| Request | Fields / meaning |
|---|---|
POST https://www.portmone.com.ua/gateway/ (createLinkPayment) | payee{payeeId, login, dt, signature}, order{shopOrderNumber, billAmount, billCurrency, description, successUrl, failureUrl, preauthFlag, expTime} → {linkPayment} |
POST /gateway/ (result) | array of bills (shopBillId, status, billAmount, cardMask); re-read after every callback |
POST /gateway/ (return) | refund (full/partial) |
POST /gateway/ (confirmPreauth) | capture of a hold |
POST /gateway/ (rejectPreauth) | release of a hold (full amount) |
Statuses
CREATED → created · PREAUTH → hold · PAYED → success · REJECTED → failure (also expired) · RETURN → reversed once refunds cover the paid amount.
Mistok’s model: created → processing → (hold →) success | failure | expired | reversed. The Shopify order receives a payment only on success and only after the amount and currency are checked against our record.
Sandbox
No separate test host. Signature: UPPER(HMAC-SHA256(key, UPPER(payeeId+dt+hex(shopOrderNumber)+billAmount)+UPPER(hex(login)))), dt = YYYYMMDDHHmmss.
Limitations
- UAH only
- shopOrderNumber ≤ 120 chars
- no partial release of a hold
- success_url receives a POST — Mistok accepts it on /return
Not confirmed by a live run
Implemented from the official docs and SDKs; a first run on test keys is mandatory.
- time zone of dt (Europe/Kyiv)
- commission field as the fee
- closeInvoice shape
- docs truncate after section 3 — shapes taken from the official WooCommerce/PrestaShop modules