Payer actions
Some payins need the payer to do something: finish the payment on the payment page, pass 3DS,
confirm in the banking app. Such a payin is in status requires_action, and next_action says what to do.
"status": "requires_action",
"next_action": {
"type": "redirect",
"redirect": { "url": "https://pay-in.mrcr.io/order/0b6f4e2a-7c1d-4e8b-9a3f-5d2c8e1b4a70" },
"expires_at": "2026-09-29T09:30:00Z"
}
The object
| Field | Set | Meaning |
|---|---|---|
type |
always | What the payer has to do — see Types |
redirect.url |
when type is redirect |
The payment page |
expires_at |
when the provider gives a deadline | When the provider stops waiting for the payer; after it the payin ends failed |
next_action is null in every other status.
Types
type |
What you do | The step ends when |
|---|---|---|
redirect |
Send the payer to redirect.url — see Redirect |
The payer finishes on the page |
await_confirmation |
Tell the payer to confirm the payment where their bank asks — in the banking app or another channel. There is nothing to open — see Await confirmation | The payer confirms or rejects with the bank |
New types can be added without a new version. An unknown type — stop and ask the person you work
for; do not guess (R13).
By method
| Method | Types | When |
|---|---|---|
| Card | redirect |
Always. In the create response |
| Google Pay | redirect |
The card asks for 3DS. By the payin.requires_action webhook |
| BLIK | await_confirmation or redirect, set for the shop |
Always: the payer confirms every BLIK payment. In the create response or by the payin.requires_action webhook |
The payment page
redirect.url is the Mercuryo payment page of the payin. The payer finishes the step there. When
return_urls are set, the page then sends the payer to them — see the method page for when.
Where it comes from
next_action is in the create response (card, BLIK), in the payin.requires_action webhook
(Google Pay, BLIK) and in GET /v2/transactions/{transaction_id}. Keep the latest you received with the
order; your frontend reads it from your server.
Redirect
- Open
redirect.urlas a full page or in a new browser window. -
Coming back is not a result. Even on
return_urls.success, show "processing" and wait for the final status from the webhook orGET /v2/transactions/{transaction_id}(R8).
Await confirmation
The payer confirms the payment outside your page and outside Mercuryo: in the banking app or another channel of their bank, like a second factor.
- Show the payer a message: confirm the payment where your bank asks, for example in the banking app.
- Keep your page open until the webhook with the final status comes.
- A rejection ends the payin
failedwithcanceled_by_payer.
After the step
The payin goes to a final status — completed, or failed with provider_declined or
canceled_by_payer. The webhook comes for the final status.
In the sandbox
How to force each payer step outcome — Sandbox.
Next: Idempotency