Delivery methods

How gifts reach recipients: EMAIL, TEXT, LINK, DIRECT_SHIPPING, and CODE — and what each requires.

The delivery.method you choose when creating an order determines how the gift reaches the recipient — and what information you must provide.

Choosing a method

MethodHow the gift is deliveredYou must provideBest for
EMAILWe email the voucher to the recipientrecipient.name, recipient.email, sender.nameMost digital gifting
TEXTWe send the voucher via SMSrecipient.name, recipient.phone_number (in the product country's format), sender.nameRecipients you have phone numbers for
LINKYou get a secure voucher URL and deliver it through your own channel (your app, chat, push, etc.)recipient.name, sender.nameIn-app rewards, full control over delivery UX
DIRECT_SHIPPINGWe ship a physical product to the address you providerecipient.name, recipient.address, sender.namePhysical gifts when you already have the address
CODENo delivery at all — you receive the raw voucher code (value / PIN / URL) and use it however you likeNothing (no recipient or sender needed)Wallet top-ups, printing codes, custom fulfillment

Every product supports a specific subset of methods — check available_delivery_method in the product catalog before ordering.

Retrieving the voucher after ordering

For LINK and CODE, the order creation response does not contain the voucher itself. Fetch it with GET /v1/orders/{id}:

  • LINKorder_items[].delivery.link — a secure URL for the recipient.
  • CODEorder_items[].delivery.code{ value, pin, url, expired_at }. Which of value / pin / url are populated varies by product — some vouchers are a code string, some are a redemption URL, some are a combination. Each field can be null, so handle all combinations.
⚠️

Treat links and codes as secrets. Anyone holding the URL or code can redeem the gift. Deliver them only to the intended recipient, and never log them.

Recipient-provided delivery information

Some products let the recipient enter their own delivery details (e.g. their shipping address) through a secure link, instead of you collecting them upfront. This is controlled by the product's recipient_info_provided_by field:

  • ["SENDER"] — you provide all delivery details at order time.
  • ["RECIPIENT"] or ["SENDER", "RECIPIENT"] — the recipient can be asked to fill in their own details. The secure link is sent via EMAIL or LINK (and via SMS for MERCHANDISE products ordered with TEXT).

In recipient-provided flows:

  • The order item stays PENDING until the recipient submits their information ("accepts" the gift). Track this via order_items[].delivery.recipient.acceptance{ status: PENDING | ACCEPTED | EXPIRED, expiry_date }.
  • If the acceptance link expires before the recipient responds, the item will not be fulfilled.
  • For privacy, delivery details the recipient entered themselves (phone number, address) are returned as null in order query responses.

Physical shipping tracking

For MERCHANDISE products, once shipped, tracking appears in order_items[].delivery.shipping{ tracking_number, courier }.


Did this page help you?