Money transfers
In addition, you can use the article Money transfer that provides a general description of processing money transfers in the Flashpay payment platform and covers information about operations utilised to execute a payment of this type and statuses that are assigned to the payment and the operations performed within it.
Overview
Money transfer is a payment type which uses one request to initiate debiting funds from the sender and subsequently crediting these funds to the recipient. Money transfers can be sent from one customer to another as well as between the different payment instruments of the same customer. Different payment instruments can be used for debiting and crediting, and the merchant always acts as a provider of the service for such transfers.
Available workflows
To initiate money transfer processing through Gate, the web service is required to do the following:
- Send a request to the /v2/payment/money_transfer endpoint.
- If necessary, complete an additional procedure (for example, the 3‑D Secure authentication).
- Receive a callback with the money transfer result from the payment platform.
The following diagram illustrates the money transfer processing workflow (without completion of additional procedures).
- A customer (the sender of the money transfer) initiates the money transfer.
- The web service sends a request for money transfer to a URL specified by Flashpay.
- The payment platform receives the request.
- The payment platform accepts the request and performs its validity check.
- The payment platform sends a validity check response to the merchant's web service.
- The request is processed in the payment platform.
- A request for debiting funds is sent by the payment platform to the payment system of the sender.
- The request for debiting funds is processed by the payment system of the sender.
- The information about the result is sent from the payment system of the sender to the payment platform.
- The payment platform processes the result.
- A request for crediting funds is sent by the payment platform to the payment system of the recipient.
- The request for crediting funds is processed by the payment system of the recipient.
- The information about the result is sent from the payment system of the recipient to the payment platform.
- The payment platform sends a callback with the information about the result to the merchant's web service.
- The web service notifies the customer about the result of the money transfer processing.
Request format
When creating a request for money transfer processing, follow the specification of the /v2/payment/money_transfer endpoint. As for a card-to-card transfer (which can be regarded as a typical use case), consider the following:
- Send the request to the /v2/payment/money_transfer endpoint.
- The request must contain the following objects and parameters:
general—the object containing the general identification information of the request:project_id—the project identifier assigned by Flashpay at the stage of integrationpayment_id—the payment identifier unique within the merchant projectsignature—the request signature generated after all required parameters have been specified (for more information, see Signature generation and verification)
customer—the object containing the sender information:id—the identifier of the customer (money transfer sender) within the merchant project;ip_address—the customer's IP address relevant for the initiated requestcountry—the country code in the customer's address in ISO 3166-1 alpha-2city—the place of residence (e.g., town, city, or other settlement type) in the customer's addressfirst_name—the first name of the customerlast_name—the last name of the customerzip—the postal or zip code in the customer's addressaddress—the name of the street and the house number (including any additional parts of the address such as building indicators and apartment numbers) in the customer's address, separated by a commaphone—the sender's phone number that must be passed if the funds are credited to a Visa card issued in Brazil or Qatar
recipient_customer—the object containing the recipient information:first_name— the first name of the recipientlast_name— the last name of the recipientphone— the phone number of the recipientemail— email address of the recipient.
payment—the object containing the money transfer information:sender_payment_method—the code of the payment method for debitrecipient_payment_method—the code of the payment method for creditsender_amount—the amount to be debited from the sender in minor currency unitssender_currency—the currency code for the debited amount in ISO-4217 alpha-3recipient_amount—the amount to be credited to the recipient in minor currency unitsrecipient_currency—the currency code for the credited amount in ISO-4217 alpha-3
- The request must contain the sender's payment instrument information. When sending the actual card details, include the following parameters in the
senderobject:pan—the number of the payment card (specified as is, without masked characters, spaces, or other separators)year—the year when the card expires (in four-digit format YYYY according to the Gregorian calendar)month—the month when the card expires (provided as a number without a leading zero)card_holder—the sender's first and last name (as specified on the card)cvv—card verification code
- The request must contain the following information about the recipient's payment instrument. When sending the actual card details, include the following parameters in the
recipientobject:pan—the number of the payment card (specified as is, without masked characters, spaces, or other separators);card_holder—the recipient's first and last name (as specified on the card).
- If necessary, you can also add any other additional parameters and objects specified in the API specification.
Thus, a correct request for processing a card-to-card money transfer contains project and payment identifiers, the signature, information about the money transfer sender, the sender’s and the recipient’s payment instruments, the payment methods, amounts, and currency codes for debit and credit operations.
{
"general":{
"project_id": 440694,
"payment_id": "ORDER_9777113840",
"signature": "QsbTriwuNYLzqDYMm/roHPirhlvRpsuCm4yt0yiWNhWviXsmTvE8TKjsEdzQXrakGLIzA1G/eHzOno5HQLEusA=="
},
"recipient":{
"number": "4242424242424242"
},
"sender":{
"pan":"4314220000000056",
"year":2024,
"month":10,
"card_holder":"Gio Boccaccio",
"cvv":"334"
},
"payment":{
"sender_amount": 10000,
"sender_currency": "RUB",
"sender_payment_method":"card",
"recipient_amount": 10000,
"recipient_currency": "TRY",
"recipient_payment_method":"bank-transfer/turkey"
},
"customer":{
"id": "Vally",
"first_name": "Orhan",
"last_name": "Pamuk",
"ip_address": "1.0.4.0"
},
"recipient_customer":{
"first_name": "Fatma",
"last_name": "Aliye",
"phone": "3572437356",
"email": "test@example.com"
}
}
Callback format
Money transfer results are communicated via standard format callbacks To learn more, see Handling callbacks.
The following example shows that the money transfer has been completed.
{
"payment": {
"date": "2025-07-11T12:17:54+0000",
"method": "card",
"sum":{ //money transfer amount and currency
"amount": 110340,
"currency": "KGS"
},
"id": "TEST-a758f-d60e1fbedac9",
"type": "money_transfer",
"status":"success", //payment status
"description": ""
},
"customer": {
"id": "id_123"
},
"project_id": 123456,
"transaction_id": 4229011111725,
"account": {
"token": "8ebc66******5bda"
},
"operation": {
"provider": {
"id": 17171,
"payment_id": "",
"auth_code": "",
"endpoint_id": 17171
},
"id": 4223333361,
"type": "payout",
"status": "success", //operation status
"date": "2025-07-11T12:17:54+0000",
"sum_initial": { //debited amount and currency
"amount": 110340,
"currency": "KGS"
},
"created_date": "2025-07-11T12:13:20+0000",
"request_id": "136b7768d6d0f61ce0b37df10db5d31e2c583b3b-6119161ce395c4f85580ce8564cd5c33fa93af79-00004230",
"sum_converted": {
"amount": 110340,
"currency": "KGS"
},
"code": "0",
"message": "Success",
"provider_result_message": "4438605b-7ed5-4b8a-b8b6-c1e432bdd49a"
},
"signature": "hcRRMWCZVFn2EMJF/DyioPnI0A7Rx8/pd8/RxCpfR925AzD********E2MNYJS+6ggxIrA=="
}
The following example shows that the operation to debit funds from the sender's card has been declined.
{
"payment": {
"date": "2025-07-03T12:46:46+0000",
"method": "card",
"sum": { //money transfer amount and currency
"amount": 1581370,
"currency": "KGS"
},
"id": "c6b9a212-49c8-46c1-a2ef-723a7bc7913b",
"type": "money_transfer",
"status": "decline", //payment status
"description": ""
},
"customer": {
"id": ""
},
"project_id": 123456,
"transaction_id": 32474444442133,
"operation": {
"provider": {
"id": 1234,
"payment_id": "",
"auth_code": "",
"endpoint_id": 12345
},
"id": 32474555552133,
"type": "sale",
"status": "decline", //operation status
"date": "2025-07-03T12:46:46+0000",
"sum_initial": { //debited amount and currency
"amount": 1450000,
"currency": "RUB"
},
"created_date": "2025-07-03T12:46:44+0000",
"request_id": "e9ce08af7b59ded5ab566ffa5414adbee41e5ca7-b3c212f516a734808d43261bc4b9b16c8879bb27-00032474",
"sum_converted": { //debited amount after conversion
"amount": 1450000,
"currency": "RUB"
},
"code": "402",
"message": "RCS reject. Declined by Risk System",
"provider_result_message": "Reject. User is Blacklisted"
},
"signature": "7e4BiLc++RpdU6JF7EpFXMQs+9E2x+vojwhFN*****TyoXByY237YhObdilSkPtyoQ=="
}
The following example shows that the operation to credit funds to the recipient's card has been declined and the cancellation of debiting has been completed.
{
"payment": {
"date": "2025-07-11T12:09:23+0000",
"method": "card",
"sum": { //money transfer amount and currency
"amount": 10340,
"currency": "KGS"
},
"id": "b9f12d84-7fe8-432a-960c-43f944d7baa6",
"type": "money_transfer",
"status": "refunded", //payment status
"description": ""
},
"customer": {
"id": "12345"
},
"project_id": 123456,
"transaction_id": 8863012221737,
"account": {
"token": "3185c5******fec8"
},
"operation": {
"provider": {
"id": 1234,
"payment_id": "TEST_12334",
"auth_code": "",
"endpoint_id": 12345,
"date": "2025-07-11T15:09:13+0000"
},
"id": 8863013331737,
"type": "refund",
"status": "success", //operation status
"date": "2025-07-11T12:09:23+0000",
"sum_initial": { //debited amount and currency
"amount": 100000,
"currency": "RUB"
},
"created_date": "2025-07-11T12:09:11+0000",
"request_id": "refund_6870fee7dfdb46.45981500-00008864",
"sum_converted": { //debited amount after conversion
"amount": 100000,
"currency": "RUB"
},
"code": "0",
"message": "Success",
"provider_result_message": "Successful financial transaction"
},
"signature": "ifl3yDCTJ5ycd0RXAKBavEhvnaQvXy5******HaHDT371+xp0G6cQzR/ODTSb5IdUICQg9fA=="
}