TPInAppReceipt is a lightweight, pure-Swift library for reading and validating Apple In App Purchase Receipt locally.
- Swift 6.0+ / Xcode 16+
- macOS 10.15+ / iOS 13+ / tvOS 13+ / watchOS 6.2+ / visionOS 1+
dependencies: [
.package(url: "https://github.com/tikhop/TPInAppReceipt.git", from: "4.0.2")
].target(
name: "YourTarget",
dependencies: ["TPInAppReceipt"]
)import TPInAppReceipt
// Local receipt
let receipt = try await AppReceipt.local
// From raw data
let receipt = try AppReceipt.receipt(from: data)Access receipt fields, query purchases, check subscriptions and introductory offer eligibility.
See Working with Receipt for details.
Default validation: certificate chain + signature + hash + metadata.
let result = await receipt.validate()
switch result {
case .valid:
break
case .invalid(let error):
print(error)
}Supports custom validators via @VerifierBuilder.
See Validating Receipt for details.
For contexts where async is not available.
@_spi(Blocking) import TPInAppReceipt
let receipt = try AppReceipt.local_blocking
let result = receipt.validate_blocking()See Blocking Mode for details.
See TPInAppReceipt 4.0 Migration Guide.
- Apple - About Receipt Validation
- Apple - Receipt Validation Programming Guide
- Apple - Validating Receipts Locally
- fluffy.es - Tutorial: Read and validate in-app purchase receipt locally using TPInAppReceipt
- Faisal Bin Ahmed - All the wrong ways to persist in-app purchase status in your macOS app
- objc.io - Receipt Validation
MIT
