1. Transfer
Freedom Pay
  • Overview
  • Gateway API
    • Overview
    • Sync API
      • Overview
      • Card data encryption
      • Purchase
        • Overview
        • Pay by card
        • Pay by card: complete 3DS
        • Pay by recurring profile
        • Create payment page
        • Create payment page with any amount
        • Capture payment (clearing)
        • Cancel payment
        • Refund payment
        • Get payment status
      • Payout
        • Overview
        • Pay out to card
        • Pay out to IBAN
        • Get payout balance
        • Get payout status
      • Transfer
        • Overview
        • Transfer from card to card
          POST
        • Transfer from card to card: complete 3DS
          POST
        • Get exchange rates
          POST
        • Get transfer status
          POST
      • Card storage
        • Overview
        • Save card
        • Save card: complete 3DS
        • List saved cards
        • Remove saved card
        • Get payment status
      • Token
        • Overview
        • Token Pay
        • Apple Pay
        • Google Pay
        • Token Payout
        • Get payment status
    • Async API
      • Overview
      • Create
        • Create payment
      • Read
        • Get payment status
        • Get request result
      • Edit
        • Capture payment (clearing)
        • Cancel payment (reverse)
        • Refund payment
  • Merchant API
    • Overview
    • Purchase
      • Overview
      • Checkout
      • Card token
        • Overview
        • Tokenize card
        • Delete token
        • Card token list
        • Create payment (with CVC)
        • Confirm payment (with CVC)
        • Create payment
        • Confirm payment
      • Create payment
      • Any amount
      • Reccuring payment
      • Cancel payment
      • Clearing
      • Refund payment
      • Status
    • Payout
      • Overview
      • Card token
        • Tokenize card
        • Delete token
        • Card token list
        • Create payment
      • Create payment
      • IBAN
      • Balance status
      • Status
    • Mobile balance
      • Overview
      • Init
      • Pay
      • Approve
      • Resend code
      • Status
    • Invoice
      • Overview
      • Recurring profile
        • Overview
        • Create
        • Cancel
        • Info
        • Notify
      • Tips
        • Overview
        • Create
      • Create
      • Execute
      • Info
      • Refund
      • Status
      • Cancel
    • SDK
      • JS SDK
      • Merchant SDK
        • Google Pay
        • 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
    • Installment
      • Overview
      • Status
        • Application Status
        • Application Callback Status
        • Application Change Status
      • Get partners
      • Create application
    • Redirect back
      POST
    • Result notify
      POST
    • Payout notify
      POST
    • Check request
      POST
  • Partner API
    • 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. Transfer

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.

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.—
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 the table «Errors».

Transfer flow#

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.Check the signature with the secret key.
1101pg_merchant_id is not found. The response is not signed.Check the merchant ID.
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