1 # `@replit/revenuecat-sdk` SDK Docs
2
3 This SDK lets you interact with RevenueCat's Developer API to take actions like creating paywalls, products, entitlements, and more
4 that wouldn't otherwise be possible with the client-side `react-native-purchases` SDK.
5
6 ## Usage
7
8 ### Creating a Client
9
10 ```ts
11 import { createClient } from '@replit/revenuecat-sdk/client';
12 import { listProjects, getCustomer } from '@replit/revenuecat-sdk';
13
14 const client = createClient({
15 baseUrl: "https://api.revenuecat.com/v2",
16 headers: {
17 Authorization: `Bearer ${process.env.REVENUECAT_API_KEY}`,
18 },
19 });
20 ```
21
22 ### Making Requests
23
24 Pass the client to each function:
25
26 ```ts
27 // List all projects
28 const { data, error } = await listProjects({ client });
29
30 // Get a specific customer
31 const { data: customer } = await getCustomer({
32 client,
33 path: {
34 project_id: 'proj_xxx',
35 customer_id: 'cust_xxx',
36 },
37 });
38 ```
39
40 ### Using Types
41
42 All request/response types are exported:
43
44 ```ts
45 import type { Customer, Project, GetCustomerData } from '@replit/revenuecat-sdk';
46 ```
47
48 ### Error Handling
49
50 Functions return `{ data, error, response }`:
51
52 ```ts
53 const { data, error } = await getCustomer({
54 client,
55 path: { project_id: 'proj_xxx', customer_id: 'cust_xxx' },
56 });
57
58 if (error) {
59 console.error('Request failed:', error);
60 return;
61 }
62 ```
63
64 Use `throwOnError: true` to throw on non-2xx responses:
65
66 ```ts
67 const { data } = await getCustomer({
68 client,
69 path: { project_id: 'proj_xxx', customer_id: 'cust_xxx' },
70 throwOnError: true,
71 });
72 ```
73
74 ---
75
76 ## Functions
77
78 ### Paywalls
79
80 - `listPaywalls(options)` → `ListPaywalls` - Get a list of paywalls
81 - `createPaywall(options)` → `CreatePaywall` - Create a paywall
82 - `deletePaywall(options)` → `DeletePaywall` - Delete a paywall
83 - `getPaywall(options)` → `GetPaywall` - Get a paywall
84
85 ### Apps
86
87 - `listAppPublicApiKeys(options)` → `ListAppPublicApiKeys` - Get a list of the public API keys of an app
88 - `listApps(options)` → `ListApps` - Get a list of apps
89 - `createApp(options)` → `CreateApp` - Create an app
90 - `deleteApp(options)` → `DeleteApp` - Delete an app
91 - `getApp(options)` → `GetApp` - Get an app
92 - `updateApp(options)` → `UpdateApp` - Update an app
93 - `getAppStorekitConfig(options)` → `GetAppStorekitConfig` - Get the StoreKit configuration for an app
94
95 ### Projects
96
97 - `listProjects(options)` → `ListProjects` - Get a list of projects
98 - `createProject(options)` → `CreateProject` - Creates a new project
99
100 ### Audit logs
101
102 - `listAuditLogs(options)` → `ListAuditLogs` - List audit logs
103
104 ### Collaborators
105
106 - `listCollaborators(options)` → `ListCollaborators` - Get a list of collaborators
107
108 ### Customers
109
110 - `listCustomers(options)` → `ListCustomers` - Get a list of customers
111 - `createCustomer(options)` → `CreateCustomer` - Create a customer
112 - `deleteCustomer(options)` → `DeleteCustomer` - Delete a customer
113 - `getCustomer(options)` → `GetCustomer` - Get a customer
114 - `transferCustomerData(options)` → `TransferCustomerData` - Transfer customer's subscriptions and one-time purchases to another customer
115 - `grantCustomerEntitlement(options)` → `GrantCustomerEntitlement` - Grant an entitlement to a customer
116 - `revokeCustomerGrantedEntitlement(options)` → `RevokeCustomerGrantedEntitlement` - Revoke a granted entitlement from a customer
117 - `assignCustomerOffering(options)` → `AssignCustomerOffering` - Assign or clear an offering override for a customer
118 - `listSubscriptions(options)` → `ListSubscriptions` - Get a list of subscriptions associated with a customer
119 - `listPurchases(options)` → `ListPurchases` - Get a list of purchases associated with a customer
120 - `listCustomerActiveEntitlements(options)` → `ListCustomerActiveEntitlements` - Get a list of customer's active entitlements
121 - `listCustomerAliases(options)` → `ListCustomerAliases` - Get a list of the customer's aliases
122 - `listVirtualCurrenciesBalances(options)` → `ListVirtualCurrenciesBalances` - Get a list of customer's virtual currencies balances
123 - `createVirtualCurrenciesTransaction(options)` → `CreateVirtualCurrenciesTransaction` - Create a virtual currencies transaction
124 - `updateVirtualCurrenciesBalance(options)` → `UpdateVirtualCurrenciesBalance` - Update a virtual currencies balance without creating a transaction
125 - `listCustomerAttributes(options)` → `ListCustomerAttributes` - Get a list of the customer's attributes
126 - `setCustomerAttributes(options)` → `SetCustomerAttributes` - Set a customer's attributes
127 - `listCustomerInvoices(options)` → `ListCustomerInvoices` - Get a list of the customer's invoices
128 - `getInvoice(options)` → `unknown` - Get an invoice
129
130 ### Integrations
131
132 - `listWebhookIntegrations(options)` → `ListWebhookIntegrations` - List webhook integrations
133 - `createWebhookIntegration(options)` → `CreateWebhookIntegration` - Create a webhook integration
134 - `deleteWebhookIntegration(options)` → `DeleteWebhookIntegration` - Delete a webhook integration
135 - `getWebhookIntegration(options)` → `GetWebhookIntegration` - Get a webhook integration
136 - `updateWebhookIntegration(options)` → `UpdateWebhookIntegration` - Update a webhook integration
137
138 ### Products
139
140 - `deleteProduct(options)` → `DeleteProduct` - Delete a product
141 - `getProduct(options)` → `GetProduct` - Get a product
142 - `updateProduct(options)` → `UpdateProduct` - Update a product
143 - `archiveProduct(options)` → `ArchiveProduct` - Archive a product
144 - `unarchiveProduct(options)` → `UnarchiveProduct` - Unarchive a product
145 - `createProductInStore(options)` → `CreateProductInStore` - Push a product to the store
146 - `listProducts(options)` → `ListProducts` - Get a list of products
147 - `createProduct(options)` → `CreateProduct` - Create a product
148 - `getProductStoreState(options)` → `GetProductStoreState` - Get a product store state
149 - `setProductStoreState(options)` → `SetProductStoreState` - Set a product store state
150 - `getProductStoreStateOperation(options)` → `GetProductStoreStateOperation` - Get a product store state operation
151 - `uploadProductStoreStateScreenshot(options)` → `UploadProductStoreStateScreenshot` - Reserve a product store state screenshot upload
152
153 ### Virtual currencies
154
155 - `listVirtualCurrencies(options)` → `ListVirtualCurrencies` - Get a list of virtual currencies
156 - `createVirtualCurrency(options)` → `CreateVirtualCurrency` - Create a virtual currency
157 - `deleteVirtualCurrency(options)` → `DeleteVirtualCurrency` - Delete a virtual currency
158 - `getVirtualCurrency(options)` → `GetVirtualCurrency` - Get a virtual currency
159 - `updateVirtualCurrency(options)` → `UpdateVirtualCurrency` - Update a virtual currency
160 - `archiveVirtualCurrency(options)` → `ArchiveVirtualCurrency` - Archive a virtual currency
161 - `unarchiveVirtualCurrency(options)` → `UnarchiveVirtualCurrency` - Unarchive a virtual currency
162
163 ### Entitlements
164
165 - `deleteEntitlement(options)` → `DeleteEntitlement` - Delete an entitlement
166 - `getEntitlement(options)` → `GetEntitlement` - Get an entitlement
167 - `updateEntitlement(options)` → `UpdateEntitlement` - Update an entitlement
168 - `listEntitlements(options)` → `ListEntitlements` - Get a list of entitlements
169 - `createEntitlement(options)` → `CreateEntitlement` - Create an entitlement
170 - `getProductsFromEntitlement(options)` → `GetProductsFromEntitlement` - Get a list of products attached to a given entitlement
171 - `archiveEntitlement(options)` → `ArchiveEntitlement` - Archive an entitlement
172 - `unarchiveEntitlement(options)` → `UnarchiveEntitlement` - Unarchive an entitlement
173 - `attachProductsToEntitlement(options)` → `AttachProductsToEntitlement` - Attach a set of products to an entitlement
174 - `detachProductsFromEntitlement(options)` → `DetachProductsFromEntitlement` - Detach a set of product from an entitlement
175
176 ### Offerings
177
178 - `deleteOffering(options)` → `DeleteOffering` - Delete an offering and its attached packages
179 - `getOffering(options)` → `GetOffering` - Get an offering
180 - `updateOffering(options)` → `UpdateOffering` - Update an offering
181 - `archiveOffering(options)` → `ArchiveOffering` - Archive an offering
182 - `unarchiveOffering(options)` → `UnarchiveOffering` - Unarchive an offering
183 - `listOfferings(options)` → `ListOfferings` - Get a list of offerings
184 - `createOffering(options)` → `CreateOffering` - Create an offering
185 - `listPackages(options)` → `ListPackages` - Get a list of packages in an offering
186 - `createPackages(options)` → `CreatePackages` - Create a package
187
188 ### Packages
189
190 - `deletePackageFromOffering(options)` → `DeletePackageFromOffering` - Delete a package
191 - `getPackage(options)` → `GetPackage` - Get a package
192 - `updatePackage(options)` → `UpdatePackage` - Update a package
193 - `getProductsFromPackage(options)` → `GetProductsFromPackage` - Get a list of products attached to a given package of an offering
194 - `attachProductsToPackage(options)` → `AttachProductsToPackage` - Attach a set of products to a package
195 - `detachProductsFromPackage(options)` → `DetachProductsFromPackage` - Detach a set of products from a package
196
197 ### Subscriptions
198
199 - `getSubscription(options)` → `GetSubscription` - Get a subscription
200 - `getPlayStoreOrAppStoreSubscriptionTransactions(options)` → `GetPlayStoreOrAppStoreSubscriptionTransactions` - Get a Play Store or App Store subscription's transactions
201 - `refundPlayStoreSubscriptionTransaction(options)` → `RefundPlayStoreSubscriptionTransaction` - Refund a Play Store subscription's transaction
202 - `listSubscriptionEntitlements(options)` → `ListSubscriptionEntitlements` - Get a list of entitlements associated with a subscription
203 - `cancelSubscription(options)` → `CancelSubscription` - Cancel an active Web Billing subscription
204 - `refundSubscription(options)` → `RefundSubscription` - Refund an active Web Billing subscription
205 - `getAuthorizedSubscriptionManagementUrl(options)` → `GetAuthorizedSubscriptionManagementUrl` - Get an authenticated Web Billing customer portal URL
206 - `searchSubscriptions(options)` → `SearchSubscriptions` - Search subscriptions by store subscription identifier
207
208 ### Purchases
209
210 - `getPurchase(options)` → `GetPurchase` - Get a purchase
211 - `listPurchaseEntitlements(options)` → `ListPurchaseEntitlements` - Get a list of entitlements associated with a purchase
212 - `refundPurchase(options)` → `RefundPurchase` - Refund a Web Billing purchase
213 - `searchPurchases(options)` → `SearchPurchases` - Search one-time purchases by store purchase identifier
214
215 ### Metrics
216
217 - `getOverviewMetrics(options)` → `GetOverviewMetrics` - Get overview metrics for a project
218
219 ### Charts
220
221 - `getChartData(options)` → `GetChartData` - Get chart data
222 - `getChartOptions(options)` → `GetChartOptions` - Get available options for a chart
223
224 ### Undocumented Endpoints
225
226 The RevenueCat API has endpoints that are not implemented in this SDK.
227 They can be accessed directly using the client's HTTP methods (`get`, `post`, etc.).
228
229 #### Add Price to Test Store Product
230
231 `POST /projects/{project_id}/products/{product_id}/test_store_prices`
232
233 Request Body:
234
235 ```json
236 {
237 "prices": [
238 { "amount_micros": 9990000, "currency": "USD" },
239 { "amount_micros": 8990000, "currency": "EUR" }
240 ]
241 }
242 ```
243
244 Usage:
245
246 ```ts
247 const { data } = await client.post({
248 url: '/projects/{project_id}/products/{product_id}/test_store_prices',
249 path: { project_id, product_id },
250 body: {
251 prices: [
252 { amount_micros: 9990000, currency: 'USD' },
253 { amount_micros: 8990000, currency: 'EUR' },
254 ],
255 },
256 });
257 ```
258
259 #### List Test Store Product Prices
260
261 `GET /projects/{project_id}/products/{product_id}/test_store_prices`
262
263 Usage:
264
265 ```ts
266 const { data } = await client.get({
267 url: '/projects/{project_id}/products/{product_id}/test_store_prices',
268 path: { project_id, product_id },
269 });
270 ```
271
272 Response:
273
274 ```json
275 [
276 { "amount": 599, "amount_micros": 5990000, "currency": "USD" },
277 { "amount": 549, "amount_micros": 5490000, "currency": "EUR" }
278 ]
279 ```