1.5. Payout with bank confirmation

Introduction

Payout is a type of transaction which results in funds transfer from Connecting Party banking account to customer (receiver) banking account or digital wallet. This Use-Case describes the integration of payouts which require additional confirmation from the bank.
See terms definitions in Glossary.

Payout Flow

participant Receiver as R
participant "Connecting Party" as cp
autonumber
group Optional
R -> cp : Checkout
activate cp
end
== Payout request ==
cp -> "Solid Payments": /api/v4/payout-check/
activate "Solid Payments"
"Solid Payments" --> cp: Order ID
cp -> "Solid Payments": Get status by Order ID\napi/v2/status
"Solid Payments" --> cp : Response\nstatus,order-stage
cp -> "Solid Payments": /api/v4/payout-pay/
"Solid Payments" --> cp : Response payout-pay
group Conditional
cp -> "Solid Payments": Get status by Order ID\napi/v2/status
"Solid Payments" --> cp : Response\nstatus,redirect-to
cp -> R: Provide redirect URL
deactivate "Solid Payments"
deactivate cp
activate R
R -> "Solid Payments": Redirect by redirect-to
deactivate R
activate "Solid Payments"
"Solid Payments" -> R: Additional Submit Form
deactivate "Solid Payments"
activate R
R -> "Solid Payments": Submit Form
deactivate R
activate "Solid Payments"
end
"Solid Payments" --> "Solid Payments": Processing\nPayout
group Get Final Status
== Receive Connecting Party Callback ==
cp <- "Solid Payments" : Callback with Final Status
"Solid Payments" <-- cp: HTTP 200
deactivate "Solid Payments"
== Order Status request ==
cp -> "Solid Payments": Get status by Order ID\napi/v2/status
activate "Solid Payments"
"Solid Payments" --> cp : Response\nstatus,order-stage
deactivate "Solid Payments"
end
group Optional
cp --> R: Show result
deactivate cp
end

(1) Payout can be initiated by Connecting Party based on internal business model or Receiver’s request.
(2) To initiate payout, implement payout-check request, see /api/v4/payout-check.
(4) To implement order status request see /api/v2/status/.
(5) The order-stage parameter should be payout_check_validated. If payout_check_validating is received, the payout request is not confirmed by the bank yet. In this case the Connecting party should continue to request transaction status.
(6) To continue payout processing, implement payout-pay request, see /api/v4/payout-pay.
(9) Some payout methods require the Receiver to fill the additional data on the form. The form to redirect the customer will return in status response in redirect-to parameter.
(12) The Receiver submits the payout form.
(13) The Receiver gets redirected back to Connecting Party. See Final redirect.
(15) To implement callback with final status handling see Connecting Party Callback.
(17) Status should be requested multiple times with 3-5 seconds interval until final status will be received in response.
(19) Final Status can be sent by Connecting Party based on internal business model or by Receiver’s request.