Methods
Shop methods for managing orders and recurring payments.
Payment Methods
Available payment methods depend on the order configuration:
Standard orders (onlyStars: false):
Bank cards
Always available
SBP
Available when seller has SBP enabled (can be enabled by request to Tribute support). Only for one-time orders (period: "onetime")
Wallet Pay (TON)
Always available
Telegram Stars
Only when starsAmount > 0, period is onetime or monthly, and tokenCharging is disabled
OnlyStars orders (onlyStars: true, tokenCharging disabled, only onetime and monthly periods):
Telegram Stars
Always available
Bank cards
Card-to-Stars flow. Available when starsAmount >= 50
Note: Pix and PayPal are not available for shop orders.
Returns the authenticated user's active shops, ordered by creation (oldest first). Inactive shops are never listed. Single-shop owners always see one element; multi-shop owners use this endpoint to discover shop IDs to pass to the other shop endpoints via ?shopId=.
API key for authentication.
Successful response
Shop ID
1Shop owner user ID
123Shop name
My ShopShop link/slug
myshopWebhook callback URL for order notifications
https://example.com/webhookWhether recurring payments are available
trueWhether only Telegram Stars payment is accepted
falseWhether merchant-initiated token charging is enabled
falseShop status (0 = inactive, 1 = active)
1Possible values: Unauthorized (invalid API key)
GET /api/v1/shops HTTP/1.1
Host: tribute.tg
Api-Key: YOUR_API_KEY
Accept: */*
[
{
"id": 1,
"userId": 123,
"name": "My Shop",
"link": "myshop",
"callbackUrl": "https://example.com/webhook",
"recurrent": true,
"onlyStars": false,
"tokenCharging": false,
"status": 1
}
]Returns shop information for the authenticated user. Only active shops are returned. Pass ?shopId= to target a specific shop; omitting it returns the user's oldest active shop. An explicit shopId for an inactive (but owned) shop returns error_shop_inactive.
API key for authentication.
ID of the active shop to return. Defaults to the oldest active shop owned by the authenticated user.
1Successful response
Shop ID
1Shop owner user ID
123Shop name
My ShopShop link/slug
myshopWebhook callback URL for order notifications
https://example.com/webhookWhether recurring payments are available
trueWhether only Telegram Stars payment is accepted
falseWhether merchant-initiated token charging is enabled
falseShop status (0 = inactive, 1 = active)
1Possible values: Unauthorized (invalid API key)
Shop not found
GET /api/v1/shop HTTP/1.1
Host: tribute.tg
Api-Key: YOUR_API_KEY
Accept: */*
{
"id": 1,
"userId": 123,
"name": "My Shop",
"link": "myshop",
"callbackUrl": "https://example.com/webhook",
"recurrent": true,
"onlyStars": false,
"tokenCharging": false,
"status": 1
}Returns a list of shop orders sorted by ID descending (newest first). Optionally filter by date range. Pass ?shopId= to target a specific shop; omitting it returns orders for the oldest shop.
API key for authentication.
ID of the shop to read orders from. Defaults to the oldest shop owned by the authenticated user.
1Start date (inclusive) in UTC, format yyyy-mm-dd
2026-01-01End date (inclusive) in UTC, format yyyy-mm-dd
2026-12-31Successful response
Order UUID
550e8400-e29b-41d4-a716-446655440000Shop ID this order belongs to
1Order amount in smallest currency units (cents/kopecks)
100000Currency code (lowercase)
rubPossible values: Order title (max 100 UTF-16 characters)
Product XOrder description (max 300 UTF-16 characters)
Detailed product descriptionOrder status. prepaid is opt-in (per-seller rollout): card-to-Stars orders where stars have been credited to the buyer but the buyer has not yet confirmed the Telegram Stars charge. Sellers not opted in see pending instead.
A card decline does not change the status — the order stays pending and payable.
paidPossible values: Customer email (optional)
customer@example.comRedirect URL on successful payment
https://shop.com/successRedirect URL on failed payment
https://shop.com/failWeb URL for customer to complete payment in a browser.
null for OnlyStars orders — they can only be paid inside Telegram via webappPaymentUrl.
https://web.tribute.tg/shop/pay/550e8400-e29b-41d4-a716-446655440000Telegram WebApp payment URL for in-app payment
https://t.me/tribute/app?startapp=b2RK4mNOrder creation timestamp in ISO 8601 format
2025-11-13T15:04:05ZOptional comment for the order
Special requestBilling period for recurring orders
onetimePossible values: Recurring subscription status (only for recurring orders)
activePossible values: Recurring subscription expiration date in ISO 8601 format (only for recurring orders)
2025-12-13T15:04:05ZTrue while an active member is still inside the free trial window (subscribed, not yet charged). Present whenever a member exists — false for non-trial members and after the trial converts or the member is cancelled. Omitted only when there is no member.
trueTrial start (subscription time), in ISO 8601 format. Present for an active trial member — both while in trial and after it converts (then historical). Omitted for non-trial and cancelled members.
2025-12-13T15:04:05ZTrial end / first-charge date, in ISO 8601 format. Present for an active trial member — both while in trial and after it converts (then historical). Omitted for non-trial and cancelled members.
2025-12-20T15:04:05ZDate of the last paid transaction in ISO 8601 format. Null if no transactions exist.
2025-12-13T15:04:05ZFixed amount in Telegram Stars (0 if not set)
0Whether this order only accepts Telegram Stars payment
falseFirst-period price in smallest currency units. If set, the initial charge used this amount; subsequent charges use amount. Absent for orders without a first-period override.
50000Whether a receipt email is sent to the buyer after successful payment (inherited from the shop at creation)
falseUnauthorized (invalid API key)
Shop not found
GET /api/v1/shop/orders HTTP/1.1
Host: tribute.tg
Api-Key: YOUR_API_KEY
Accept: */*
[
{
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"shopId": 1,
"amount": 100000,
"currency": "rub",
"title": "Product X",
"description": "Detailed product description",
"status": "paid",
"email": "customer@example.com",
"successUrl": "https://shop.com/success",
"failUrl": "https://shop.com/fail",
"paymentUrl": "https://web.tribute.tg/shop/pay/550e8400-e29b-41d4-a716-446655440000",
"webappPaymentUrl": "https://t.me/tribute/app?startapp=b2RK4mN",
"createdAt": "2025-11-13T15:04:05Z",
"comment": "Special request",
"period": "onetime",
"memberStatus": "active",
"memberExpiresAt": "2025-12-13T15:04:05Z",
"memberInTrial": true,
"memberTrialStartedAt": "2025-12-13T15:04:05Z",
"memberTrialEndsAt": "2025-12-20T15:04:05Z",
"lastPaidTransactionAt": "2025-12-13T15:04:05Z",
"starsAmount": 0,
"onlyStars": false,
"firstPeriodAmount": 50000,
"sendEmail": false,
"image": {
"id": 123,
"path": "https://cdn.example.com/image.jpg",
"thumbnail": "text",
"width": 800,
"height": 600,
"fileType": "image"
}
}
]Creates a new shop order and returns a payment URL for the customer. Supports one-time and recurring payments.
API key for authentication.
Shop ID to create the order for. If omitted, the order is created for the first (oldest) shop of the authenticated user.
1Order amount in smallest currency units (cents for EUR/USD, kopecks for RUB).
Required for regular shops. Ignored for OnlyStars shops — the order is stored with amount=0 and the charge is settled in Telegram Stars (via starsAmount). currency is required either way.
100000Currency code (lowercase). Required for every order, including OnlyStars shops — it determines the fiat price shown on the invoice (derived from starsAmount for OnlyStars orders).
rubPossible values: Order title (required, max 100 UTF-16 characters). Leading/trailing whitespace is trimmed; a whitespace-only value is rejected.
Product XOrder description (required, max 300 UTF-16 characters). Leading/trailing whitespace is trimmed; a whitespace-only value is rejected.
Detailed product descriptionRedirect URL on successful payment (optional, must be a valid https:// URL)
https://shop.com/successRedirect URL on failed payment (optional, must be a valid https:// URL)
https://shop.com/failCustomer email (optional, validated if provided). When set, the buyer isn't asked to enter an email at checkout (the address itself stays server-side). A receipt is only sent when the shop has sendEmail=true.
customer@example.comOptional comment for the order
Special requestUnique customer identifier
user_12345Billing period. Defaults to "onetime" if not specified. Recurring periods require shop.recurrent to be enabled. OnlyStars shops only support "onetime" and "monthly" periods (Telegram Stars subscriptions are 30-day cycles).
onetimeExample: monthlyPossible values: Fixed amount in Telegram Stars. Required for OnlyStars shops. When set, enables Stars payment as an option. Only supported for onetime or monthly periods. For monthly orders, creates a Telegram Stars subscription.
50Image URL for the order. Will be displayed in Telegram Stars invoices and transactions. If provided, the image is downloaded and stored; if an image with this URL already exists, it is reused.
https://example.com/product-image.jpgPrice of the first recurring period in smallest currency units (cents/kopecks). When set, the initial charge uses this amount; every subsequent charge uses amount. May be lower (promo) or higher than amount. Same currency-range limits apply as for amount. Must differ from amount.
Requires period != onetime. Not allowed for OnlyStars shops. Mutually exclusive with starsAmount: an order may offer a first-period fiat override or a fixed Stars price, not both. The platform applies the value as supplied and does not deduplicate per buyer.
50000Grants a free trial window to buyers who pay by card. During the trial the buyer is not charged; at trial end the first paid charge is firstPeriodAmount (if set) otherwise amount, and every subsequent period is amount.
Card-only: SBP, Wallet and Telegram Stars ignore the trial and charge as usual. Requires period != onetime. Not allowed for OnlyStars shops. Combinable with firstPeriodAmount. A repeat trial on the same order is not granted.
seven_daysPossible values: Order created successfully. Returns the full order object — the same
shape as GET /shop/orders/{orderUuid}. paymentUrl is null for
OnlyStars orders.
Order UUID
550e8400-e29b-41d4-a716-446655440000Shop ID this order belongs to
1Order amount in smallest currency units (cents/kopecks)
100000Currency code (lowercase)
rubPossible values: Order title (max 100 UTF-16 characters)
Product XOrder description (max 300 UTF-16 characters)
Detailed product descriptionOrder status. prepaid is opt-in (per-seller rollout): card-to-Stars orders where stars have been credited to the buyer but the buyer has not yet confirmed the Telegram Stars charge. Sellers not opted in see pending instead.
A card decline does not change the status — the order stays pending and payable.
paidPossible values: Customer email (optional)
customer@example.comRedirect URL on successful payment
https://shop.com/successRedirect URL on failed payment
https://shop.com/failWeb URL for customer to complete payment in a browser.
null for OnlyStars orders — they can only be paid inside Telegram via webappPaymentUrl.
https://web.tribute.tg/shop/pay/550e8400-e29b-41d4-a716-446655440000Telegram WebApp payment URL for in-app payment
https://t.me/tribute/app?startapp=b2RK4mNOrder creation timestamp in ISO 8601 format
2025-11-13T15:04:05ZOptional comment for the order
Special requestBilling period for recurring orders
onetimePossible values: Recurring subscription status (only for recurring orders)
activePossible values: Recurring subscription expiration date in ISO 8601 format (only for recurring orders)
2025-12-13T15:04:05ZTrue while an active member is still inside the free trial window (subscribed, not yet charged). Present whenever a member exists — false for non-trial members and after the trial converts or the member is cancelled. Omitted only when there is no member.
trueTrial start (subscription time), in ISO 8601 format. Present for an active trial member — both while in trial and after it converts (then historical). Omitted for non-trial and cancelled members.
2025-12-13T15:04:05ZTrial end / first-charge date, in ISO 8601 format. Present for an active trial member — both while in trial and after it converts (then historical). Omitted for non-trial and cancelled members.
2025-12-20T15:04:05ZDate of the last paid transaction in ISO 8601 format. Null if no transactions exist.
2025-12-13T15:04:05ZFixed amount in Telegram Stars (0 if not set)
0Whether this order only accepts Telegram Stars payment
falseFirst-period price in smallest currency units. If set, the initial charge used this amount; subsequent charges use amount. Absent for orders without a first-period override.
50000Whether a receipt email is sent to the buyer after successful payment (inherited from the shop at creation)
falseBad request
Unauthorized (invalid API key)
Access denied (shopId belongs to another user)
Shop not found
POST /api/v1/shop/orders HTTP/1.1
Host: tribute.tg
Api-Key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 409
{
"shopId": 1,
"amount": 100000,
"currency": "rub",
"title": "Product X",
"description": "Detailed product description",
"successUrl": "https://shop.com/success",
"failUrl": "https://shop.com/fail",
"email": "customer@example.com",
"comment": "Special request",
"customerId": "user_12345",
"period": "monthly",
"starsAmount": 50,
"imageUrl": "https://example.com/product-image.jpg",
"firstPeriodAmount": 50000,
"trialPeriod": "seven_days"
}{
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"shopId": 1,
"amount": 100000,
"currency": "rub",
"title": "Product X",
"description": "Detailed product description",
"status": "paid",
"email": "customer@example.com",
"successUrl": "https://shop.com/success",
"failUrl": "https://shop.com/fail",
"paymentUrl": "https://web.tribute.tg/shop/pay/550e8400-e29b-41d4-a716-446655440000",
"webappPaymentUrl": "https://t.me/tribute/app?startapp=b2RK4mN",
"createdAt": "2025-11-13T15:04:05Z",
"comment": "Special request",
"period": "onetime",
"memberStatus": "active",
"memberExpiresAt": "2025-12-13T15:04:05Z",
"memberInTrial": true,
"memberTrialStartedAt": "2025-12-13T15:04:05Z",
"memberTrialEndsAt": "2025-12-20T15:04:05Z",
"lastPaidTransactionAt": "2025-12-13T15:04:05Z",
"starsAmount": 0,
"onlyStars": false,
"firstPeriodAmount": 50000,
"sendEmail": false,
"image": {
"id": 123,
"path": "https://cdn.example.com/image.jpg",
"thumbnail": "text",
"width": 800,
"height": 600,
"fileType": "image"
}
}Returns shop orders grouped by status with pagination support and order counts.
Three usage modes:
Initial load (no
page, nostatus): Returns first page of orders for every status (all,pending,paid,failed) plus total counts. Use this on first screen load.Paginated "all" (
pageprovided, nostatusorstatus=all): Returns a specific page of all orders under theallkey.Paginated per status (
pageandstatusprovided): Returns a specific page of orders for that status under the corresponding key.
Orders are sorted by ID descending (newest first).
API key for authentication.
ID of the shop to read orders from. Defaults to the oldest shop owned by the authenticated user.
1Filter by order status. When omitted and page is not provided, returns all statuses.
When set to all or omitted with page, returns all orders.
prepaid is opt-in (per-seller rollout) and returns shop orders in the card-to-Stars flow where stars have been credited but the buyer has not yet confirmed the Telegram Stars charge. Requesting prepaid without opt-in returns HTTP 400.
paidPossible values: Page number (1-based). When omitted, triggers the initial grouped load.
1Number of orders per page (default 20, max 100)
20Example: 20Start date (inclusive) in UTC, format yyyy-mm-dd
2026-01-01End date (inclusive) in UTC, format yyyy-mm-dd
2026-12-31Successful response
Next page number as string. Empty string if no more pages.
2Bad request (invalid status parameter)
Unauthorized (invalid API key)
Shop not found
GET /api/v1/shop/orders_by_status HTTP/1.1
Host: tribute.tg
Api-Key: YOUR_API_KEY
Accept: */*
{
"counts": {
"all": 42,
"pending": 5,
"paid": 30,
"failed": 7
},
"orders": {
"all": [
{
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"amount": 100000,
"currency": "rub",
"title": "Product X",
"status": "paid"
}
],
"pending": [],
"paid": [
{
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"amount": 100000,
"currency": "rub",
"title": "Product X",
"status": "paid"
}
],
"failed": []
},
"nextFrom": "2"
}Returns full details of a specific shop order by its UUID. Includes member status and image. Only accessible by the shop owner.
API key for authentication.
Order UUID
550e8400-e29b-41d4-a716-446655440000Successful response
Order UUID
550e8400-e29b-41d4-a716-446655440000Shop ID this order belongs to
1Order amount in smallest currency units (cents/kopecks)
100000Currency code (lowercase)
rubPossible values: Order title (max 100 UTF-16 characters)
Product XOrder description (max 300 UTF-16 characters)
Detailed product descriptionOrder status. prepaid is opt-in (per-seller rollout): card-to-Stars orders where stars have been credited to the buyer but the buyer has not yet confirmed the Telegram Stars charge. Sellers not opted in see pending instead.
A card decline does not change the status — the order stays pending and payable.
paidPossible values: Customer email (optional)
customer@example.comRedirect URL on successful payment
https://shop.com/successRedirect URL on failed payment
https://shop.com/failWeb URL for customer to complete payment in a browser.
null for OnlyStars orders — they can only be paid inside Telegram via webappPaymentUrl.
https://web.tribute.tg/shop/pay/550e8400-e29b-41d4-a716-446655440000Telegram WebApp payment URL for in-app payment
https://t.me/tribute/app?startapp=b2RK4mNOrder creation timestamp in ISO 8601 format
2025-11-13T15:04:05ZOptional comment for the order
Special requestBilling period for recurring orders
onetimePossible values: Recurring subscription status (only for recurring orders)
activePossible values: Recurring subscription expiration date in ISO 8601 format (only for recurring orders)
2025-12-13T15:04:05ZTrue while an active member is still inside the free trial window (subscribed, not yet charged). Present whenever a member exists — false for non-trial members and after the trial converts or the member is cancelled. Omitted only when there is no member.
trueTrial start (subscription time), in ISO 8601 format. Present for an active trial member — both while in trial and after it converts (then historical). Omitted for non-trial and cancelled members.
2025-12-13T15:04:05ZTrial end / first-charge date, in ISO 8601 format. Present for an active trial member — both while in trial and after it converts (then historical). Omitted for non-trial and cancelled members.
2025-12-20T15:04:05ZDate of the last paid transaction in ISO 8601 format. Null if no transactions exist.
2025-12-13T15:04:05ZFixed amount in Telegram Stars (0 if not set)
0Whether this order only accepts Telegram Stars payment
falseFirst-period price in smallest currency units. If set, the initial charge used this amount; subsequent charges use amount. Absent for orders without a first-period override.
50000Whether a receipt email is sent to the buyer after successful payment (inherited from the shop at creation)
falseUnauthorized (invalid API key)
Forbidden (order belongs to another shop)
Order or shop not found
GET /api/v1/shop/orders/{orderUuid} HTTP/1.1
Host: tribute.tg
Api-Key: YOUR_API_KEY
Accept: */*
{
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"shopId": 1,
"amount": 100000,
"currency": "rub",
"title": "Product X",
"description": "Detailed product description",
"status": "paid",
"email": "customer@example.com",
"successUrl": "https://shop.com/success",
"failUrl": "https://shop.com/fail",
"paymentUrl": "https://web.tribute.tg/shop/pay/550e8400-e29b-41d4-a716-446655440000",
"webappPaymentUrl": "https://t.me/tribute/app?startapp=b2RK4mN",
"createdAt": "2025-11-13T15:04:05Z",
"comment": "Special request",
"period": "onetime",
"memberStatus": "active",
"memberExpiresAt": "2025-12-13T15:04:05Z",
"memberInTrial": true,
"memberTrialStartedAt": "2025-12-13T15:04:05Z",
"memberTrialEndsAt": "2025-12-20T15:04:05Z",
"lastPaidTransactionAt": "2025-12-13T15:04:05Z",
"starsAmount": 0,
"onlyStars": false,
"firstPeriodAmount": 50000,
"sendEmail": false,
"image": {
"id": 123,
"path": "https://cdn.example.com/image.jpg",
"thumbnail": "text",
"width": 800,
"height": 600,
"fileType": "image"
}
}Returns the current status of a specific shop order by its UUID. Only accessible by the shop owner.
API key for authentication.
Order UUID
550e8400-e29b-41d4-a716-446655440000Successful response
Order status. prepaid (card-to-Stars: stars credited to buyer, awaiting charge confirmation) is returned only for sellers opted in to the prepaid rollout — others see pending until the buyer finalizes the charge.
paidPossible values: Unauthorized (invalid API key)
Forbidden (order belongs to another shop)
Order or shop not found
GET /api/v1/shop/orders/{orderUuid}/status HTTP/1.1
Host: tribute.tg
Api-Key: YOUR_API_KEY
Accept: */*
{
"status": "paid"
}Cancels a recurring shop order subscription. Only accessible by the shop owner or authorized managers.
API key for authentication.
Order UUID
550e8400-e29b-41d4-a716-446655440000Order cancelled successfully
Whether the operation was successful
trueSuccess message
recurring order cancelledBad request
Unauthorized (invalid API key)
Forbidden (access denied)
Order, shop, or recurring subscription not found
POST /api/v1/shop/orders/{orderUuid}/cancel HTTP/1.1
Host: tribute.tg
Api-Key: YOUR_API_KEY
Accept: */*
{
"success": true,
"message": "recurring order cancelled"
}Returns a paginated list of transactions for a specific shop order. Only accessible by the shop owner or authorized managers.
API key for authentication.
Order UUID
550e8400-e29b-41d4-a716-446655440000Pagination offset (number of records to skip)
0Example: 0Successful response
Offset for the next page. Empty string if no more pages
20Unauthorized (invalid API key)
Forbidden (access denied)
Order or shop not found
GET /api/v1/shop/orders/{orderUuid}/transactions HTTP/1.1
Host: tribute.tg
Api-Key: YOUR_API_KEY
Accept: */*
{
"transactions": [
{
"id": 12345,
"type": "shop_order_sell",
"objectId": 100,
"amount": 1000,
"currency": "rub",
"createdAt": 1731510245,
"serviceFee": 80,
"total": 920,
"paymentMethod": "bank_card",
"isRefunded": false,
"isRefundable": true,
"isRecurring": false,
"shopOrder": {
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"title": "Product X",
"description": "Detailed product description",
"amount": 1000,
"currency": "eur",
"status": "paid",
"email": "customer@example.com",
"successUrl": "https://shop.com/success",
"failUrl": "https://shop.com/fail",
"createdAt": 1731510245,
"comment": "Special request",
"period": "onetime",
"shopName": "My Shop",
"starsAmount": 0,
"onlyStars": false
}
}
],
"nextFrom": "20"
}Initiates a refund for a specific transaction of a shop order. Only accessible by the shop owner or authorized managers. Only sell transactions from paid orders can be refunded.
API key for authentication.
Order UUID
550e8400-e29b-41d4-a716-446655440000Transaction ID (must be a sell transaction)
12345Refund initiated successfully
Whether the operation was successful
trueSuccess message
refund initiatedRefund status
initiatedPossible values: Bad request
Unauthorized (invalid API key)
Forbidden (access denied)
Order, shop, or transaction not found
Internal server error (refund processing failed)
POST /api/v1/shop/orders/{orderUuid}/transactions/{txId}/refund HTTP/1.1
Host: tribute.tg
Api-Key: YOUR_API_KEY
Accept: */*
{
"success": true,
"message": "refund initiated",
"status": "initiated"
}Re-delivers the latest already-attempted webhook of the given event type for a shop order, by cloning it into a new delivery attempt. Only accessible by the shop owner or authorized managers. Events still queued or in flight cannot be resent. Idempotent while a re-delivery is queued (returns 200 without scheduling another one); at most one resend per event type per order per minute.
API key for authentication.
Order UUID
550e8400-e29b-41d4-a716-446655440000Webhook event type to resend
shop_order_charge_successPossible values: Resend scheduled successfully
Whether the resend was scheduled
trueBad request
Unauthorized (invalid API key)
Forbidden (access denied)
Order, shop, or a webhook of this event type not found
Rate limit exceeded - one resend per event type per order per minute
POST /api/v1/shop/orders/{orderUuid}/webhooks/resend HTTP/1.1
Host: tribute.tg
Api-Key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 37
{
"event": "shop_order_charge_success"
}{
"success": true
}Last updated