curl --request POST \
--url https://api.storiza.store/apps/order \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"hostname": "<string>",
"nodeId": "<string>",
"templateId": "<string>",
"planId": "<string>",
"method": "<string>",
"version": "<string>",
"groupId": "<string>",
"env": {},
"command": [
"<string>"
],
"duration": 30,
"currency": "USD",
"couponCode": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
hostname: '<string>',
nodeId: '<string>',
templateId: '<string>',
planId: '<string>',
method: '<string>',
version: '<string>',
groupId: '<string>',
env: {},
command: ['<string>'],
duration: 30,
currency: 'USD',
couponCode: '<string>'
})
};
fetch('https://api.storiza.store/apps/order', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.storiza.store/apps/order"
payload = {
"hostname": "<string>",
"nodeId": "<string>",
"templateId": "<string>",
"planId": "<string>",
"method": "<string>",
"version": "<string>",
"groupId": "<string>",
"env": {},
"command": ["<string>"],
"duration": 30,
"currency": "USD",
"couponCode": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"success": true,
"message": "App order created successfully",
"data": {
"id": 1042,
"type": "topup",
"status": "pending",
"direction": "deposit",
"method": "credit-cards",
"provider": "polar",
"currency": null,
"conversionRate": "1",
"subtotalAmount": "100",
"discountAmount": "10",
"netAmount": "90",
"taxAmount": "0",
"totalAmount": "90",
"user": {
"id": "00000000-0000-4000-8000-000000000000"
},
"coupon": null,
"supportsIframes": false,
"applePaySession": null,
"expiresAt": "2026-10-09T15:57:33.916Z"
}
}Order an app and pay for it externally
Raises a transaction for a new app and returns where to pay it. No app is created here — the whole request is stored on the transaction and built only once the payment settles, so an abandoned checkout leaves nothing behind.
This is the counterpart to POST /apps, which charges the account balance instead and provisions immediately.
Poll GET /payments/transactions/:id/status for settlement; once settled, provisionId on the transaction is the created app id.
Required API key permission: apps:write
curl --request POST \
--url https://api.storiza.store/apps/order \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"hostname": "<string>",
"nodeId": "<string>",
"templateId": "<string>",
"planId": "<string>",
"method": "<string>",
"version": "<string>",
"groupId": "<string>",
"env": {},
"command": [
"<string>"
],
"duration": 30,
"currency": "USD",
"couponCode": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
hostname: '<string>',
nodeId: '<string>',
templateId: '<string>',
planId: '<string>',
method: '<string>',
version: '<string>',
groupId: '<string>',
env: {},
command: ['<string>'],
duration: 30,
currency: 'USD',
couponCode: '<string>'
})
};
fetch('https://api.storiza.store/apps/order', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.storiza.store/apps/order"
payload = {
"hostname": "<string>",
"nodeId": "<string>",
"templateId": "<string>",
"planId": "<string>",
"method": "<string>",
"version": "<string>",
"groupId": "<string>",
"env": {},
"command": ["<string>"],
"duration": 30,
"currency": "USD",
"couponCode": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"success": true,
"message": "App order created successfully",
"data": {
"id": 1042,
"type": "topup",
"status": "pending",
"direction": "deposit",
"method": "credit-cards",
"provider": "polar",
"currency": null,
"conversionRate": "1",
"subtotalAmount": "100",
"discountAmount": "10",
"netAmount": "90",
"taxAmount": "0",
"totalAmount": "90",
"user": {
"id": "00000000-0000-4000-8000-000000000000"
},
"coupon": null,
"supportsIframes": false,
"applePaySession": null,
"expiresAt": "2026-10-09T15:57:33.916Z"
}
}Authorizations
An API key from the Storiza dashboard (API & Integrations), sent as Authorization: Bearer stz_….
Body
1 - 63^[a-z0-9]([a-z0-9-]*[a-z0-9])?$111Payment method slug, e.g. credit_cards. See GET /payments/methods
11 - 631Show child attributes
Show child attributes
1001 - 10001 <= x <= 36531 - 64Response
App order created successfully
true App order created successfully Schema for Transaction model
Show child attributes
Show child attributes
{
"id": 1042,
"type": "topup",
"status": "pending",
"direction": "deposit",
"method": "credit-cards",
"provider": "polar",
"currency": null,
"conversionRate": "1",
"subtotalAmount": "100",
"discountAmount": "10",
"netAmount": "90",
"taxAmount": "0",
"totalAmount": "90",
"user": {
"id": "00000000-0000-4000-8000-000000000000"
},
"coupon": null,
"supportsIframes": false,
"applePaySession": null,
"expiresAt": "2026-10-09T15:57:33.916Z"
}
Was this page helpful?