Skip to main content
Esta é a parte da API que mais gera ticket de suporte, então vale começar pelo ponto:
GET /v1/products pode devolver uma lista vazia com a sua loja cheia de produtos. Não é bug. São duas coleções diferentes.

Produto de cobrança

Criado pela API, com POST /v1/products.Tem priceCents (número inteiro).É o único aceito em POST /v1/payments e POST /v1/subscriptions.Vive em /v1/products.

Produto da loja

Criado no painel, na sua loja do Discord.Tem price (texto tipo "49,90"), categoria, variações e estoque.Não serve para gerar cobrança pela API.Vive em /v1/store/products, somente leitura.
Os dois não vêm juntos por padrão porque a forma é diferente. Código fazendo priceCents / 100 viraria NaN ao receber um produto de loja, e quem repassasse um id de loja para criar cobrança levaria 404 sem entender o motivo.

Pedindo os dois de uma vez

GET /v1/products?include=all
Todas aceitam ?includeInactive=true para incluir os desativados.
Se GET /v1/products vier vazio e você tiver produtos na loja, a resposta traz um campo hint apontando a rota certa. Ele é aditivo, então quem só lê products não sente diferença.

Produtos de cobrança

Criar
string
required
Até 200 caracteres.
integer
required
Preço em centavos. Mínimo de 100, ou seja R$ 1,00.
string
Até 500 caracteres.
string
default:"BRL"
Produto em outra moeda é convertido para real na hora de gerar a cobrança.
string
String JSON de até 2 KB, devolvida sem alteração.
O PUT aceita os mesmos campos, todos opcionais, mais active para ativar ou desativar. Mande apenas o que quer mudar. Limite de 500 produtos por conta e por ambiente.
Repare que o mínimo de um produto (R$ 1,00) é diferente do mínimo de uma cobrança avulsa (R$ 0,80, ajustável pela loja). Não é inconsistência: produto é catálogo, cobrança é transação.

Produtos da loja

Leitura apenas. Para criar ou editar, use o painel.

Estoque ilimitado vem como null

Variação com fornecedor externo, estoque via API ou estoque fictício infinito não tem um número para contar. Nesses casos stock vem null e unlimited vem true.O valor não é 0, justamente porque zero você leria como esgotado e esconderia um produto que está à venda.
Na prática, a checagem correta é:

O que não sai nessa rota

O conteúdo do estoque (a chave, a conta ou o link que o comprador recebe) e as instruções de entrega não são retornados. Variações de seller ainda não aprovadas também ficam de fora, porque não são vendáveis.
Para ver o que foi entregue em um pagamento específico, existe a rota de entrega.