I'm testing an auto-renewed subscription in my app via TestFlight.
The problem is that I can't find anywhere to cancel the subscription.
If I go to Settings -> App Store -> Apple ID under "Sandbox account" -> Manage, it shows the subscription as Expired (since yesterday). However when I query verifyReceipt with exclude-old-transactions set to true, it still gives a status of 0, meaning the transaction is valid.
Am I not verifying this correctly ?
Subscriptions
RSS for tagGive users access to content, services, or premium features in your app on an ongoing basis with subscriptions, a type of in-app purchase.
Posts under Subscriptions tag
200 Posts
Sort by:
Post
Replies
Boosts
Views
Activity
Hello,
Until this year, every time I renewed my Apple Developer Program subscription, I received a PDF invoice with my VAT ID that I could provide to my accountant.
This year, however, when I renewed my subscription in September, I only received an "Email Invoice", which is not a valid invoice - it does neither contain my VAT ID nor info about the Apple legal entity.
All the years the invoices had this entity on them:
Apple Distribution International Ltd.
Hollyhill Industrial Estate Hollyhill, Cork
Ireland
DIČ: CZ682980583
Can anybode help me on how I gen get hold of a proper PDF invoice?
Hello All,
I was just reviewing some market research within the app store specifically in sales maps and found that a lot of apps offer alternative payment methods, or/and make it really hard to pay within Apple's eco-system. They do offer links to alternative payment methods mostly stripe for subscriptions.
I read the Apple's policy on subscriptions, and could not find any details around it.
Here is the payment flow that those apps are using:
User signs up with email, they put user in free 7 day trial. Under the user's profile there is a payment external link that opens external web url to submit a payment.
Is it allowed by Apple?
Thank you!
Hi there,
When our app's subscription product's price is increased, the notification is sent to subscribers under any conditions?
The descriptions about this notification are different from the news in 8th March and App Store Connect's document, but which one is correct now?
Apple support's news: https://support.apple.com/en-us/HT213252
AppStoreConnect document:
https://developer.apple.com/help/app-store-connect/manage-subscriptions/manage-pricing-for-auto-renewable-subscriptions#:~:text=Consent%20needed-,If%20any%20of%20the%20following%20applies%2C%20subscribers%20must%20consent%20to%20the,or%20foreign%20exchange%20rates.)%20View%20a%20list%20of%20thresholds%20per%20storefront.,-The%20subscriber%20experienced
Thanks,
I have recently set up subscription flow on app.
I have configure the subscription with Pricing and an introductory offer of free trial.
Submitted the version of app and got it approved.
Now I'm trying to release the next phase with loaded features...
But this time when I try to test the same via testflight, the free trial introductory offer(which is still active) isn't showing up against the subscription plan.
Same happens in Sandbox environment as well.
Need some help to get that free trial option to show up on the subscription pop-up screen.
TIA
Hello everyone guys, we have created offer codes for our app, and my question is:
Are we, as developers, obligated to finish somehow these offer codes, like we do with subscription, for example, with App Store Server Notifications? Or Apple makes sure that everything is being proceeded on the backend?
While testing to use offer codes, we have noticed that expiration date of introductionary offer of subscription doesn't change when we fetch info from api.storekit.itunes.apple.com/inApps/v1/subscriptions , even though the offer code was used. (the offer code is configured to be "customers can redeem both an introductory offer and this code"). Is it intended to be like this, or we miss on something?
Thank you in advance!
I have recently set up subscription flow on app. I have configure the subscription with Pricing and an introductory offer of free trial. Submitted the version of app and got it approved.
Now I'm trying to release the next phase with loaded features... But this time when I try to test the same via testflight, the free trial introductory offer(which is still active) isn't showing up against the subscription plan. Same happens in Sandbox environment as well.
Need some help to get that free trial option to show up on the subscription pop-up screen.
Hello. We have a monthly auto-renewable subscription in our app. I would like to know if there's a way of contacting the subscribers from outside the app. My hope is a list of apple-id / emails. Is there a recommended way of doing this?
Regards
Hi Everyone,
We are currently in the process of implementing the "redeem offer code" feature in our application. We have tested it with the latest version of our application, which is available on the App Store as version 6.94.1. During testing, we encountered some issues with iOS 15.6 devices. Specifically, on iOS 15.6 devices, after redeeming the code using the code redemption sheet, we do not receive any callbacks in the "updatedTransactions" function. However, with other iOS versions, we receive the callbacks correctly, allowing us to display the successful subscription UI based on the latest receipt.
We present the redeem sheet using the following code:
SKPaymentQueue.default().presentCodeRedemptionSheet()
We listen for updated transactions using the following function:
func paymentQueue(_: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction])
If anyone knows of a solution for this issue, please share it. Your assistance would be greatly appreciated.
Thank you.
Hi Everyone,
I've been working on implementing the code redemption sheet in our iOS application. I've successfully redeemed the code using the code redemption sheet. However, after redeeming the code, the redemption sheet displays an "Open Application" button. When I attempt to click on this button, it remains unresponsive, and nothing happens. Everything works correctly once I dismiss the redemption sheet using the cancel button.
The main issue here I am facing is that the "Open Application" button on the redemption sheet is not functioning as expected.
we are presenting the code redemption sheet using the below code.
SKPaymentQueue.default().presentCodeRedemptionSheet()
Listening to the updated transactions using the below function.
func paymentQueue(_: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction])
I have tested it with iOS 16 and 17 devices, and the issue persists on both devices. If anyone knows of a solution for this issue, please share it. Your assistance would be greatly appreciated.
This week I released an app with an IAP and subscription in.
Whilst I'd be stunned if anyone had subscribed, I'd like to at least confirm that.
However, in App Store Connect, apparently I should have a "Subscription Summary" according to this article here: https://developer.apple.com/help/app-store-connect/view-sales-and-trends/view-subscription-data
But I don't have one:
Is there any criteria you have to hit to see the subscriptions?
Dear Apple Support,
I hope this email finds you well. I am writing to express my concern regarding a critical issue with my account subscription which expired 2 days earlier than expected. I attempted to renew my subscription within the 30-day grace period, as per the terms and conditions. However, I encountered an error message stating that "something is wrong with the account".
As a result, my account subscription has expired, and my app has been disabled from sales. This situation is causing a significant inconvenience, and I am unable to proceed without a resolution.
I have been trying to reach out for support over the past 5 days through emails and support messages, but have not received any response so far. Given the urgency of the situation, I kindly request immediate attention to this matter.
I would appreciate it if you could expedite the renewal process and reactivate my account as soon as possible. Please let me know if you require any additional information to resolve this issue.
Thank you for your attention to this urgent matter. I look forward to your prompt response.
I have two apps with bundle IDs 'com.my.ios.stage' and 'com.my.tvos.stage'.
(Not a real ID)
The subscription groups are test.com.ios.subs and test.com.tvos.subs respectively.
When I create a subscription for the test.com.ios.subs group on ios, the receipt is generated well and the app store notification is also working well and notifications are coming.
The subscription created with test.com.tvos.subs does not receive any notifications.
However, when I create a subscription for the test.com.tvos.subs group on tvos, the receipt is generated well, but the notification is not coming.
For both subscriptions, if I parse the receipt and look up transactionHistory with transactionId, there is information about the previously purchased subscription.
I tried to get the notification history of each app with get_notification_history.
In com.my.ios.stage, I can see all the subscription information, including the notification I created with request_test_notification.
In com.my.tvos.stage, I only see the notification created with request_test_notification.
I'm testing in a sandbox. What is the issue?
I sent a Technical Support Incident (TSI) request to Apple Support about a month ago, but I haven't received any response yet. The issue I need assistance with is my inability to subscribe to my iOS account, which is essential for me to upload my iOS app.
There is an error with one of our subscriptions which has now been removed from sale. We need to refund the customers who have already purchased it. Is it possible to do that, and if so, how?
I have had my Localization rejected (for unknown reasons, why is that not mentioned ?) and I went to change it. Unfortunately, I get an error when saving : "There was an error with editing your app store localization. Try again later."
Great error. Looking at the actual json response from the backend, I'm getting this :
{
"errors" : [ {
"id" : "597525fa-8873-47c8-a9b8-2efe62e5c049",
"status" : "409",
"code" : "ENTITY_ERROR.ATTRIBUTE.INVALID.UNMODIFIABLE",
"title" : "The provided entity contains a field that can not be modified in the current state",
"detail" : "The field (NAME) can not be modified",
"source" : {
"pointer" : "/data/attributes/NAME"
}
}, {
"id" : "abad4d98-6553-44d7-90ed-adb6cf0196af",
"status" : "409",
"code" : "ENTITY_ERROR.ATTRIBUTE.INVALID.UNMODIFIABLE",
"title" : "The provided entity contains a field that can not be modified in the current state",
"detail" : "The field (LOCALE_CODE) can not be modified",
"source" : {
"pointer" : "/data/attributes/LOCALE_CODE"
}
} ]
}
So first off, it'd be great if Apple could actually show you the error in the UI, but moreover : How do I solve this ?
I have the following scenario:
I had a subscription price of $10.
I increased the price to $20 for new subscriptions, while preserving existing subscriptions price ($10).
Now, I want to decrease the price to $15:
I understand that existing $20 subscriptions will automatically renew their subscription for the reduced price ($15).
BUT, what will happen to the existing $10 subscriptions?
I get no option to preserve or increase their price when trying to change the price to $15.
Hi, This is first time posting in here.
Now our app is using In-app purchase and i'm implementing server logics using app-store-server-api.
But from yesterday, i'm facing 'http status code 401 Unauthorized error' when calling some apis.
I did many trials to fix this error and issue new key for api in app store connect. But I can't resolve this error. Even can't know what is the reason.
I attach my real code for calling 'get transaction info' api. Please give some help for me!!!!
const jwt = require('jsonwebtoken');
const fs = require('fs');
const axios = require('axios');
getApiJWTToken = () => {
// header
const keyId = process.env.APP_STORE_KEY_ID;
const issuerId = process.env.APP_STORE_ISSUER_ID;
const appBundleId = process.env.APP_BUNDLE_ID;
const header = {
alg: 'ES256',
kid: keyId,
typ: 'JWT',
};
// payload
const issuedAt = Number(dayjs().unix());
const payload = {
iss: issuerId,
iat: issuedAt,
aud: 'appstoreconnect-v1',
bid: appBundleId,
};
// sign
const keyString = fs.readFileSync(filePath, 'utf-8');
const token = jwt.sign(payload, keyString, {
algorithm: 'ES256',
header: header,
expiresIn: '30m',
});
return btoa(token);
};
requestSingleTransactionInfo = async ({ transactionId }) => {
try {
// jwt token
const token = this.getApiJWTToken();
const envType = process.env.APP_STORE_SERVER_API_ENV;
const commonUrl = `/inApps/v1/transactions/${transactionId}`;
let baseUrl;
if (envType === 'Sandbox') {
// sandbox
baseUrl = 'https://api.storekit-sandbox.itunes.apple.com';
} else if (envType === 'Production') {
// production
baseUrl = 'https://api.storekit.itunes.apple.com';
}
const url = `${baseUrl}${commonUrl}`;
const response = await axios.get(url, {
headers: {
Authorization: `Bearer ${token}`,
},
});
const { signedTransactionInfo } = response.data;
const transactionInfo = await decodeTransaction(signedTransactionInfo);
console.log(transactionInfo);
return transactionInfo;
} catch (err) {
throw err;
}
};
Hi everyone,
I got problem about fetch data IAP Subscription product on sandbox environment.
My project make on Unity and use IAP Unity.
About 2 day ago it still work, but after Apple down some service yesterday then until now I can't fetch my product from Sandbox anymore.
I also check my older version on testflight and still not work, but the production still work fine.
I also check log on Sandox and saw this: "IAPStoreManager failed to initialize. Reason: NoProductsAvailable."
Code I checked from IOS Native and saw the product count return "Received 0 products":
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
UnityPurchasingLog(@"Received %lu products", (unsigned long)[response.products count]);
// Add the retrieved products to our set of valid products.
NSDictionary* fetchedProducts = [NSDictionary dictionaryWithObjects: response.products forKeys: [response.products valueForKey: @"productIdentifier"]];
[validProducts addEntriesFromDictionary: fetchedProducts];
NSString* productJSON = [UnityPurchasing serializeProductMetadata: response.products];
// Send the app receipt as a separate parameter to avoid JSON parsing a large string.
[self UnitySendMessage: @"OnProductsRetrieved" payload: productJSON];
}
I have no idea about this issue so anyone know the Sandbox still work or had other any problem ? Please give me advise.
Thanks everyone.
Does unchecking "Cleared for Sales" on a subscription trigger any communication towards subscripted users?