1. Recurring profile
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
        • Transfer from card to card: complete 3DS
        • Get exchange rates
        • Get transfer status
      • 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
    • Mobile balance
      • Overview
      • Init
      • Pay
      • Approve
      • Resend code
      • Status
    • Invoice
      • Overview
      • Recurring profile
        • Overview
        • Create
          POST
        • Execute
          POST
        • Cancel
          POST
        • Info
          POST
        • Notify
          POST
      • Tips
        • Overview
        • Create
      • Create
        POST
      • Info
        POST
      • Refund
        POST
      • Status
        POST
      • Cancel
        POST
    • 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
    • Saved cards
      • Get saved cards
      • Save card
      • Save card for payouts
      • Delete saved card
      • Save card without a charge
    • 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. Recurring profile

Create

Developing
KZ
https://api.freedompay.kz
KZ
https://api.freedompay.kz
POST
https://api.freedompay.kz
/v5/merchant/invoice/recurring/create
Creates a recurring profile: the agreement of the client to be charged later without confirming every payment.
Supported payment systems: Bybit Pay and Binance Pay.
Give the client url from the response: the client confirms the profile in the app of the payment system.
After the confirmation the profile becomes active: charge it with Execute.
Follow the status with notifications to state_callback (Notify) or with Info.

Recurring profile flow#

Result#

HTTPBodyMeaningNext step
201profile_id, urlThe profile is created with the status process.Give the client url.
201profile_id, errorThe payment system rejected the profile.See error; check the profile with Info.
400, 401, 422, 500—The request is rejected.See «Errors» below.

Errors#

The error is returned in error_description; error_code is returned for 401, 422 and for the 400 errors that have a code below.
HTTPerror_codeWhenWhat to do
4003004The invoice type or the agreement type does not support recurring payments.Use bybit or binance.
4019998The signature is invalid.Check the signature: see Overview.
4229403The X-JWS-Signature header is missing.Pass the signature.
500—A field is missing or invalid. error_description names the field.Fix the request.

Request

Header Params

Body Params application/jsonRequired

Example
{
    "invoice_type": "binance",
    "external_id": "sub1001",
    "agreement_type": "on-demand",
    "additional": {
        "scene_code": "SUBSCRIPTION"
    },
    "state_callback": "https://merchant.example.com/callback",
    "expires_at": "2027-04-30"
}

Responses

🟢201Created
application/json
Headers

Bodyapplication/json

Example
{
    "profile_id": "9f8e7d6c5b4a39281706f5e4d3c2b1a0",
    "url": "bnc://app.binance.com/mp/app?appId=A1b2C3d4E5f6G7h8&startPagePath=cGFnZXMvY29udHJhY3Qtc2lnbi9pbmRleA&startPageQuery=cHJlQ29udHJhY3RJZD0xMjM0NTY3ODk",
    "created_at": "2026-10-30T13:48:47+05:00"
}
🟠400Bad Request
🟠401Unauthorized
🟠422Unprocessable Entity
🔴500Internal Server Error
Previous
Overview
Next
Execute