Skip to content
Logo MoneyGo

Processing Checkout

This endpoint initiates the checkout process for Money-Go transactions. The functionality differs based on the role of the user:

  • Merchants: It means that the user deposits Money-Go funds (Deposit).
  • Partners: It means that the user purchases Money-Go funds (Sell Funds).

Important Notes:

  • Signature Generation: The signature must be generated in a strict order and encrypted using the SHA-256 algorithm. It is crucial to follow the specified sequence exactly to ensure the signature is valid.

  • Wallet Currencies: The currencies of both the sender’s and receiver’s wallets must be identical. Any mismatch in currencies will cause the transaction to fail.

  • Transaction Limits: The minimum and maximum transaction amounts depend on the currency. Contact our managers to determine the exact limits for each currency.

  • Wallet Verification: Use the CHECK wallet! method to verify that the wallet you are interacting with exists and is active before proceeding with the transaction.

  • Unique User Info: Always provide a unique value in the user_info field. This uniquely identifies the user involved in the transaction and helps prevent duplicate or fraudulent requests.

  • Recipient Wallets: The recipient’s wallet must not be the same as the sender’s wallet and must belong to a different user. This ensures that funds are not inadvertently transferred within the same account.

Before initiating a payment, follow these steps:

  1. Generate Signature: Generate the signature by arranging the required fields in the specified order and then applying the SHA-256 hash algorithm to the resulting JSON string. The fields must be in this order:
  • wallet_to (as a string)
  • wallet_from (as a string)
  • amount (as a string)
  • id (as a string)
  • secret (as a string) Use token for the form
  1. Send Request: Include the generated signature in your JSON request body along with all required payment details. Send this POST request to the /api/processing/checkout endpoint to create the payment URL. Example request
  2. Receive Payment URL: If the request is successful, the API returns a JSON object containing the payment URL. This URL is used to complete the payment process on the Money-Go website. Example response

After the user completes the payment, the system performs two key actions:

  1. Webhook Notification:POST The system sends a webhook to the URL specified in the status_url field. This webhook includes details about the transaction status (e.g., “SUCCESS”, “CANCEL”, “PENDING”, or “FAIL”) along with other relevant payment information. This enables your application to automatically receive updates about the payment status without manual checks. Example webhook

Note: For testing webhooks, you can use https://webhook.site/. This service provides a unique URL to capture and inspect incoming HTTP requests, making it ideal for debugging and verifying your webhook integrations.


  1. User Redirection: In addition to the webhook, you can specify redirect URLs so that after payment on the Money-Go website, the user is automatically forwarded to your designated pages:
  • Success Redirect: If the payment is successful, the user is redirected to the URL provided in success_url.
  • Cancel Redirect: If the payment is cancelled, the user is redirected to the URL provided in cancel_url.
{
"wallet_to": "WALLET_TO_NUMBER",
"wallet_from": "WALLET_FROM_NUMBER",
"amount": "1.01",
"id": "1511834a-v103mv31",
"secret": "TOKEN_FOR_THE_FORM"
}
#!/bin/bash
# Define the JSON data for signature generation.
jsonData='{
"wallet_to": "WALLET_TO_NUMBER",
"wallet_from": "WALLET_FROM_NUMBER",
"amount": "1.01",
"id": "1511834a-v103mv31",
"secret": "TOKEN_FOR_THE_FORM"
}'
# Generate the SHA-256 signature using openssl.
# The echo -n flag ensures no extra newline is added.
signature=$(echo -n "$jsonData" | openssl dgst -sha256 | awk '{print $2}')
# Print the generated signature for verification.
echo "Generated Signature: $signature"
# Use cURL to send a POST request to the checkout endpoint, including the generated signature.
curl -X POST "https://api.money-go.com/api/processing/checkout" \
-H "Content-Type: application/json" \
-d '{
"wallet_to": "WALLET_TO_NUMBER",
"wallet_from": "WALLET_FROM_NUMBER",
"amount": "1.01",
"id": "1511834a-v103mv31",
"signature": "'"$signature"'",
"success_url": "https://example.com/success",
"cancel_url": "https://example.com/cancel",
"status_url": "https://example.com/webhook",
"user_info": "UNIQUE_USER_VALUE",
}'
  • Method: POST
  • URL: https://api.money-go.com/api/processing/checkout
  • Headers:
  • Content-Type: application/json

The following JSON body must be sent with the POST request to the /api/processing/checkout endpoint:

{
"wallet_to": "WALLET_NUMBER",
"wallet_from": "WALLET_NUMBER",
"amount": "1",
"id": "YOUR_PAYMENT_ID",
"signature": "SIGNATURE",
"success_url": "https://example.com/success",
"cancel_url": "https://example.com/cancel",
"status_url": "https://example.com/webhook",
"user_info": "UNIQUE_USER_VALUE"
}
FieldTypeDescription
wallet_tostringThe destination wallet number.
wallet_fromstringThe sender’s wallet number.
amountstringThe transaction amount, represented as a string (e.g., "1").
idstringA unique identifier for the payment transaction.
signaturestringThe SHA-256 signature generated from the transaction data.
success_urlstringThe URL to redirect the user upon successful payment.
cancel_urlstringThe URL to redirect the user if the payment is cancelled.
status_urlstringThe webhook URL where the API will send status updates for the transaction. POST
user_infostringA unique value to identify the user, ensuring that the request is associated with a specific user.

A successful response (HTTP 200) will return a JSON object with the following structure:

{
"status": true,
"data": {
"url": "https://money-go.com/ru/processing-pay/5d344f714bd0cacbc79a01286bc73e",
"expired_at": "2021-02-25 13:20:32"
}
}
FieldTypeDescription
statusbooleanIndicates whether the request was successful.
dataobjectContains additional information about the payment.
FieldTypeDescription
urlstringThe URL for the payment operation. The user is redirected here to complete payment.
expired_atstringThe expiration date and time for the payment URL (format: YYYY-MM-DD HH:MM:SS).

Method: POST

After sending the checkout request, the API responds with a JSON object that contains details for the payment operation. In addition, a webhook will be sent to the status_url provided in your request. This webhook provides updates on the status of the payment operation.

{
"payment_id": "YOUR_PAY_ID",
"signature": "b4ce1ec6293b8b99546c7dbf754fe5d0e6a50a2a6d0dffe36c470986f9b638b2",
"transaction_id": 1010,
"wallet_from": "U127056",
"wallet_to": "U155332",
"currency_to": "USD",
"currency_from": "USD",
"amount": 1,
"commission": 0,
"status": "PENDING",
"cancel": false
}
FieldTypeDescription
payment_idstringThe unique identifier for the payment.
signaturestringThe SHA-256 hash signature of the payment data.
transaction_idnumberThe unique identifier for the transaction.
wallet_fromstringThe sender’s wallet number.
wallet_tostringThe recipient’s wallet number.
currency_tostringThe currency code for the recipient’s wallet (e.g., “USD”).
currency_fromstringThe currency code for the sender’s wallet (e.g., “USD”).
amountnumberThe transaction amount.
commissionnumberThe commission charged for the transaction.
statusstringThe current status of the transaction. Possible values: “CANCEL”, “FAIL”, “PENDING”, or “SUCCESS”.
cancelbooleanIndicates whether the transaction was cancelled (true) or not (false).

When a POST request is made to the processing checkout endpoint, the API may return error responses with HTTP status code 422 if any validation fails. Below is a table summarizing the possible error responses:

Error CodeError MessageDescription
422Order id is not uniqueThe provided order ID is not unique. Ensure that the order ID used in the request has not been used before.
422This value should not be blank.A required field (such as amount or wallet_to) is missing a value.
422Wallet to not existsThe destination wallet (wallet_to) does not exist or is inactive (e.g., deleted or in status NEW) or insufficient balance.
422Wallet from not existsThe sender wallet (wallet_from) does not exist or is inactive (e.g., deleted or in status NEW) or insufficient balance.
422This value should be of type numeric.The amount field must be numeric; non-numeric values are not allowed.
422Signature not identicalThe signature is missing or does not match the expected value. The signature must be generated in the correct sequence using SHA-256.
422Minimum amount exceeded %min% for %currency%The transaction amount is below the allowed minimum for the specified currency.
422Maximum amount exceeded %max% for %currency%The transaction amount is above the allowed maximum for the specified currency.
422Amount is not correctThe sender’s wallet does not have sufficient funds (i.e., the amount exceeds the available balance).
422Currencies are not equalsThe currencies of the sender (wallet_from) and receiver (wallet_to) wallets do not match.
422Currency is disabledThe specified currency is currently disabled and cannot be used for transactions.
422Direction not activeThe direction for the specified currency is not active at the moment
422User is blockedThe recipient’s or sender’s account has been blocked. Please check the “translation” field for more details ("server_error.sender_account_is_blocked" or "server_error.recipient_account_is_blocked").

Possible Errors When Paying on the Money-Go Website

Section titled “Possible Errors When Paying on the Money-Go Website”

For wallet top-up via POST /api/processing/pay, the following errors may occur:

CodeError MessageDescription
422Route locked to avoid duplicationThe endpoint was called twice simultaneously. The second call is blocked to prevent duplicate processing.
422Method locked please try again laterThe number of requests per minute has been exceeded. The request limit is enforced; please try again later.
422Captcha stringA captcha validation error occurred.
422Hash is not validHash validation error. This can occur if the hash is not empty and a stored hash exists (indicating the user has already completed the checkout), or if the sender’s wallet (wallet_from) owner does not match the provided hash.
422Deposit your wallet, you not have fundsThe sender’s wallet (wallet_from) does not have sufficient funds to complete the transaction.