Migrating from v1

Beta, in development. The v2 endpoints are not callable yet. This page is for planning.

What changes

v1 v2
Contracts Four: BLIK, Apple Pay and Google Pay, card payments, payouts One
Method pay_system field (Apple Pay, Google Pay); a separate contract (card) The create endpoint
Auth A different scheme per contract Authorization: Bearer <shop_key>, no request signature
Response JSON; XML for payouts JSON
Errors Different per contract; payouts return HTTP 200 on a validation failure HTTP error status, error.code
Repeating a request A repeated reference returns the earlier transaction, even with a changed body The same merchant_reference and body return the earlier transaction; a changed body returns 409 merchant_reference_conflict
Statuses A set per contract: strings, integers, XML codes One set per object: payin, refund, payout
Webhooks Different format and signature per contract One JSON format; one header Webhook-Signature over the time of delivery and the body

Identifiers

v1 v2
internal_transaction_id (BLIK), id (Apple Pay, Google Pay), external_reference (card) id — the same UUID
merchant_transaction_id, reference, id of the payout request merchant_reference

Endpoints

v1 v2
BLIK · POST /sdk-partner/quick-payin/blik POST /v2/payins/blik
BLIK · GET /sdk-partner/quick-payin/transactions/{id}/status GET /v2/transactions/{transaction_id}
BLIK · GET /sdk-partner/quick-payin/transactions GET /v2/transactions
Apple Pay, Google Pay · POST /sdk-partner/alternative-mobile-pay/validate-merchant POST /v2/payins/apple-pay/sessions
Apple Pay, Google Pay · POST /sdk-partner/alternative-mobile-pay/mobile-pay POST /v2/payins/apple-pay or POST /v2/payins/google-pay
Apple Pay, Google Pay · GET /sdk-partner/alternative-mobile-pay/mobile-pay/{id}/status GET /v2/transactions/{transaction_id}
Apple Pay, Google Pay · POST /sdk-partner/alternative-mobile-pay/refund POST /v2/payins/{payin_id}/refunds
Card payments · POST /pay/direct POST /v2/payins/card
Card payments · POST /pay POST /v2/pay-sessions
Card payments · POST /pay/complete POST /v2/payins/{payin_id}/capture
Card payments · POST /pay/void POST /v2/payins/{payin_id}/void
Card payments · POST /pay/refund POST /v2/payins/{payin_id}/refunds
Card payments · POST /pay/order_status GET /v2/transactions/{transaction_id}
Card payments · POST /pay/get_orders_data GET /v2/transactions
Card payments · POST /pay/get_report No equivalent
Payouts · POST /partner/{service_id}/payout POST /v2/payouts/card
Payouts · POST /partner/{service_id}/check GET /v2/transactions/{transaction_id}
Payouts · POST /partner/{service_id}/notify No equivalent
Payouts · POST /partner/{service_id}/balance GET /v2/balances
Payouts · GET /payout_reestr/{content_type} GET /v2/transactions

Statuses

v2 v1 BLIK v1 Apple Pay, Google Pay v1 card payments v1 payouts
created new pending 0 OK
processing new pending, order_scheduled 0 PROCESSING
requires_action new with redirect redirect_pending (Google Pay) 0 with a payment page URL, 8 —
authorized — — 1 —
completed completed paid 3 PAID
failed failed order_failed 99 ERROR, NOT_PAID
failed with canceled_by_merchant or canceled_by_payer failed (payer canceled) — 2 —
refunded — refunded 4 —

Refunds, v1 Apple Pay and Google Pay → v2: pending → created or processing, succeeded → completed, failed → failed.

The work on your side

  1. Replace the v1 signatures with the bearer key. Payin and payout are two shops, two keys; sandbox keys for the sandbox, production keys for production.
  2. Call one create endpoint per method.
  3. Save merchant_reference before every create and resend the same body on a retry.
  4. Parse JSON everywhere, including payouts.
  5. Rewrite status handling against the v2 sets — see Statuses.
  6. Branch on error.code — see Errors.
  7. Verify webhook Webhook-Signature — see Webhooks.
  8. Run the integration checklist in the sandbox.

Next: API Reference