Subscription Transactions
The services included in the subscription transactions are listed below.
Initialize Subscription
If you have completed all the steps, you can now start the subscription process.
Subscription can be started in 2 different ways.
Both methods above give the same result, but there is a difference in the way they are used.
The subscription process always starts with an ACTIVE or PENDING status. If the status is PENDING or the status is ACTIVE but a trial period is specified in the payment plan, iyzico only validates the card in the subscription request. Card validation takes place with a 1 TL withdrawal and subsequent refund. Apart from this, no transaction or payment takes place.
If the subscription status is ACTIVE and no trial period is specified in the planning, the payment specified in the plan is taken from the card and the subscription is started.
Each subscription requires a card information. Your customers can start a subscription with the cards they have stored in the iyzico environment or with a new card. When requesting a card update, the subscriptionReferenceCode
of the relevant subscription must be sent. In this case, only the card information of the relevant subscription will be updated.
Table of Subscription Status
DURUMU | AÇIKLAMA |
---|---|
ACTIVE | Bir abonelik aktif ise ve ödemeler düzenli olarak alınıyorsa status active olur. |
PENDING | Bir abonelik durdurulmuşsa status pending olur. |
UNPAID | Abonelik sırasında ödeme alınamamış ise status unpaid olur. |
UPGRADED | Abonelik başka bir plan ile güncellenmişse status upgraded olur. |
CANCELED | Abonelik iptal edilmişse status cancelled olur. |
EXPIRED | Abonelik periyodu bitmişse status expired olur. Karttan başka bir ödeme alınmaz. |
Initializing Subscription via Checkout Form
To create a checkout form, merchants must submit the following information.
Payment Plan Reference Code
Customer information
Subscription Status
CallBackURL (the address where the Checkout Form result will be posted)
CallBackUrl
is given by member merchants during the request and determines the page to which the end user will be directed after payment. Redirection occurs as soon as the customer makes the payment. At this point, the payment request was sent to the bank and the result was processed by iyzico. The member business must check whether the payment has been received with a separate request. If the card validation or first payment is successful, all other processes are carried out by iyzico.
If your customer has a card stored in the iyzico environment, the option to pay with a stored card will appear on the checkout form. In this case, our member businesses do not need to send an additional request.
Via iyzico Checkout Form, an htmlContent
parameter is returned as a result of the form creation request. When this javascript code snippet is printed on the page, the iyzico library is ready to be loaded into any of the “divs” mentioned below. The checkout form will appear when the page is completely loaded.
The divs where the checkout form will be loaded can be responsive or popup. Examples are given below.
Initialize Subscription via CheckoutForm
POST
https://api.iyzipay.com/v2/subscription/checkoutform/initialize
Request Body
Name | Type | Description |
---|---|---|
locale | String | iyzico istek sonucunda dönen metinlerin dilini ayarlamak için kullanılır. Varsayılan değeri TR. |
conversationId | String | İstek esnasında gönderip, sonuçta alabileceğiniz bir değer, request/response eşleşmesi yapmak için kullanılabilir. En yaygın kullanış biçimi üye iş yerinin abonelik numarasıdır. |
callbackUrl* | String | Ödeme sonucunun post edileceği url adresi. |
shippingAddress.contactName* | String | Kargo iletişim ismi. |
shippingAddress.country* | String | Kargo ülkesi. |
shippingAddress.city* | String | Kargo şehri. |
shippingAddress.zipCode | String | Kargo zip kodu. |
shippingAddress.address* | String | Kargo adresi. |
billingAddress.contactName* | String | Fatura iletişim ismi. |
billingAddress.country* | String | Fatura adresi. |
billingAddress.city* | String | Fatura şehri. |
billingAddress.zipCode | String | Fatura zip kodu. |
billingAddress.address* | String | Fatura adresi. |
identityNumber* | String | Müşteri telefon numarası. |
gsmNumber* | String | Müşteri email adresi. |
email* | String | Müşteri kimlik numarası. |
surname* | String | Müşteri soyadı. |
name* | String | Müşteri adı. |
subscriptionInitialStatus | String | Abonelik başlangıç durumu (PENDING veya ACTIVE) |
pricingPlanReferenceCode* | String | Abonelikte uygulanacak plan referans kodu. |
Initialize Subscription with Payment Form Returning Parameters
Parametre ismi | Tip | Açıklama |
---|---|---|
status | String | Yapılan isteğin sonucunu belirtir. Aboneliğin başarılı şekilde başlaması durumunda success değeri döner. |
systemTime | Long | Dönen sonucun o anki unix timestamp değeridir. |
checkoutFormContent | String | Checkout formun gösterilmesi için gerekli javascript html kodu. |
token | String | Checkout form için oluşturulan tekil değer. Her istek için özel üretilir ve işyerine dönülür. Abonelik detaylarını öğrenmek için kullanılmalıdır. |
tokenExpireTime | StringInteger | Checkout form için üretilmiş olan token değerinin geçerlilik süresi. |
Retrieve Checkout Form Result
When the end user enters his credit card information or completes the payment with his reserved card, if the transaction is successful, the page is redirected to the callBackUrl
address specified in the init request. Token information is also sent to this address via the post method. You can get the token value you will use in this query as soon as you create the payment form (init) or from the post data sent to your callbackUrl
address.
Retrieve Checkout Form
POST
https://api.iyzipay.com/v2/subscription/checkoutform/{{ token }}
Request Body
Name | Type | Description |
---|---|---|
token* | String | Checkout form için oluşturulan tekil değer. Her istek için özel üretilir ve işyerine dönülür. Abonelik sonucunu öğrenmek için zorunlu bir alandır. |
Retrieve Checkout Form Response
Parametre ismi | Tip | Açıklama |
---|---|---|
status | String | Yapılan isteğin sonucunu belirtir. İşlem başarılı ise success değeri döner. |
systemTime | Integer | Dönen sonucun o anki unix timestamp değeridir. |
referenceCode | String | Abonelik için üretilen eşsiz referans kodu. |
parentReferenceCode | String | Abonelik güncellemelerinde üye işeyerinin eşleştirme yapılabileceği eşsiz referans kodu. |
pricingPlanReferenceCode | Integer | Aboneliğe ait plan referans kodu. |
customerReferenceCode | String | Müşteri bilgilerine istinaden oluşturulmuş eşsiz müşteri kodu. Bu kod email adresi baz alınarak oluşturulur ve müşteri işlemleri bu kod ile de yapılabilir. |
subscriptionStatus | String | Abonelik durumunu gösterir. İstek esnasında gönderilmişse, sonuçta aynen geri iletilir. Gönderilmemişse ACTIVE değeri döner. |
trialDays | Integer | Ödeme planında belirlenen deneme süresidir. Bu süreç boyunca karttan ödeme alınmaz. |
trialStartDate | Integer | Deneme süresinin başlangıç tarihini gösteren unix timestamp değeridir. |
trialEndDate | Integer | Deneme süresinin bitiş tarihini gösteren unix timestamp değeridir. |
createdDate | Integer | Abonelik oluşturulma tarihinin unix timestamp değeridir. |
startDate | Integer | Abonelik başlangıç tarihinin unix timestamp değeridir. |
Initializing Subscription via NON-3DS
Merchants can start a subscription by sending the following parameters.
Initializing Subscription via NON-3DS
POST
https://api.iyzipay.com/v2/subscription/initialize
Request Body
Name | Type | Description |
---|---|---|
locale | String | iyzico istek sonucunda dönen metinlerin dilini ayarlamak için kullanılır. Varsayılan değeri TR. |
conversationId | String | İstek esnasında gönderip, sonuçta alabileceğiniz bir değer, request/response eşleşmesi yapmak için kullanılabilir. En yaygın kullanış biçimi üye iş yerinin abonelik numarasıdır. |
shippingAddress.contactName* | String | Kargo iletişim ismi. |
shippingAddress.country* | String | Kargo ülkesi. |
shippingAddress.city* | String | Kargo şehri. |
shippingAddress.zipCode | String | Kargo zip kodu. |
shippingAddress.address* | String | Kargo adresi. |
billingAddress.contactName* | String | Fatura iletişim ismi. |
billingAddress.country* | String | Fatura adresi. |
billingAddress.city* | String | Fatura şehri. |
billingAddress.zipCode | String | Fatura zip kodu. |
billingAddress.address* | String | Fatura adresi. |
identityNumber* | String | Müşteri telefon numarası. |
gsmNumber* | String | Müşteri email adresi. |
email* | String | Müşteri kimlik numarası. |
surname* | String | Müşteri soyadı. |
name* | String | Müşteri adı. |
subscriptionInitialStatus | String | Abonelik başlangıç durumu (PENDING veya ACTIVE) |
pricingPlanReferenceCode* | String | Abonelikte uygulanacak plan referans kodu. |
paymentCard.consumerToken | String | Saklı kartın kullanılabilmesi için kullanıcı için oluşturulmuş token. Geçerlilik süresi 30 dakikadır. |
paymentCard.cardToken | String | Seçilen karta ait token. |
paymentCard.ucsToken | String | Kartın iyzico ortamında çözümlenmesi için kullanıcı için oluşturulmul değer. Geçerlilik süresi 30 dakikadır. |
paymentCard.registerConsumerCard* | Boolean | Kartın saklanması için gerekli değer. True gönderilmelidir. Kartın iyzico ortamında saklanacağının onayı alınamlı. detaylı bilgi için iyzico korumalı kart saklama dökümanını inceleyeniz. |
paymentCard.cvc | String | Kart CVC kodu |
paymentCard.expireMonth | String | Kart son kullanma ayı |
paymentCard.expireYear | String | Kart son kullanma yılı. |
paymentCard.cardNumber | String | Kredi kartı numarası. |
paymentCard.cardHolderName | String | Kart sahibi adı ve soyadı. |
If a subscription is to be started with a new card, the registerConsumerCard
parameter must be sent to true along with the card information. In addition, approval must be obtained from the customer that his card will be stored in the iyzico environment.
If a subscription is to be initiated with a reserved card, ucsToken
, cardToken
, consumerToken
information must be sent.
Initializing Subscription via NON-3DS Response Parameters
Parametre ismi | Tip | Açıklama |
---|---|---|
status | String | Yapılan isteğin sonucunu belirtir. İşlem başarılı ise success değeri döner. |
systemTime | Integer | Dönen sonucun o anki unix timestamp değeridir. |
referenceCode | String | Abonelik için üretilen eşsiz referans kodu. |
parentReferenceCode | String | Abonelik güncellemelerinde üye işeyerinin eşleştirme yapılabileceği eşsiz referans kodu. |
pricingPlanReferenceCode | Integer | Aboneliğe ait plan referans kodu. |
customerReferenceCode | String | Müşteri bilgilerine istinaden oluşturulmuş eşsiz müşteri kodu. Bu kod email adresi baz alınarak oluşturulur ve müşteri işlemleri bu kod ile de yapılabilir. |
subscriptionStatus | String | Abonelik durumunu gösterir. İstek esnasında gönderilmişse, sonuçta aynen geri iletilir. Gönderilmemişse ACTIVE değeri döner. |
trialDays | Integer | Ödeme planında belirlenen deneme süresidir. Bu süreç boyunca karttan ödeme alınmaz. |
trialStartDate | Integer | Deneme süresinin başlangıç tarihini gösteren unix timestamp değeridir. |
trialEndDate | Integer | Deneme süresinin bitiş tarihini gösteren unix timestamp değeridir. |
createdDate | Integer | Abonelik oluşturulma tarihinin unix timestamp değeridir. |
startDate | Integer | Abonelik başlangıç tarihinin unix timestamp değeridir. |
Activate Subscription
A subscription in pending status can be activated with this request
Activate Subscription
POST
https://api.iyzipay.com/v2/subscription/subscriptions/{subscriptionReferenceCode}/activate
Request Body
Name | Type | Description |
---|---|---|
subscriptionReferenceCode* | String | Eşsiz abonelik referans numarası |
Activate Subscription Response Parameters
Parametre ismi | Tip | Açıklama |
---|---|---|
status | String | Yapılan isteğin sonucunu belirtir. İşlem başarılı ise success değeri döner. |
systemTime | Long | Dönen sonucun o anki unix timestamp değeridir. |
Retry Subscription Payment
If a payment has failed during the subscription period, this request can be used to renew the transaction and collect the payment.
Retry Subscription Payment
POST
https://api.iyzipay.com/operation/retry
Request Body
Name | Type | Description |
---|---|---|
referenceCode* | String | Başarısız ödemenin referans kodu |
Retry Subscription Payment Response Parameters
Parametre ismi | Tip | Açıklama |
---|---|---|
status | String | Yapılan isteğin sonucunu belirtir. İşlem başarılı ise success değeri döner. |
systemTime | Long | Dönen sonucun o anki unix timestamp değeridir. |
Upgrade Subscription
It is possible to change or upgrade the subscription plan during the subscription period. The only necessary condition for this is that the new plan to be updated must belong to the existing product to which the subscription is linked.
PaymentInterval
and PaymentIntervalCount
parameters of the plans to be updated must be the same.
Upgrade Subscription
POST
https://api.iyzipay.com/v2/subscription/subscriptions/{subscriptionReferenceCode}/upgrade
Request Body
Name | Type | Description |
---|---|---|
subscriptionReferenceCode* | String | Eşsiz abonelik referans numarası |
resetRecurrenceCount | Boolean | Eğer TRUE gönderilirse ve yeni plan recurrence count değerine sahipse abonelik sonlanma süresi yeni değere göre hesaplanır. Eğer FALSE gönderilirse önceki planın sonlanma tarihi yeni plana aktarılır. |
useTrial | Boolean | Eğer TRUE gönderilir ise deneme süreci dahil edilir. |
upgradePeriod | String | Abonelik güncelleme tarihi. |
newPricingPlanReferenceCode | String | Yeni plan referens numarası. |
Upgrade Subscription Response Parameters
Parametre ismi | Tip | Açıklama |
---|---|---|
status | String | Yapılan isteğin sonucunu belirtir. İşlem başarılı ise success değeri döner. |
systemTime | Long | Dönen sonucun o anki unix timestamp değeridir. |
Cancel Subscription
This request cancels an active subscription.
Cancel Subscription
POST
https://api.iyzipay.com/v2/subscription/subscriptions/{subscriptionReferenceCode}/cancel
Request Body
Name | Type | Description |
---|---|---|
locale | String | Yapılan isteğin sonucunu belirtir. İşlem başarılı ise success değeri döner. |
subscriptionReferenceCode* | String | Abonelik referans numarası. |
conversationId | String | Dönen sonucun o anki unix timestamp değeridir. |
Cancel Subscription Response Parameters
Parametre ismi | Tip | Açıklama |
---|---|---|
status | String | Yapılan isteğin sonucunu belirtir. İşlem başarılı ise success değeri döner. |
systemTime | Long | Dönen sonucun o anki unix timestamp değeridir. |
Subscription Details
All details of a subscription can be seen with this request.
Subscription Details
GET
https://api.iyzipay.com/v2/subscription/subscriptions/{subscriptionReferenceCode}
Request Body
Name | Type | Description |
---|---|---|
subscriptionReferenceCode | String | Abonelik refereans numarası |
Subscription Details Response Parameters
Parametre ismi | Tip | Açıklama |
---|---|---|
status | String | Yapılan isteğin sonucunu belirtir. İşlem başarılı ise success değeri döner. |
systemTime | Integer | Dönen sonucun o anki unix timestamp değeridir. |
referenceCode | String | Abonelik için üretilen eşsiz referans kodu. |
parentReferenceCode | String | Abonelik güncellemelerinde üye işeyerinin eşleştirme yapılabileceği eşsiz referans kodu. |
pricingPlanReferenceCode | Integer | Aboneliğe ait plan referans kodu. |
customerEmail | String | Müşteri email adresi. |
customerReferenceCode | String | Müşteri bilgilerine istinaden oluşturulmuş eşsiz müşteri kodu. Bu kod email adresi baz alınarak oluşturulur ve müşteri işlemleri bu kod ile de yapılabilir. |
subscriptionStatus | String | Abonelik durumunu gösterir. İstek esnasında gönderilmişse, sonuçta aynen geri iletilir. Gönderilmemişse ACTIVE değeri döner. |
trialDays | Integer | Ödeme planında belirlenen deneme süresidir. Bu süreç boyunca karttan ödeme alınmaz. |
trialStartDate | Integer | Deneme süresinin başlangıç tarihini gösteren unix timestamp değeridir. |
trialEndDate | Integer | Deneme süresinin bitiş tarihini gösteren unix timestamp değeridir. |
createdDate | Integer | Abonelik oluşturulma tarihinin unix timestamp değeridir. |
startDate | Integer | Abonelik başlangıç tarihinin unix timestamp değeridir. |
Subscriptions
This request allows access to subscription information and payments with different search parameters.
Subscriptions
GET
https://api.iyzipay.com/v2/subscription/subscriptions
Request Body
Name | Type | Description |
---|---|---|
subscriptionReferenceCode | String | Abonelik referans kodu. |
count* | Integer | Sayfa başına kaç abonelik listelenceğini belirtir. |
page * | Integer | Belirtilen sayfa için abonelik detaylarını getirir. |
endDate | Date | Abonelik bitiş tarihi. |
startDate | Date | Abonelik başlangıç tarihi. |
subscriptionStatus | String | Abonelik durumu. |
pricingPlanReferenceCode | Boolean | Abonelikte kullanılan plan refereans numarası. |
customerReferenceCode | String | Müşteri referans kodu. |
parentReferenceCode | String | Abonelik güncellemelerinde üye işeyerinin eşleştirme yapılabileceği eşsiz referans kodu. |
Subscriptions Response Parameters
Parametre ismi | Tip | Açıklama |
---|---|---|
status | String | Yapılan isteğin sonucunu belirtir. İşlem başarılı ise success değeri döner. |
systemTime | Long | Dönen sonucun o anki unix timestamp değeridir. |
totalCount | String | Toplam kaç tane sonuç geldiğini belirtir. |
currentPage | Integer | Hangi sayfa için listeleme yapıldığını belirtir. |
pageCount | Integer | Toplam kaç sayfa sonuç geldiğini belirtir. |
items | Array Object | Abonelik detaylarını içeren dizidir. |
Subscription Card Update
With this request, the credit card used in a subscription can be updated. Member businesses can easily update card information in cases such as payment errors or card expiration dates. A payment of 1 TL is charged for the validation of the updated credit card and is refunded immediately.
Subscription Card Update
POST
https://api.iyzipay.com/v2/subscription/card-update/checkoutform/initialize
Request Body
Name | Type | Description |
---|---|---|
locale | String | Yapılan isteğin sonucunu belirtir. İşlem başarılı ise success değeri döner. |
callBackUrl* | String | Ödeme sonucunun post edileceği url adresi. |
subscriptionReferenceCode* | String | Abonelik referans numarası. |
conversationId | String | Dönen sonucun o anki unix timestamp değeridir. |
Subscription Card Update Response Parameters
Parametre ismi | Tip | Açıklama |
---|---|---|
status | String | Yapılan isteğin sonucunu belirtir. İşlem başarılı ise ve kart update edilmiş ise success değeri döner. |
systemTime | Long | Dönen sonucun o anki unix timestamp değeridir. |
checkoutFormContent | String | Checkout formun gösterilmesi için gerekli javascript html kodu. |
token | String | Checkout form için oluşturulan tekil değer. Her istek için özel üretilir ve işyerine dönülür. |
tokenExpireTime | Integer | Checkout form için üretilmiş olan token değerinin geçerlilik süresi. |
Merchants can send the locale and conversationId parameters in all requests, but this is not mandatory. The locale parameter determines the language of the response. If specified as “EN”, error messages will be received in English. Conversation id is a value that software developers can use to match requests and responses. If this parameter is sent, the same value will be received in the response.
With this request, a checkout form is created and when the customer makes the payment, token information is sent to the specified callBackUrl
address. In this case, the card has been updated successfully.
Last updated