1. Transfers
Freedom Pay
  • Overview
  • Gateway API
    • Overview
    • Sync API
      • Overview
      • Card data encryption
      • Payments
        • Overview
        • Pay by card
        • Pay by card: complete 3DS
        • Pay with Apple Pay
        • Pay with Google Pay
        • Pay by recurring profile
        • Create payment page
        • Create payment page with any amount
        • Capture payment (clearing)
        • Cancel payment
        • Refund payment
        • Get payment status
      • Payouts
        • Overview
        • Pay out to card
        • Pay out to IBAN
        • Get payout balance
        • Get payout status
      • Transfers
        • Overview
        • Transfer from card to card
          POST
        • Transfer from card to card: complete 3DS
          POST
        • Get exchange rates
          POST
        • Get transfer status
          POST
      • Saved cards
        • Overview
        • Save card
        • Save card: complete 3DS
        • List saved cards
        • Remove saved card
        • Pay by card token
        • Pay out to card token
        • Get payment status
    • Async API
      • Overview
      • Create
        • Create payment
        • Save card without a charge
      • Read
        • Get payment status
        • Get request result
      • Edit
        • Capture payment (clearing)
        • Cancel payment (reverse)
        • Refund payment
  • Merchant API
    • Overview
    • Payments
      • Overview
      • Checkout
      • Pay by saved card
        • Overview
        • Create payment
        • Confirm payment with CVC
        • Confirm payment without the client
      • Create payment
      • Create payment with a payment page template
      • Create payment in a payment frame
      • Create payment with any amount
      • Create recurring payment
      • Capture payment (clearing)
      • Cancel payment
      • Refund payment
      • Get payment status
    • Payouts
      • Overview
      • Create payout page
      • Pay out to saved card
      • Pay out to IBAN
      • Get payout status
      • Get payout balance
    • Saved cards
      • Get saved cards
      • Save card
      • Save card for payouts
      • Delete saved card
      • Save card without a charge
    • Mobile balance
      • Overview
      • Create mobile balance payment
      • Charge mobile balance
      • Get mobile balance payment status
      • Confirm payment with SMS code
      • Resend SMS code
    • Invoices
      • Overview
      • Recurring payments
        • Overview
        • Create recurring profile
        • Get recurring profile
        • Charge by recurring profile
        • Cancel recurring profile
        • Recurring profile notification
      • Tips
        • Overview
        • Create
      • Create invoice
      • Get invoice status
      • Get invoice details
      • Cancel invoice
      • Refund invoice
    • SDK
      • JS SDK
      • Merchant SDK
        • Android
        • iOS
    • CMS
      • Overview
      • Get Merchant ID and key
      • WordPress
        • Overview
        • Installation
        • Configuration
        • Test
        • Live payments
        • Update
      • Tilda
        • Overview
        • Installation
        • Configuration
        • Test
        • Live payments
      • InSales
        • Overview
        • Installation
        • Configuration
        • Test
        • Live payments
      • Ecwid
        • Overview
        • Installation
        • Configuration
        • Test
        • Live payments
      • Bitrix
        • Overview
        • Installation
        • Configuration
        • Test
        • Live payments
      • PrestaShop
        • Overview
        • Installation
        • Configuration
        • Test
        • Live payments
      • OpenCart
        • Overview
        • Installation
        • Configuration
        • Test
        • Live payments
      • CS-Cart
        • Overview
        • Installation
        • Configuration
        • Test
        • Live payments
    • Installment
      • Overview
      • Status
        • Get application status
        • Application status notification
        • Change application status
      • Get partners
      • Create application
    • Callbacks
      • Overview
      • Result notify
      • Check request
      • Payout notify
      • Redirect back
  • Partner API
    • Overview
    • Rates
      • Overview
      • Rates
    • Products
      • Overview
      • Dictionaries
      • Add client with product
      • Client request status
      • Create terminal
      • Update terminal limits
      • Product request status
    • E-Money
      • Overview
      • Add
      • Owner identification
      • Info
      • Close
      • Block
      • Balance
      • Statement
      • Request Status
    • Device ID
      • Android SDK
      • iOS SDK
    • Implement SuperApp
      • Overview
      • Pay
      • Refund
      • Status
    • Account
      • Overview
      • Create payment
      • Payment status
      • Batch statuses
      • Statement
      • Statement status
      • Balance
      • Balance status
    • Invoices
      • Info
  1. Transfers

Transfer from card to card

KZ
https://api.freedompay.kz
KZ
https://api.freedompay.kz
POST
https://api.freedompay.kz
/g2g/p2p/transfer
One request debits the sender card and credits the recipient card.
Sign the request with the secret key: see Sync API Overview.
If pg_3ds = 1 is returned, the client completes 3DS, then call Transfer from card to card: complete 3DS.
If pg_status = pending and pg_3ds = 0, get the result with Get transfer status.
To save a card, pass pg_user_id and pg_save_sender_card = 1 or pg_save_recipient_card = 1.
Pass the returned token in pg_card_token or pg_card_recipient_token with the same pg_user_id in the next transfers.

Transfer flow#

Special token#

The special token 2d0b504c-b95d-4cf6-b782-5a7d13ab2c85 skips one part of the transfer.
In pg_card_token: only the credit to the recipient card is made; the sender card is not debited.
In pg_card_recipient_token: only the debit from the sender card is made; nothing is credited.
pg_user_id is required when the special token is passed.

Result#

pg_statusMeaningNext step
okThe transfer is made.Nothing else is needed.
pending, pg_3ds = 13DS is required.Open pg_3d_acsurl for the client, then call Transfer from card to card: complete 3DS.
pending, pg_3ds = 0The transfer is in process.Get the result with Get transfer status.
error with pg_payment_idThe transfer is declined.See pg_error_code.
error without pg_payment_idThe request is rejected.See «Errors» below.

Errors#

The HTTP status is always 200; the error is returned in pg_error_code and pg_error_description.
pg_error_codeWhenWhat to do
94031A field has an invalid value: currency, card token, or a card is saved without pg_user_id.Fix the request.
11005pg_amount and pg_amount_to are not passed, or the amount is out of range.Pass a valid amount.
10000A required field is not passed, for example a currency.Fix the request.
1100The signature is missing or invalid, or pg_merchant_id is not found. If the merchant is not found, the response is not signed.Check the merchant ID and the signature with the secret key.
10017The sender card is expired.Ask the client for another card.
10045The bank declined the card for security reasons.Ask the client to contact the bank.
Other codesThe payment system declined the transfer.See Error codes.

Request example#

Transfer by card details: required fields only. pg_sig is calculated with the secret key test_secret_key.
Line breaks in the body are added for readability: send the body as one line.

Request

Body Params multipart/form-data

Responses

🟢200Success
application/xml
Bodyapplication/xml

Examples
<?xml version="1.0" encoding="utf-8"?>
<response>
    <pg_payment_id>1019073901280</pg_payment_id>
    <pg_order_id>tr-b9258acb</pg_order_id>
    <pg_payment_amount>1000</pg_payment_amount>
    <pg_status>ok</pg_status>
    <pg_currency_from>KZT</pg_currency_from>
    <pg_payment_date>2026-10-19 17:14:17</pg_payment_date>
    <pg_payment_status>success</pg_payment_status>
    <pg_3ds>0</pg_3ds>
    <pg_card_mask>4400-44XX-XXXX-4440</pg_card_mask>
    <pg_payout_amount>1000</pg_payout_amount>
    <pg_currency_to>KZT</pg_currency_to>
    <pg_card_recipient_mask>4400-44XX-XXXX-4440</pg_card_recipient_mask>
    <pg_datetime>2026-10-19T12:14:17+00:00</pg_datetime>
    <pg_salt>bp8wSyLBBvZ7REx3</pg_salt>
    <pg_sig>0375fe3ccdf4638862c5092c7fe00f7c</pg_sig>
</response>
🟢200Error
Previous
Overview
Next
Transfer from card to card: complete 3DS