3.23. /api/v4/payout
Introduction
Payout is initiated through HTTPS POST request by using URLs and the parameters specified below. Use OAuth RSA-SHA256 for authentication.
API URLs
Integration |
Production |
---|---|
https://sandbox.sbctech.ru/paynet/api/v4/payout/ENDPOINTID |
https://gate.sbctech.ru/paynet/api/v4/payout/ENDPOINTID |
https://sandbox.sbctech.ru/paynet/api/v4/payout/group/ENDPOINTGROUPID |
https://gate.sbctech.ru/paynet/api/v4/payout/group/ENDPOINTGROUPID |
Request Parameters
Note
Parameter Name |
Description |
Value |
---|---|---|
client_orderid |
Connecting Party’s order identifier. |
Necessity : RequiredType : StringLength : 128 |
amount |
Amount to be charged. The amount has to be specified in the highest units with . delimiter. For instance, 10.5 for USD means 10 US Dollars and 50 Cents. |
Necessity : RequiredType : NumericLength : 10 |
currency |
Currency the transaction is charged in (three-letter currency code). Sample values are: USD for US Dollar EUR for European Euro. |
Necessity : RequiredType : StringLength : 3 |
order_desc |
Brief order description. |
Necessity : OptionalType : StringLength : 64 |
ipaddress |
Receiver’s IP address (IPv4 or IPv6). |
Necessity : ConditionalType : StringLength : 7-45 |
purpose |
Payout purpose. |
Necessity : ConditionalType : StringLength : 128 |
server_callback_url |
URL the transaction result will be sent to. Connecting Party may use this URL for custom processing of the transaction completion, e.g. to collect sales data in Connecting Party’s database. See more details at Connecting Party Callbacks. |
Necessity : OptionalType : StringLength : 128 |
redirect_url |
URL, where the Receiver is redirected to upon completion of the transaction.
Please note that redirection is performed in any case, no matter whether transaction is approved, declined in any other final status.
Connecting Party must not use the parameters come along with the redirect HTTP Request to treat the status of the transaction.
Instead Connecting Party can utilize server_callback_url or status API command.
Pass https://doc.sbctech.ru/ if you have no need to return Receiver anywhere. Use either redirect_url or combination of redirect_success_url and redirect_fail_url, not both.
|
Necessity : OptionalType : StringLength : 128 |
redirect_success_url |
URL, where the Receiver is redirected to when transaction status is approved (See status list).
Connecting Party must not use the parameters come along with the redirect HTTP Request to treat the status of the transaction.
Instead Connecting Party can utilize server_callback_url or status API command.
Otherwise put https://doc.sbctech.ru/ if there is no need to redirect Receiver anywhere. Use either combination of redirect_success_url and redirect_fail_url or redirect_url, not both.
|
Necessity : OptionalType : StringLength : 1024 |
redirect_fail_url |
URL, where the Receiver is redirected to when transaction status is not approved (See status list).
Connecting Party must not use the parameters come along with the redirect HTTP Request to treat the status of the transaction.
Instead Connecting Party can utilize server_callback_url or status API command.
Pass https://doc.sbctech.ru/ if there is no need to redirect Receiver anywhere. Use either combination of redirect_fail_url and redirect_success_url or redirect_url, not both.
|
Necessity : OptionalType : StringLength : 1024 |
credit_card_number |
Customer’s credit card number. Note: For the scenario of payment to a card inside the system, this card will be considered as a source, and all processing limits, lists and fraud scoring will be applied to it as a source card. |
Necessity : ConditionalType : NumericLength : 20 |
card_printed_name |
Customer’s full name, as printed on the card. |
Necessity : ConditionalType : StringLength : 128 |
expire_month |
Credit card expiration month. |
Necessity : ConditionalType : NumericLength : 2 |
expire_year |
Credit card expiration year. |
Necessity : ConditionalType : NumericLength : 4 |
cvv2 |
Receiver’s CVV2 code. CVV2 (Card Verification Value) is a three- or four-digit number AFTER the credit card number in the signature area of the card. |
Necessity : ConditionalType : NumericLength : 3-4 |
account_number |
Account Number. |
Necessity : ConditionalType : StringLength : 32 |
account_name |
Bank account. |
Necessity : OptionalType : StringLength : 128 |
ewallet_type |
Type of e-wallet. |
Necessity : ConditionalType : StringLength : 64 |
ewallet_wallet |
E-wallet ID. |
Necessity : ConditionalType : StringLength : 128 |
crypto_wallet_address |
Address of crypto wallet. |
Necessity : ConditionalType : StringLength : 64 |
bank_name |
Bank Name. |
Necessity : ConditionalType : StringLength : 255 |
bank_branch |
Bank Branch Name. |
Necessity : ConditionalType : StringLength : 255 |
bank_code |
Bank code. |
Necessity : ConditionalType : StringLength : 32 |
bank_city |
Bank city. |
Necessity : ConditionalType : StringLength : 128 |
bank_address1 |
Bank address. |
Necessity : ConditionalType : StringLength : 255 |
bank_zip_code |
Bank postal ZIP code. |
Necessity : ConditionalType : StringLength : 255 |
bank_province |
Bank province. |
Necessity : ConditionalType : StringLength : 255 |
bank_area |
Bank area. |
Necessity : ConditionalType : StringLength : 255 |
routing_number |
Routing number used to identify specific bank branches in China. |
Necessity : ConditionalType : StringLength : 16 |
legal_person_name |
Name on the legal document. |
Necessity : ConditionalType : StringLength : 128 |
legal_person_document_number |
Number of legal document. |
Necessity : ConditionalType : StringLength : 128 |
receiver_first_name |
Receiver first name, also can be sent as first_name. |
Necessity : ConditionalType : StringLength : 128 |
receiver_last_name |
Receiver last name, also can be sent as last_name. |
Necessity : ConditionalType : StringLength : 128 |
receiver_birthday |
Receiver birthday, also can be sent as birthday. |
Necessity : ConditionalType : NumericLength : 30 |
receiver_country_code |
Receiver country code, also can be sent as country. |
Necessity : ConditionalType : StringLength : 3 |
receiver_state |
Receiver state, should be provided for countries that have states (USA, Canada, Australia), also can be sent as state. |
Necessity : ConditionalType : StringLength : 4 |
receiver_city |
Receiver city, also can be sent as city. |
Necessity : ConditionalType : StringLength : 128 |
receiver_zip_code |
Receiver zip code, also can be sent as zip_code. |
Necessity : ConditionalType : NumericLength : 32 |
receiver_address1 |
Receiver address, also can be sent as address1. |
Necessity : ConditionalType : StringLength : 256 |
receiver_phone |
Receiver phone, also can be sent as phone. |
Necessity : ConditionalType : NumericLength : 128 |
receiver_email |
Receiver E-mail, also can be sent as email. |
Necessity : ConditionalType : StringLength : 128 |
receiver_identity_document_id |
Receiver identity document identifier, also can be sent as identity_document_id. |
Necessity : ConditionalType : StringLength : 128 |
receiver_identity_document_number |
Receiver identity document number, also can be sent as identity_document_number. |
Necessity : ConditionalType : StringLength : 128 |
merchant_data |
Any additional information for this transaction which may be useful in Connecting Party’s external systems, e.g. VIP customer, TV promo campaign lead. Will be returned in Status response and Connecting Party Callback. |
Necessity : OptionalType : StringLength : 64k |
bank_bic |
BIC of the receiver’s bank. |
Necessity : OptionalType : StringLength : 128 |
receiver_inn |
Receiver’s INN. |
Necessity : OptionalType : StringLength : 128 |
customer_level |
Customer level in CMS system |
Necessity : OptionalType : VarcharLength : 32 |
customer_id |
Customer ID in CMS system. Necessity becomes required if transaction goes via CMS (PNE) |
Necessity : OptionalType : IntLength : 10 |
merchant_customer_identifier |
Merchant Customer ID in CMS system. Necessity becomes required if transaction goes via CMS (CRM) |
Necessity : OptionalType : VarcharLength : 64 |
card_recurring_payment_id |
Payer’s tokenized cardholder’s data ID, referred as Recurring Payment ID (RPI). Send either card_recurring_payment_id or combination of credit_card_number, card_printed_name, expire_month and expire_year, not all. To create card_recurring_payment_id see /api/v4/create-card-ref. Note: For the scenario of payment to a card inside the system, this card will be considered as a source, and all processing limits, lists and fraud scoring will be applied to it as a source card. |
Necessity : ConditionalType : Long |
recurring-payment-id |
Recurring Payment ID can be sent instead of cardholder data. Customer Data can be updated via /api/v4/update-recurring-payment/. Recurring Payment ID creation is initiated through HTTPS POST request by using URLs and the parameters specified below. Use OAuth RSA-SHA256 for authentication. |
Necessity : ConditionalType : Long |
* Ask Support Manager if Conditional fields are Required for integration.
Response Parameters
Note
Payout Request Parameters |
Description |
---|---|
type |
The type of response. May be async-response, validation-error, error. If type equals validation-error or error, error-message and error-code parameters contain error details |
paynet-order-id |
Order id assigned to the order by SBC. |
merchant-order-id |
Connecting Party order id. |
serial-number |
Unique number assigned by SBC server to particular request from the Connecting Party. |
error-message |
If status is error this parameter contains the reason for decline or error details. |
error-code |
The error code is case of error status. |
Request Example
POST /paynet/api/v4/payout/39915 HTTP/1.1
Host: sandbox.sbctech.ru
User-Agent: curl/7.83.0
Accept: */*
Authorization: OAuth oauth_consumer_key="TestMerchant", oauth_nonce="b5E31Tw6SVjauE29uOf2jOLnuUSXmVdE", oauth_signature="WrW79JHNUVwDRhCGWQYgaN6xmJXpQxy8XSNyCOL6b2Wyf7V5BWGMe2TZa1bjC9ZeO0Q3FcQxeGGHv0%2F7hsMAsJNQEET321VNsbDwao2Ep%2Bp7eoYiGYrVveSrSW1diCrBf3AJYJZM0PTJ67Sl8XyeTVBHT4kpC5qBu3xDQ3aFfKnmRTmn9fiVsYsYu3DQrsHM1K9uAoltGt3Muz0kCDZ3MWNGrNqtdpWuar8HRQD3kckcPjuN9D6VrSuQm9eLx27G%2FvkiP%2BZ44i8ghIUp61NWSrJ4Ky69JiZ%2FoaVVmUTEaanc%2F%2B%2BQT6jBwWy%2Bb%2FTLUrxtSakeNfcjn1JVwRf4aCX2fhyG5ozH%2BjiXF6eRb83WVqBUAwykSq35pLU3Vmua3pKMKAJK1ZRDZdjGrT50KJg5tBniC4JFzdQqjQf%2FhFnDYodfIK3S2qZo%2FD3Bmlya46iEcK6SAQdNBBQue3E5Qi8FEHYrY1o7K8wDyzT1QzqqHF%2BQdmXcElSGu9ge0Y655%2BbGtXhnsUWnKEO0NGqErvAwzm7yUg0e5QWHVf505aE7pr5K4z%2Fzj7AvkuD7R1savqam%2BnnuSfq1E%2BnnnN7mTcC0g18Sr38vdTshcGq99YW3xWKc%2FpuooZYdYa5A6u46o%2BREZSTCD2XexcV49%2F9eVn3xdoTXYq4NISJSY8U7ThKnr0g%3D", oauth_signature_method="RSA-SHA256", oauth_timestamp="1677831012", oauth_version="1.0"
Content-Length: 150
Content-Type: application/x-www-form-urlencoded
Connection: close
account_name=1234
&account_number=1234
&amount=10.42
&client_orderid=1
¤cy=USD
&routing_number=15
&server_callback_url=https%3A%2F%2Fhttpstat.us%2F200
Success Response Example
HTTP/1.1 200
Server: server
Date: Fri, 03 Mar 2023 08:10:34 GMT
Content-Type: text/html;charset=utf-8
Connection: close
Vary: Accept-Encoding
X-XSS-Protection: 1
X-Content-Type-Options: nosniff
Strict-Transport-Security: max-age=31536000
Content-Language: en-US
Strict-Transport-Security: max-age=31536000
Content-Length: 137
type=async-response
&serial-number=00000000-0000-0000-0000-000002e2c322
&merchant-order-id=1
&paynet-order-id=6982864
&end-point-id=39915
Fail Response Example
HTTP/1.1 403 Forbidden
Server: server
Date: Thu, 25 Aug 2022 06:50:16 GMT
Content-Type: text/html
Content-Length: 735
Connection: close
X-XSS-Protection: 1
X-Content-Type-Options: nosniff
Strict-Transport-Security: max-age=31536000
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>403</title>
<style type="text/css">
body {
font-family: Arial, sans-serif;
font-size: 130%;
background-color: #eee;
}
p {
margin: 10em auto 0;
width: 500px;
border: 1px solid gray;
text-align: center;
vertical-align: middle;
padding: 40px 20px;
background-color: #fff;
-webkit-border-radius: 20px;
-moz-border-radius: 20px;
border-radius: 20px;
}
</style>
</head>
<body>
<p>Access is denied</p>
</body>
</html>
Test Scenario
Different Payout transaction statuses can be received on sandbox depending on the account_number value passed in Payout request.
Testing account_number values:
account_number = 1234567890 to get APPROVED
account_number = 0987654321 to get DECLINED
account_number = 1987654321 to get PROCESSOR_INTERNAL_ERROR
Postman Collection
Request Builder
Insert PKCS#1 PEM private key for sandbox environment in the field below. Request builder supports up to 4096 key length.
Debug form
Normalized parameters string to sign, according to OAuth 1.0a rules |
---|
POST body parameters to submit |
---|
OAuth 1.0a headers to submit. |
---|
HEX Encoded Signature |
---|
Base64 Encoded Signature |
---|
|