Skip to content

PerkShelf reseller API

Source products for your store or bot. List what you need, pay from a wallet or a purchase-sized invoice, then retrieve the delivered codes, links or account instructions.

https://perkshelf.dev/api/v1/buyer
Keep a small wallet balance

Create a top-up through the API, pay it, and wait for confirmation. Then buy products with POST /orders.

You choose how much to fund. Top-ups do not purchase a product automatically.

Pay for each purchase

POST /checkouts returns a fixed product price and a payment invoice. Pay the exact invoice amount and poll the checkout.

Confirmed payment books the unit orders automatically. You do not need a second buy call or a large balance with PerkShelf.

Your payment sender, our invoice and fulfillment

Our API returns a Wisetag and the exact USD amount to arrive. Your server or the Wise app sends the payment; PerkShelf does not accept your Wise credentials or move funds from your account. We confirm the signed incoming-credit event on our receiving profile.

Your integration pays the invoice from your own Wise account using your own Wise access. Once the payment arrives, our API automatically books and fulfills the purchase. You retain control of your payment sender and credentials.

Connect your store

  1. Create a website account and generate a key in Reseller API. Keep it on your server.
  2. Send Authorization: Bearer YOUR_KEY. Fetch products and use their PerkShelf IDs, prices and redemption information.
  3. Save one external_order_id before each purchase. Use it for every retry of that purchase, and a different ID for every new sale.
  4. Choose wallet purchase or just-in-time checkout. For an invoice, send exactly the returned amount on the selected rail/coin/network before its expiry.
  5. Poll every 10 seconds while payment or delivery is pending. Deliver each unit once using its invoice as your own deduplication key.

Endpoints

MethodPathUse
GET/productsProduct descriptions, account prices, availability and stock
GET/products/{slug}One product and its redemption instructions
GET/balanceYour prepaid PerkShelf USD wallet
POST/ordersBuy from your existing wallet using a unique external order ID
GET/orders?external_order_id={id}Retrieve the purchase batch and each delivered unit
GET/orders/{invoice}Read one invoice and delivery
GET/ordersCursor-paginated API order history
GET/payment-methodsAvailable payment rails and network IDs
POST/depositsCreate an idempotent wallet top-up invoice
GET/deposits/{reference}Read invoice status and exact payment instructions
POST/deposits/{reference}/verifySubmit a crypto transaction ID; Wise waits for its signed webhook
DELETE/deposits/{reference}Cancel an unpaid invoice; this does not refund money
POST/checkoutsCreate a fixed-price product invoice without prefunding a large wallet
GET/checkouts?external_order_id={id}Read payment, order and delivery state

The full guide and OpenAPI document cover filters, pagination, response fields, legacy /purchase compatibility and all payment endpoints.

Payment and delivery rules

  • HTTP 202 means pending or reconciling. Check the saved external ID; do not create a new ID or pay again after a timeout.
  • Wise amounts include the FX adjustment and matching cents; only the listed USD credit is available for the product. Crypto matching cents remain wallet credit.
  • A payment invoice is not a stock reservation. A paid order stays pending if delivery needs a retry or operator review. Automatic delivery retries run every two minutes.
  • API invoices expire after a 72-hour matching window. Cancel only unpaid invoices. Refunds require operator review and return to the PerkShelf wallet, not automatically to the sender’s Wise/crypto account.
  • Each new wallet order requires an external ID. Order and payment reads are private to your account, including after API-key rotation.

Questions or a stuck payment? Open a support ticket with the invoice and external ID. Never send your API key in a ticket.