Skip to main content

Payout to a bank card via widget

This scenario describes how to perform a payout to a bank card if you cannot obtain and store the bank card details on your side.

You can obtain tokenized card details using the tokenization widget, and then perform the payout securely.

Step 1. Generate a public token

The token is needed to work with the widget. Send a request to create a token, and use it to pass the type of widget you want to work with. You will receive the token in response.

Example
curl -X POST \
https://proxy-demo.pikepayments.com/api/v1/token \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"tokenize_widget": {
"access": true
}
}'

Step 2. Show the details collection form to the recipient

To do this, you'll need to access our JavaScript library and add the tokenization widget to the page, where the recipient will then be able to fill in the form with their card details.

The recipient then enters their card details, and you'll receive tokenized details that you can use to perform the payout.

You can initialize the widget using the token you have obtained at the previous step.

How to add the tokenization widget

Step 3. Begin the payout

  1. Send a request for payment session creation session/create.

    Example
     curl -X POST \
    https://proxy-demo.pikepayments.com/api/v1/session/create \
    -H 'Content-Type: application/json' \
    -H 'X-PARTNER-PROJECT: your_project_name' \
    -H 'X-PARTNER-SIGN: signature' \
    -d '{
    "amount_details": {
    "amount": 10000,
    "currency": "rub"
    },
    "metadata": "order123"
    }'
  2. Send a request for payout creation session/start/payout. In the encrypted_card object, pass the tokenized bank card details obtained from the widget.

    You can find information about the token or card through the token/info method. This includes receiving the last 4 numbers of the card, in order to show the user the payment destination.

    The exact set of mandatory parameters depends on the recipient's card type.

    Example
     curl -X POST \
    https://proxy-demo.pikepayments.com/api/v1/session/start/payout \
    -H 'Content-Type: application/json' \
    -H 'X-PARTNER-PROJECT: your_project_name' \
    -H 'X-PARTNER-SIGN: signature' \
    -d '{
    "session_id": "3230",
    "payment_method": {
    "type": "card",
    "card": {
    "type": "encrypted_card",
    "encrypted_card": {
    "number_hash": "63191fa17cc7edf818ee5d6611a2c2169ab30b705111cffd710af39880deef09",
    "expiration_date_hash":"f4286b9a8e0eb7974f34a996ee732fd861868f2fc7aaa7ed5cca8de2489534ad",
    "cardholder_name_hash":"dd6cce1e06790019dd266c6f70430f87dd378df802c6b7494395156f62533ce6",
    "security_code_hash":"7756b897e88c035f34c6658a147e263b29b480a5cdf76581012ff10ede478c4c"
    }
    }
    },
    "metadata": "good"
    }'

Step 4. Wait for a notification that Pike is ready to perform the payout

Pike will send you a ready_to_confirm webhook. This means that the payout can be performed and Pike is waiting for you to confirm (or cancel). The webhook body will contain all the details of the payout.

You then reply with the 200 HTTP code.

Example
curl -X POST \
https://partner.ru \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"type": "ready_to_confirm",
"session": {
"id": "ps_3230",
"status": "in_progress",
"created_at": "2024-05-27T02:03:00.000000Z",
"updated_at": "2024-05-27T02:03:00.000000Z",
"next_action": "confirm",
"payments": [{
"id": "po_1234",
"status": "pending",
"created_at": "2024-05-27T02:03:00.000000Z",
"customer": {
"reference": "user123",
"contacts": [{
"email": "user@gmail.com"
}]
},
"payment_method": {
"type": "card",
"card": {
"last4": "4242",
"brand": "visa"
}
},
"amount_details": {
"amount": 10000,
"currency": "rub"
},
"metadata": "good"
}]
}
}'

Step 5. Confirm or cancel the payout

Check the payout details and confirm that you are ready to perform the payout (using the session/confirm request) or cancel it (using the session/cancel request).

Example
curl -X POST \
https://proxy-demo.pikepayments.com/api/v1/session/confirm \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"session_id": "3230"
}'

Step 6. Wait to be notified of the results of the payout

Pike will send you a payment_finished webhook. The webhook body will contain all the details of the payout. The payout result is in the status field of the payments/payout_list array.

If the status is succeeded, then the payout has been successful.

Learn more about payout statuses