Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Deposit of funds (API)

Access to the shared API is implemented using a whitelist of IP addresses and a secret key. Before starting to work with the API for deposit, it is necessary to send to the Paykassma TS the IP address from which requests will be sent.

Warning
titleWarning!

This integration method is NOT recommended if you have not previously integrated similar payment solutions that require activation. Recommended integration method

When choosing integration via API, we recommend that you additionally make the following improvements:

  1. Add hints in text form for each payment system (PS) to explain to a user all payment steps.
  2. Add a visual explanation of the payment process - gifs showing the process and screenshots of the payment steps.
  3. Screenshots and all the necessary minimum text information can be obtained directly from Paykassma TS.


Access to the shared API is implemented using a secret key. PLUGINAPI_SECRET - secret key string. It will need to be added to all requests in the form of the secret get parameter.   

For example: https://api.{URL_server_Paykassma

_Server

}/api/v1

/deposit-info

/transaction/create/paytm?secret=pluginapi_secret 

When you send a request without using these parameters, the error 404 'Not found' will be displayed.

Attention: Before starting to work with the API for deposit, it is necessary to send the IP address from which requests will be sent to the Paykassma TS.

Obtaining available PSs

Code Block
themeRDark
titleAPI url
https://api.{URL_Paykassma_Server}/api/v1/payment-systems/available

Request method: GET

Format: JSON

Parameters:

Parameter

Type

Required

Description

currency_code

string[] (3)

YES

An array consisting of currency codes. PS that work with the specified currencies will be displayed

label

string (190)

YES

Unique identifier (ID) of the user making the payment

Code Block
themeDJango
titleRequest
{
    "currency_code": [ "USD", "INR" ],
    "label": "55"
}

 

Code Block
themeDJango
titleResponse Success
collapsetrue
{
    "status": "ok",
    "params": {
        "gifcurrency_guidedata": {[
       "upi": "http:\/\/api.pay.test\/storage\/guide-image\/upi.mp4?cache=1587635151",
     {
                "phonePecode": "http:\/\/api.pay.test\/storage\/guide-image\/phonePe.gif?cache=1589958899USD",
                "bkashsymbol": "http:\/\/api.pay.test\/storage\/guide-image\/bkash.mpg?cache=1611553163"
"$"
            },
     "currency_data": [
      {
                "code": "INR",
                "symbol": "INR"
            }
        ],
        "wallets": [
            {
        "type": "paytm",
       "type": "staging_b_ml",
                "currency_code": "INR",
                "order": 56,
                "logo": "httphttps:\/\/api.staging.pay.test\client-paykassma.com/storage\/payment_system\/logos\/paytmstaging_b_defaultml.svgpng",
                "name": "PayTMstaging B ml",
      },
      {
        "typeis_manual": "paytm"true,
        "currency_code": "INR",
        "orderuploading_payment_bill": 5,
      true
  "logo": "http:\/\/api.pay.test\/storage\/payment_system\/logos\/paytm_34.svg",
        "name": "paytm" },
        "hints": [
     {
     {
            "type": "requisites_hintnagad",
                "textcurrency_code": null"USD",
           },
     "order": 17,
    {
            "typelogo": "https://api.staging.client-paykassma.com/storage/payment_hint_system/logos/nagad_default.svg",
                "textname": null"Nagad",
          },
          true"is_manual": false,
        ],
        "showuploading_payment_limitsbill": truefalse
       }
     ],}
      "imps": {  ]
        "INR": {}
          "min
}

 

Code Block
themeDJango
titleResponse Fail
{
    "status": "8000fail",
          "max": "560000"
        }
      },
    "message": "MESSAGE"
}

Getting mediahints

To receive mediahints on how to make a deposit using the payment system, you need to send a request:

Code Block
themeRDark
titleAPI url
https://api.{URL_server_Paykassma}/wallet-type/images/

Request method: GET

Format: JSON

Code Block
themeDJango
titleResponse Success
collapsetrue
"status": "success",
      "bkashmessage": {"",
    "code": 20000,
    "BDTdata": {
          "minimps": "100",
{
            "maxid": "1000000"486,
        }
    "url":  },
"https://api.staging.client-paykassma.com/storage/guide-image/bkash.mp4"
       "upi": { },
        "INRpaytm": {
            "minid": "20000"500,
            "maxurl": "50000https://api.staging.client-paykassma.com/storage/guide-image/Ghjkfre22.gif"
        },
      },
      "paytmupi": {
        "INR": {
          "minid": "100000"506,
            "maxurl": "20000000https://api.staging.client-paykassma.com/storage/guide-image/upi_in.mp4"
        }
      },
      "phone_pe": {
        "INR": {
          "min": "100",
          "max": "800000"
        }
      }
    }
  }
}
Code Block
themeDJango
titleResponse Fail
{
    "status": "fail"
    "message": "MESSAGE"
}

Creating a payment

}
}
Code Block
themeDJango
titleResponse Fail
{
    "status": "fail"
    "message": "MESSAGE"
}

Creating a payment

Currently, there are two types of requests for Currently, there are two types of requests for creating a payment, depending on the PS.

Info

Attention! To get a complete list of available PSs, you need to contact Paykassma TS. TS will provide complete examples of requests for currently available PSs. They will also determine the correct request, depending on the selected PS.


For PS that require payment activation

1. Payment creation request:

Code Block
themeRDark
titleAPI url
https://api.{URL_Paykassma_Server}/api/v1/transaction/create/{wallet_type}
Example of request for PS PayTM
Code Block
themeRDark
titleAPI url
https://api.{URL_Paykassma_Server}/api/v1/transaction/create/paytm

Request method: POST

Format: JSON

Parameters:

Parameter

Type

Required

Description

currency

string (3)

YES

Currency code

label

string (190)

YES

Unique identifier of the user making the payment

Code Block
themeDJango
titleRequest
{
    "currency": "INR",
    "label": "eligendi"
}

 

Code Block
themeDJango
titleResponse Success
{
    "status": "ok",
    "params":  {
        "identifier": "6234234234"
                      }
}

 

Code Block
themeDJango
titleResponse Fail
{
    "status": "fail"
    "message": "MESSAGE"
}

2. Activation request

Depending on the value of the is_manual parameter, there are two types of requests for payment activation:

1) if is_manual = false

Code Block
themeRDark
titleAPI url
https://api.{URL_Paykassma_Server}/api/v1/transaction/activate

Request method: POST

Format: JSON

Parameters:

Parameter

Type

Required

Description

currency_code

string (3)

YES

Currency code

wallet_type

string (190)

YES

Value from the list of available PSs.
Attention: To get a complete available list, contact Paykassma TS.

label

string (190)

YES

Unique identifier of the user making the payment

key1

string (190)

YES

A code on which activation is performed (Transiction_ID), received from the user

amountnumericfloat*required ifTransaction amount 

custom_transaction_id

string (19064)

NO

YES

Unique transaction identifier Transaction ID in the Client’s systemClient's system

It is necessary to pass a non-repeating parameter value

Code Block
Code Block
themeDJango
titleRequest
{
    "currency_code": "USD",
    "wallet_type": "paytm",
    "label": "55",
    "key1": "123-ABC-456-DEF"
    "custom_transaction_id": "123465477897"
}

 

Code Block
themeDJango
titleResponse Success
{
    "status": "ok"
}

 

Code Block
themeDJango
titleResponse Fail
{
    "status": "fail"
    "message": "MESSAGE"
}

*For some PS, it is also necessary to send the amount field in the request:

Payment systemcurrency_codewallet_typelabelkey1amountcustom_transaction_idIMPS/UPIrequiredrequiredrequiredrequiredrequired-Paytmrequiredrequiredrequiredrequired--PhonePerequiredrequiredrequiredrequiredrequired-bKashrequiredrequiredrequiredrequired--Nagadrequiredrequiredrequiredrequired--

2)  if is_manual = true

Code Block
themeRDark
titleAPI url
https://api.{URL_server_Paykassma}/api/v1/possible-transaction

Request method: POST

Format: multipart/form-data

Parameters:

NameTypeRequiredDescription
secretstringyesКлюч доступа

Body:

Parameter

Type

Required

Description

currency_code

string (3)

YES

Currency code

wallet_type

string (190)

YES

Value from the list of available PSs.
Attention: To get a complete available list, contact Paykassma TS.

label

string (190)

YES

Unique identifier of the user making the payment

key1

string (190)

YES

A code on which activation is performed (Transiction_ID), received from the user

amountfloat
YESTransaction amount 
screenshotstring (190)NO

Upload payment screenshot

custom_transaction_id

string (190)

YES

Transaction ID in the Client’s system

Code Block
themeDJango
titleResponse Success
{
    "status": "success",
    "message": "",
    "code": 20000,
    "data": [],
    "paginate": {
        "offset": 0,
        "total": 1,
        "limit": 1
    }
}
Code Block
themeDJango
titleResponse Fail
{
    "status": "fail",
    "message": {
        "key1": [
            "Transaction field has wrong length"
        ]
    }
}


*With enabled functionality Delayed automatic activation of transactions(Possible transactions)

For PS that do not require payment activation

Payment creation request:

Code Block
themeRDark
titleAPI url
https://api.{URL_Paykassma_Server}/api/v1/payment/create/{payment_system}

Request method: POST

Format: JSON

Parameters:

Parameter

Type

Required

Description

language

string (2)

YES

Interface language

currency

string (3)

YES

Currency code

bank

string (3)

YES

The bank via which the payment is performed

amount

numeric 

(ограничена max.
депозитом)

YES

Payment amount

label

string (190)

YES

Unique identifier of the user making the payment

redirect_url

url 

YES

URL of the page for redirecting after payment

custom_transaction_id

string (190)

NO

Transaction ID in the Client’s system

Code Block
themeDJango
titleRequest
{
   "language": "en",
   "currency": "USD",
   "bank": "MBB",
   "amount": "1000",
   "label": "55",
   "redirect_url": "https:\/\/google.com"
   "custom_transaction_id": "123465477897"
}
{     "status": "ok" }
Code Block
themeDJango
titleResponse Success
Code Block
themeDJango
titleResponse Failpossible_transaction_created
{
    "status": "failpossible_transaction_created",
    "message": "MESSAGE "Transaction not found. Possible transaction created"
}

Information about savings

To save information about transactions, the amount of which does not exceed the minimum deposit amount for a particular payment system, the functionality of savings has been implemented. The user's transactions (selected by the label parameter) are accumulated in the system and are not credited to the user's account until their amount reaches the minimum deposit amount of this payment system. The postback will be sent to the client's server only after the minimum deposit amount is reached. Until the postback is sent, the transaction is not considered credited to the account.

In the postback of deposit transactions, you can see the Stockpiling field, it contains the amount of transactions involved in the accumulation (one or more transactions) converted to all currencies. Conversion is carried out on the basis of open data on exchange rates. All currencies are transmitted with an accuracy of up to hundredths, cryptocurrencies have 8 digits in the fractional part (one hundred millionth accuracy). And in field transactions Information about completed transactions participating in the accumulation (one or more) is transmittedPassed as an list.

Request to provide information about savings of a certain user

Code Block
themeRDark
titleAPI url
https://api.{URL_Paykassma_Server}/api/v1/deposit-info

Request method: GET

Format: JSON

Parameters:

**For some PS, it is also necessary to send the amount field in the request:

Payment systemcurrency_codewallet_typelabelkey1amountcustom_transaction_id
UPI P2Prequiredrequiredrequiredrequiredrequiredrequired
PhonePerequiredrequiredrequiredrequiredrequiredrequired
bKashrequiredrequiredrequiredrequired-required
Nagadrequiredrequiredrequiredrequired-required

***If you try to activate a suspicious transaction, you will see error 400 'Check of deposit status started. The operation may take longer than expected. Once checked the funds will credit to you account'.

For PS that do not require payment activation

Payment creation request:

Code Block
themeRDark
titleAPI url
https://api.{URL_Paykassma_Server}/api/v1/payment/create/{payment_system}

Request method: POST

Format: JSON

Parameters:

Parameter

Type

Required

Description

language

string (2)

YES

Interface language

currency

string (3)

YES

Currency code

bank

string (3)

YES

The bank via which the payment is performed

amount

float

YES

Payment amount

Parameter

Type

Required

Description

label

string (190)

 

YES

Unique identifier of the user making the payment

wallet

redirect_

type

url

url 

YES

Value from the list of available PSs.
Attention: To get a complete available list, contact Paykassma TS.

URL of the page for redirecting after payment

custom_transaction_id

string (64)

YES

Unique transaction identifier in the Client's system

It is necessary to pass a non-repeating parameter value

currency

string (3)

YES

Currency code

code

string (190) 
or “null”

NO

Name of the manual payment system.
It’s filled in when wallet_type = manual

Code Block
themeDJango
titleRequest
{
   "labellanguage": "55en",
   "wallet_typecurrency": "paytmUSD",
   "currencybank": "UDSMBB"
}
Code Block
themeDJango
titleResponse Success
{,
   "amount": 1000.00,
     "statuslabel": "ok55",
    "stockpilingredirect_sumurl": 0,
    "lacks_sum": 0,
    "minimum_deposit": 148
}"https:\/\/google.com"
   "custom_transaction_id": "123465477897"
}

 

Code Block
themeDJango
titleResponse Success
{
    "status": "ok"
}

 

Code Block
themeDJango
titleResponse Fail
{
    "status": "fail"
    "message": "MESSAGE"
}

    < Home

Withdrawal of funds (API, actual version)

To withdraw funds by the user via payment systems available to the Client, it is necessary to:

  • Once send Paykassma TS the URL of the server where postbacks with the withdrawal status will be sent.

  • Redirect addresses hashing

    The widget code contains parameters for specifying redirect addresses. Addresses must be specified in hashed form. To hash addresses send the request ((info) access to the API is implemented using a secret key)

    Send withdrawal requests (POST) to the URL, without using "secret = pluginapi_secret"

    :

    Code Block
    themeRDark
    titleAPI url
    https://api.{URL_server_Paykassma
    _Server
    }/
    v2/withdrawal/create
    payment-plugin/hash-url?secret=pluginapi_secret  

    Request method: POST

    Format: JSON

    Parameters:

    Parameter

    Type

    Required

    Description

    success_urlsarrayYESThe list of redirect addresses when the payment is successful.

    orderinteger*YESThe redirect address number in the list.

    urlstring*YESThe redirect address when the payment is successful.
    fail_urlsarrayYESThe list of redirect addresses when the payment is failed.

    orderinteger*YESThe redirect address number in the list.

    urlstring*YESThe redirect address when the payment is failed.
    pending_urlsarrayYESThe list of redirect addresses while waiting for payment confirmation.

    orderinteger

    If one of the properties is specified, then the second is required.

    The redirect address number in the list.

    urlstring

    The redirect addresses while waiting for payment confirmation.

    *One of the success_urls or fail_urls arrays can be empty.

    Code Block
    themeDJango
    titleRequest
    collapsetrue
    {
        "success_urls": [
           
    Warning

    Attention: When transmitting data, there should be no spaces at the beginning and end

    Each withdrawal request is signed by signature, it is formed as follows:

    Code Block
    languagephp
    themeDJango
    titleSignature
    $data = [
        ...
    ];
     
    $data['signature'] = generateSignature($data); // return fa0ee1e2acf7f898635ec417491381c0a4f9d35c
     
    //send $data like json ...
     
    function generateSignature(array $data) {
        $privateKey = 'yourprivatekey';
        ksort($data);
        $implode = self::multiImplode( ':', $data);
        return sha1($privateKey . md5($implode));
    }
     
     
    function multiImplode($glue, $array): string
        {
            $finArray = [];
        foreach ($array as $val) {
            $finArray[] = is_array($val) ? self::multiImplode($glue, $val) : $val;
    "order": 2,
           }
        return implode($glue, $finArray);
    }

    Required parameters for transmission in POST request:

    Parameter

    Type

    Required

    Description

    withdrawal_idstring(1-36) optional Withdrawal ID, if the parameter is not passed, then the system generates withdrawal _id
    payment_systemstring requiredPayment system
    amountintrequired
    Additional requirements:
    1. amount >= The value of the set minimum value
    2. amount <=The value of the set maximum value
    Note
    titleMultiplicity

    For PS PayTM: amount is a multiple of "10".

    currency_codestring(3) requiredCurrency code
    labelstring required

    Unique identifier of the user making the payment

    account_numberstring 

    *required_if
    PS = bkash,imps,
    upi,paytm,....

    Number of the bank account

    Note
    titleInput mask

    For PS PayTM: Numbers (10) (without international code +91) For PS UPI / IMPS: Numbers

    account_namestring *required_if
    PS = imps,
    upi,....

    Name of the bank account holder

    account_emailstring *required_if
    PS = bkash,...

    Email of the person who is being paid

    payments_details.payments_methodstring *required_if
    Payment method
    payments_details.payments_providerstring optionalSupplier who makes electronic payment using the selected payment method
    bank_details.bank_codestring*required_if

    Unique ID assigned by the country's central bank

    Note
    titleInput mask

    For PS UPI / IMPS: IFSC code Alphabetic(4)Figures(7). Details: https://en.wikipedia.org/wiki/Indian_Financial_System_Code

    bank_details.branch_codestring*required_ifBank branch code
    bank_details.bank_code_in_payments_systemstring*required_if

    Bank code in payments system, with which data is exchanged

    account_typestring*required_ifAccount type
    document_typestring*required_ifDocument type
    document_idstring*required_if
    Recipient document ID
    account_digitstring*required_ifAccount digit
    ibanstring*required_ifIBAN
    Info
    *The withdrawal request contains fields that are required only for some payment systems (required_if), to get a complete list of required fields for a specific payment system, you need to contact Paykassma technical support.

    Required fields for PS Bkash, PayTm, IMPS/UPI:

    Payment systemaccount_numberaccount_nameaccount_emailpayments_detailsbank_detailspayments_methodpayments_providerbank_codebranch_codebank_code_in_payment_system

    Bkash

    required-required-----IMPS/UPIrequiredrequired---required--Paytmrequired-------

    Request:

    Code Block
    themeDJango
    titleПример тела запроса
    {
    	'withdrawal_id': '1234567',
        'payment_system': 'paytm',
    	'amount' : '1000',  
        'currency_code': 'INR',
    	'label': '55',        
    	'comment': 'withdrawal',       
    	'account_number': '11111111'
    }
    Code Block
    languagephp
    titleResponse Success
    {
        'status': 'ok'
    }
    Code Block
    languagephp
    titleResponse Fail
    {
        'status': 'fail'
        'message': 'MESSAGE'
    }

    After processing the withdrawal, Paykassma will send a postback about the result of the withdrawal with a status, signed with a signature.

    Withdrawal status

    StatusDescriptionPROCESSED (1)

    Uccessful

    REJECTED (5)Unsuccessful

    Withdrawal of funds (API, the outdated version is not longer supported)

    API url:

    Code Block
    themeDJango
    https://api.{URL_Paykassma_Server}/withdrawal/manual/create

    Required parameters for transmission in POST request:

    Parameter

    Type

    Description

    wallet_type

    text(191)

    Selection from the available list

    Type of the payment system

    wallet_recipient

    string(191)

    The recipient's wallet, to whose account the payment will be made

    Attention! wallet_recipient (For the Paytm method) must contain the Paytm wallet number without the international code +91

    wallet_sender

    string(191)

    The sender's wallet, from whose account money will be withdrawn. The final choice of the sender is left to Paykassma.

    Attention: it is necessary to fill in the field with arbitrary four digits

    account_name

    string(191)

    Name of the bank account holder

    account_number

    string(191)

    Number of the bank account

    email

    string(191)

    Email of the person who is being paid

    amount

    Double

    Withdrawal amount

    withdrawal_id

    Integer

    Client side withdrawal ID (returned in postback ).

     "url": "https://test.com/success2.jpg"
            },
            {
                "order": 1,
                "url": "https://test.com/success1.jpg"
            }
        ],
        "fail_urls": [
            {
                "order": 1,
                "url": "https://test.com/fail1.jpg"
            },
            {
                "order": 2,
                "url": "https://test.com/fail2.jpg"
            }
        ],
        "pending_urls": [
      
            {
                "order": 3,
                "url": "https://test.com/pending1.jpg"
            },
            {
                "order": 4,
                "url": "https://test.com/pending2.jpg"
            }
        ]
    }
    Code Block
    themeDJango
    titleResponse Success
    collapsetrue
    {
      "status": "ok",
      "urls": {
        "success_url": [
          {
            "order": 1,
            "url": "a93558ba9e4f04eef3b1f759ae4281305776559ce86ae2af5f6e6498d84b99be"
          },
          {
            "order": 2,
            "url": "7c51f9d6b35a80a8fcce9cf3f4f0ae56b818c2e375a8b3297cb3fafb41a921eb"
          }
        ],
        "fail_url": [
          {
            "order": 1,
            "url": "8b99db57e0bda63400b0e852d7fe73d8c6da52b8e32894987a8bd00bcadf8c66"
          },
          {
            "order": 2,
            "url": "e72ed31e2f3814563a3bc446f6a59f43c946c3a4339c7b2f5c29d12e8066b37c"
          }
        ],
        "pending_url": [
           {
            "order": 1,
            "url": "8b99db57e0bda63400b0e852d7fe73d8c6da52b8e32894987a8bd00bcadf9v69"
          },
          {
            "order": 2,
            "url": "e72ed31e2f3814563a3bc446f6a59f43c946c3a4339c7b2f5c29d12e8066b37f"
          }
        ]
      }
    }
    Code Block
    themeDJango
    titleResponse Fail
    collapsetrue
    {
        "status": "fail"
        "message": "MESSAGE"
    }

    The received address hashes must be specified in the parameters of the widget code.

    Info
    titleAttention!

    The hash lifetime is 1 day. After the expiration date resend the request to get hash for the address if necessary.

    < Home   

    Withdrawal of funds

    To withdraw funds by the user via payment systems available to the Client, it is necessary to:

    1. Once send Paykassma TS the URL of the server where postbacks with the withdrawal status will be sent.
    2. Send withdrawal requests (POST) to the URL, without using "secret = pluginapi_secret":

      Code Block
      themeRDark
      titleAPI url
      https://api.{URL_Paykassma_Server}/v2/withdrawal/create
    Warning

    Attention: When transmitting data, there should be no spaces at the beginning and end

    Each withdrawal request is signed by signature, it is formed as follows:

    Signature generation algorithm

    1. Your private key is initialized.
    2. An array with data that will be hashed is formed. The array can be multidimensional.
    3. Array elements are sorted by key using the ksort() function

    4. The array elements are recursively concatenated with each other via ":" string.
    5. Then md5 hash of the resulting string is allocated.
    6. The private key is concatenated with a hash string.
    7. Then sha1 hash is allocated from the resulting string.


    Code Block
    languagephp
    themeDJango
    titleAn example of forming a signature in php
    $data = [
        ...
    ];
     
    $data['signature'] = generateSignature($data); // return fa0ee1e2acf7f898635ec417491381c0a4f9d35c
     
    //send $data like json ...
     
    function generateSignature(array $data) {
        $privateKey = 'yourprivatekey';
        ksort($data);
        $implode = self::multiImplode( ':', $data);
        return sha1($privateKey . md5($implode));
    }
     
     
    function multiImplode($glue, $array): string
        {
            $finArray = [];
        foreach ($array as $val) {
            $finArray[] = is_array($val) ? self::multiImplode($glue, $val) : $val;
        }
        return implode($glue, $finArray);
    }

    Required parameters for transmission in POST request:

    Parameter

    Type

    Required

    Description

    withdrawal_idstring(1-36) optional Withdrawal ID, if the parameter is not passed, then the system generates withdrawal _id
    payment_systemstring requiredPayment system
    amountintrequired
    Additional requirements:
    1. amount >= The value of the set minimum value
    2. amount <=The value of the set maximum value
    Note
    titleMultiplicity

    For PS PayTM: amount is a multiple of "10".

    currency_codestring(3) requiredCurrency code
    labelstring required

    Unique identifier of the user making the payment

    is_test

    booleanrequired

    The is_test parameter possible values:

    true - if Withdrawal is test
    false - if Withdrawal is real

    account_numberstring 

    *required_if
    PS = bkash,imps_ib,
    upi_ib,paytm,....

    Number of the bank account

    Note
    titleInput mask

    For PS PayTM: Numbers(10) (without international code +91)

    For PS UPI IB / IMPS IB: Numbers

    For PS Bkash / Nagad: Numbers(11) in the format 01xxxxxxxxx

    For PS Rocket:  Numbers(11-12) in the format 01xxxxxxxxxх

    account_namestring *required_if
    PS = imps_ib,
    upi_ib,....

    Name of the bank account holder

    account_emailstring *required_if
    PS = bkash,...

    Email of the person who is being paid

    payments_details.payments_methodstring *required_if
    Payment method
    payments_details.payments_providerstring optionalSupplier who makes electronic payment using the selected payment method
    bank_details.bank_codestring*required_if

    Unique ID assigned by the country's central bank

    Note
    titleInput mask

    For PS IMPS IB: IFSC code - the length should be 11 characters, contain letters and numbers without spaces and dashes.. Details: https://en.wikipedia.org/wiki/Indian_Financial_System_Code

    bank_details.branch_codestring*required_ifBank branch code
    bank_details.bank_code_in_payments_systemstring*required_if

    Bank code in payments system, with which data is exchanged

    ibanstring*required_ifIBAN
    Info
    titleInformation

    You can see the mandatory fields for PS in the "Integration" section.

    Request:

    Code Block
    themeDJango
    titleExample request
    {
        "withdrawal_id": "1234567",
        "payment_system": "paytm",
        "amount" : 1000,  
        "currency_code": "INR",
        "label": "55",     
        "is_test": false,     
        "comment: "withdrawal",       
        "account_number": "11111111", 
        "payments_details": {
            "payments_provider": "56",
            "payments_method": "MOBILE_MONEY"
        },
        "bank_details": {
            "bank_code": "MAHB0001821",
            "branch_code": "000254",
            "bank_code_in_payments_system": "9393"
        },     
        "signature":"fae51673a8a9c85f724317214bd0bcc665ebc799"
    }
    Code Block
    languagephp
    themeDJango
    titleResponse Success
    {
        "status": "ok"
    }
    Code Block
    languagephp
    themeDJango
    titleResponse Fail
    {
        "status": "fail"
        "message": "MESSAGE"
    }

    *If, when trying to create a withdrawal request, the amount of account balances in the currency of the request is less than the total amount of new and still incomplete applications, the error message"Insufficient balance" will be displayed (to configure this functionality, contact the TP Paykassma).

    Code Block
    themeDJango
    titleResponse Fail
    {
        "status": "fail",
        "message": {
            "withdrawals_sum_amount": [
                "Insufficient balance"
            ]
        }
    }


    After processing the withdrawal, Paykassma will send a postback about the result of the withdrawal with a status, signed with a signature.

    Withdrawal status

    StatusDescription
    PROCESSED (1)

    Uccessful

    REJECTED (5)Unsuccessful


        

    Information about the postback that was sent earlier

    Request to provide information about the postback that was sent earlier.

    PLUGINAPI_SECRET - secret key string. It will need to be added to all requests in the form of the secret get parameter.
        For example: https://api.{URL_сервера_Paykassma}/api/v1/postback?secret=pluginapi_secret 

    Code Block
    themeRDark
    titleAPI url
    https://api.{URL_server_Paykassma}/api/v1/postback
    
    

    Request method: GET

    Format: JSON

    Parameters:

    Parameter

    Type

    Required

    Description

    type

    string 

    required

    Type of postback.

    Possible values:

    • deposit
    • withdrawal

    transaction_id

    string

    One of the parameters is required

    if  type = deposit

    Transaction number

    custom_idstring

    Order ID

    Note

    If Paykassma contains several transactions with the same Order ID, only one of them will be selected.

    For this reason, the uniqueness of custom_id must be controlled on the Client's system.

    withdrawal_idstringIs required if  type = withdrawalWithdrawal ID


    Code Block
    themeDJango
    titleResponse Success (type=deposit)
    collapsetrue
       {
        "status": "ok",
        "postback": {
          "wallet_type": "paytm_api",
          "amount": 13629,
          "currency_code": "INR",
          "label":"6424468",
          "converted_amount": 
              {
               "USD":40.43,"INR":3327,"EUR":40.98,"IDR":625650.25,"MYR":190.71,"VND":988191.07,"SGD":57.43,
               "THB":1539,"NGN":17640.29,"TRY":751.48,"AED":148.51,"CAD":55.52,"AUD":64,"BDT":4276.41,"AFN":3531.25,
               "ALL":4807.24,"AMD":16333.46,"AOA":18109.34,"ARS":6179.09,"AWG":72.88,"AZN":68.73,"BAM":80.49,"BBD":80.86,
           "BGN":80.2,"BHD":15.24,"BIF":83303.64,"BMD":40.43,"BND":57.44,"BOB":279.23,"BRL":211.91,"BSD":40.43,"BTC":0.00209234 
               },
           "direction":"ingoing",
           "created_datetime":"2023-06-30 10:59:24",
           "additional_data": 
                [ 
                 {
                  "activated_datetime":"2023-06-30 13:59:24",
                  "exchanger_identifier":"97489343",
                  "comment":"",
                  "amount":"13628.5",
                  "currency_code":"INR",
                  "wallet_type":"paytm_api",
                  "stockpiling_id":262402,
                  "transaction_id":"160028076535305",
                  "transaction_type":0,
                  "plugin_custom_order_id":"6424468",
                  "withdrawal_id":null,
                  "withdrawal_status":null,
                  "account_number":"",
                  "account_name":"",
                  "account_email":"",
                  "bank_details": 
                    {
                         "bank_code":"",
                         "branch_code":"" 
                    }
                 } 
                    {...}
                ]
         }
       }
    Code Block
    themeDJango
    titleResponse Success (type=withdrawal)
    collapsetrue
    {
        "status": "ok",
        "postback": {
          "wallet_type":"nagad_api",
          "amount":820,
          "currency_code":"BDT",
          "label":"autotest898404792700response_500",
          "converted_amount": 
            {
              "USD":7.56,"INR":620,"IDR":113212.08,"MYR":34.39,"VND":178667.64,"SGD":10,
              "THB":257.14,"NGN":5947.67,"TRY":203.5,"AED":27.75,"CAD":9.93,"AUD":11.07,"BDT":820,"AFN":647.27,
             
    "ALL":681.27,"AMD":2946.58,"AOA":6231.79,"ARS":2025.9,"AWG":13.62,"AZN":12.84,"BAM":13.17,"BBD":15.11,
              "BGN":13.17,"BHD":2.85,"BIF":21376.13,"BMD":7.56,"BND":10.02,"BOB":52.24,"BRL":36.2,"BSD":7.56,"BTC":0.00025009
             },
          "direction":"outgoing",
          "created_datetime":"2023-07-20 08:09:01",
          "additional_data": 
           [
            {
              "activated_datetime":"",
              "exchanger_identifier":"",
              "comment":"autotest approve by file",
              "amount":"820",
              "currency_code":"BDT",
              "wallet_type":"nagad_api",
              "stockpiling_id":null,
              "transaction_id":"",
              "transaction_type":null,
              "plugin_custom_order_id":"",
              "withdrawal_id":"autotest984047927037",
              "withdrawal_status":1,
              "account_number":"5632221204",
              "account_name":"autotest983948600573",
              "account_email":"",
              "bank_details":
                {
                   "bank_code":null,
                   "branch_code":null
                 }
            }
           ]
      }
    }
    Code Block
    themeDJango
    titleResponse Fail
    collapsetrue
    {
        "status": "fail"
        "message": "MESSAGE"
    }


    < Home


    Accounts' balance

    A request to provide the information about the balance of the Client's accounts (except for the Settlement balance) is formed as follows:

    Code Block
    themeRDark
    titleAPI url
    https://api.{URL_server_Paykassma}/api/v1/accounts-balance?secret={{pluginapi.secret}}

    Request method: GET

    Format: JSON

    Parameters:

    NameTypeRequiredDescription
    secretstringyesAccess key
    Code Block
    themeDJango
    titleResponse Success
    {
        "status": "success",
        "message": "",
        "code": 20000,
        "data": {
            "balances": [
                {
                    "wallet_type": "paytm",
                    "currency_code": "IDR",
                    "amount": -324324.00
                },
                {
                    "wallet_type": "paytm",
                    "currency_code": "USD",
                    "amount": -10800.00
                 },
                {
                    "wallet_type": "bkash",
                    "currency_code": "VND",
                    "amount": 155.00
                 },
                {
                    "wallet_type": "bkash",
                    "currency_code": "BRL",
                    "amount": 187239.195
                },
                {
                    "wallet_type": "bkash",
                    "currency_code": "EUR",
                    "amount": 23.9375
                },
                {
                    "wallet_type": "nagad",
                    "currency_code": "CUC",
                    "amount": 471.00
                 },
                {
                    "wallet_type": "upi_ib",
                    "currency_code": "SAR",
                    "amount": 499.00
                 }
                             ]
    }
    Code Block
    themeDJango
    titleResponse Fail
    {
        "status": "error",
        "code": 30228,
        "errors": {
            "target": "secret",
            "code": 36205,
            "message": "Wrong secret"
        },
        "error_message": "Data validation error"
    }


    < Home


    Order statuses

    A request to provide the information about the statuses of the Client's orders is formed as follows:

    Code Block
    themeRDark
    titleAPI url
    https://api.{URL_server_Paykassma}/api/v1/pullpostbacks?secret={{pluginapi.secret}}

    Request method: GET

    Format: JSON

    Parameters:

    NameTypeRequiredDescription
    secretstringYESAccess key
    NameTypeRequiredDescription
    typestring YES

    Possible values:

    • deposit
    • withdrawal
    plugin_custom_order_idarrayYES if type = withdrawalUser transaction ID/Order ID

    withdrawal_id

    arrayYES if type = plugin_custom_order_idWithdrawal ID

    Response body:

    NameTypeRequiredDescription

    status

    stringYESRequest status.
    messagestring

    YES

    Failure response message.

    If the response is successful, the message is empty.

    codeintNOSuccessful response code.
    dataarray/object

    To be filled in if the response is successful




    transactionsarray

    YES

    if type = deposit

    Deposit information.



    plugin_custom_order_idstringYESUser transaction ID/Order ID.


    message

    string

    NO

    A message is about the transaction or postback has not been found.



    postbackarray

    NO

    Postback information, if the transaction or postback has been found.


    withdrawalsarray

    YES

    if type = withdrawal

    Withdrawal information



    withdrawal_idstringYESWithdrawal ID


    messagestring

    NO

    A message is about the withdrawal or postback has not been found.



    postbackarray

    NO

    Postback information, if the withdrawal or postback has been found.

    paginateobjectTo be filled in if the response is successful

    The block with pagination data.


    offsetint

    Offset from the beginning of the list.


    totalint

    The total number of elements.


    limitint

    The number of elements per page.

    Code Block
    themeDJango
    titleResponse Success (type = deposit)
    collapsetrue
    {
        "status": "success",
        "message": "",
        "code": 20000,
        "data": {
            "transactions": [
                {
                    "plugin_custom_order_id": "autotest51191116971521",
                    "message": "Postback not found"
                },
                {
                    "plugin_custom_order_id": "1923912939dd912ddpppdd99test",
                    "postback": {
                        "wallet_type": "phone_pe",
                        "amount": 100,
                        "currency_code": "INR",
                        "label": "1293912939kkee13",
                        "converted_amount": {
                            "USD": 1.16,
                            "INR": 100,
                            "EUR": 1.06,
                            ...
                        },
                        "direction": "ingoing",
                        "created_datetime": "2025-03-19 12:49:49",
                        "additional_data": [
                            {
                                "activated_datetime": "2025-03-19 12:49:47",
                                "exchanger_identifier": "635*****8",
                                "comment": "95*****98",
                                "amount": "100",
                                "currency_code": "INR",
                                "wallet_type": "phone_pe",
                                "stockpiling_id": 2233,
                                "transaction_id": "3279********",
                                "transaction_type": 0,
                                "plugin_custom_order_id": "1923912939dd912ddpppdd99test",
                                "withdrawal_id": null,
                                "withdrawal_status": null,
                                "account_number": "",
                                "account_name": "",
                                "account_email": "",
                                "bank_details": {
                                    "bank_code": "",
                                    "branch_code": ""
                                }
                            }
                        ]
                    }
                }
            ]
        },
        "paginate": {
            "offset": 0,
            "total": 2,
            "limit": 2
        }
    }
    Code Block
    themeDJango
    titleResponse Success (type = withdrawal)
    collapsetrue
    {
        "status": "success",
        "message": "",
        "code": 20000,
        "data": {
            "withdrawals": [
    			{
                    "withdrawal_id": "ID_05613331ret",
                    "message": "Withdrawal with this ID not found"
                },
                {
                    "withdrawal_id": "ID_03213331asd",
                    "postback": {
                        "wallet_type": "easypaisa_api",
                        "amount": 3000,
                        "currency_code": "PKR",
                        "label": "label",
                        "converted_amount": {
                            "USD": 10.72,
                            "INR": 926,
                            "EUR": 9.83,
                            ...
                        },
                        "direction": "outgoing",
                        "created_datetime": "2025-03-19 12:38:01",
                        "additional_data": [
                            {
                                "activated_datetime": "",
                                "exchanger_identifier": "",
                                "comment": "test",
                                "amount": "3000",
                                "currency_code": "PKR",
                                "wallet_type": "easypaisa_api",
                                "stockpiling_id": null,
                                "transaction_id": "",
                                "transaction_type": null,
                                "plugin_custom_order_id": "",
                                "withdrawal_id": "87be1f94-04ba-11f0-bf20-0243a4aa6442",
                                "withdrawal_status": 5,
                                "account_number": "03*********",
                                "account_name": "Muhammad",
                                "account_email": "",
                                "bank_details": {
                                    "bank_code": null,
                                    "branch_code": null
                                }
                            }
                        ]
                    }
                }
            ]
        },
        "paginate": {
            "offset": 0,
            "total": 1,
            "limit": 1
        }
    }
    Code Block
    themeDJango
    titleResponse Fail
    collapsetrue
    {
        "status": "fail",
        "message": {
            "plugin_custom_order_id": [
                "The plugin custom order id field is required when type is deposit."
            ]
        }
    }

    Request:

    Code Block
    themeDJango
    {
        "wallet_type":"paytm",
        "wallet_recipient":"123123232",
        "wallet_sender":1111,
        "email":"[email protected]",
        "amount":1000,
        "withdrawal_id":"13",
        "signature":"fae51673a8a9c85f724317214bd0bcc665ebc799"
    }
    When sending a withdrawal request to Paykassma, the first response received the generated data on the request, without a signature:

    Example first response:

    Code Block
    themeDJango
    {
        "id":1,
        "wallet_type":"paytm",
        "wallet_recipient":"123123232",
        "wallet_sender":"1111",
        "email":"[email protected]",
        "amount":1000,
        "status":1,
        "created_at":"2020-07-08 07:06:06",
        "updated_at":"2020-07-08 09:40:39"
    }
    StatusDescriptionNEW (0)

    In processing

    CANCELED (2)

    Unsuccessful

    PROCESSED (1)

    Uccessful

    The second response will already come a postback about the withdrawal, signed by the signature.

        < Home

    Table of Contents