---
title: "Contrata e paga a oferta mensal com cartão pela API, quando habilitado."
method: POST
path: "/api/credito/assinaturas"
---

# Contrata e paga a oferta mensal com cartão pela API, quando habilitado.

`POST /api/credito/assinaturas`

## Request

- Base URL: `https://okfindex.com`
- URL: `https://okfindex.com/api/credito/assinaturas`
- Auth: none declared. Required headers: `Origin`, `X-CSRF-Token`

Exige venda mensal ativa ou homologação habilitada e pagamento de teste autorizado pelo servidor. Sem essa autorização, responde 404. Exige sessão autenticada nos últimos cinco minutos. Não aceita Authorization ou X-Api-Key. Envie somente os campos declarados, com JSON até 4 KiB e HTTPS. recurso só é aceito quando o produto exige e confirma sua titularidade no servidor. simulado deve coincidir com o catálogo e com o ambiente autorizado deste pedido. Se o bilhete vencer, o servidor recusa a troca para produção antes de criar a cobrança. Preço e benefícios vêm do servidor. O cartão passa somente nesta requisição ao Asaas; não é salvo nem devolvido. O IP do comprador vem do servidor, nunca do corpo. Aguarde até 120 segundos. Repetir a oferta retorna a reserva existente. Resultado inconclusivo exige consulta pela referência antes de outra criação. A criação não concede benefício. O pagamento confirmado no Asaas concede o período pago.
Returns: { recurso, id, oferta_id, oferta{id,produto,versao,preco_centavos,moeda,ciclo,renovacao_automatica,compromisso_meses,cancelamento,acesso_pago,teste_dias,conversao_teste,beneficios,hash}, estado, simulado, pagamento_em, criado_em, atualizado_em, cancelamento_em, cancelado_em }

## Query parameters

- `dev` string
- `x402_dev` string

## Headers

- `X-X402-Dev` string
- `Origin` string, required
- `X-CSRF-Token` string, required

## Request body

- object
  - `recurso` string: Obrigatório somente no produto que vende por recurso. O servidor confirma que a conta é dona dele.
  - `simulado` boolean, required: Valor do catálogo. Declara intenção; não concede autorização de teste.
  - `aceite` AceiteDeAssinatura, required
    - `oferta_id` string, required: ID recebido no catálogo atual.
    - `versao` integer, required: Versão recebida no catálogo atual.
    - `hash` string, required: Hash de 64 caracteres recebido no catálogo atual.
    - `renovacao` boolean, required: Deve ser true após o aceite explícito da cobrança mensal e da renovação.
  - `cartao` CartaoDeAssinatura, required
    - `titular` string, required: Nome no cartão: 3 a 100 caracteres.
    - `numero` string, required: Número válido de 13 a 19 dígitos; aceita espaços e separadores.
    - `mes` string, required: Mês de validade: 1 a 12.
    - `ano` string, required: Ano de validade com quatro dígitos; o cartão não pode estar vencido.
    - `cvv` string, required: Código de segurança: três dígitos; quatro para American Express.
    - `documento` string, required: CPF ou CNPJ válido do titular.
    - `email` string, required: E-mail do titular: até 254 caracteres.
    - `cep` string, required: CEP de cobrança do titular: oito dígitos.
    - `numero_endereco` string, required: Número do endereço de cobrança: até 20 caracteres.
    - `telefone` string, required: Telefone do titular: 10 a 13 dígitos.

## Response `200`

{ recurso, id, oferta_id, oferta{id,produto,versao,preco_centavos,moeda,ciclo,renovacao_automatica,compromisso_meses,cancelamento,acesso_pago,teste_dias,conversao_teste,beneficios,hash}, estado, simulado, pagamento_em, criado_em, atualizado_em, cancelamento_em, cancelado_em }

- RegistroDeAssinatura
  - `recurso` string, required: Recurso do produto: até 256 caracteres, sem controles. Filtra a assinatura da própria conta; vazio indica compra por conta.
  - `id` string, required: ID local de 32 caracteres hexadecimais; identifica a consulta e o cancelamento.
  - `oferta_id` string, required: ID da oferta aceita.
  - `oferta` OfertaDeAssinatura, required
    - `id` string, required: ID da oferta: 2 a 64 caracteres; letra inicial, letras minúsculas, números, hífen ou underscore.
    - `produto` string, required: Produto da oferta; mesmo formato do ID.
    - `versao` integer, required: Versão de 1 a 1.000.000.
    - `preco_centavos` integer, required: Preço mensal em centavos: de 500 a 1.000.000.
    - `moeda` string, required: Moeda fixa: BRL.
    - `ciclo` string, required: Periodicidade fixa: MONTHLY.
    - `renovacao_automatica` boolean, required: true: repete a cobrança mensal até o cancelamento.
    - `compromisso_meses` integer, required: 1: um período mensal.
    - `cancelamento` string, required: stop_future_charges: interrompe novas cobranças.
    - `acesso_pago` string, required: until_paid_period_end: mantém o acesso até o fim do período pago.
    - `teste_dias` integer, required: Prazo configurado de 0 a 30 dias. O catálogo não concede teste ou benefício.
    - `conversao_teste` string, required: opt_in: o teste não contrata ou renova por inferência.
    - `beneficios` BeneficioDeAssinatura[], required: De 1 a 8 capacidades distintas por período pago.
      - `sku` string, required: Capacidade do produto: letra minúscula seguida de letras, números ou underscore; até 64 caracteres.
      - `quantidade` integer, required: Unidades de 1 a 1.000.000 para cada período pago.
    - `hash` string, required: SHA-256 da oferta completa: 64 caracteres hexadecimais minúsculos.
  - `estado` string, required: criando, inconclusiva, checkout, aguardando_pagamento, ativa, cancelando, cancelada, falhou ou expirada.
  - `simulado` boolean, required: Ambiente gravado pelo servidor: true para sandbox, false para produção.
  - `pagamento_em` string, nullable, required: Null na contratação por API. Registros antigos podem ter link HTTPS Asaas no estado checkout.
  - `criado_em` string, required: Data e hora UTC da criação da assinatura.
  - `atualizado_em` string, required: Data e hora UTC da última alteração.
  - `cancelamento_em` string, nullable, required: Data e hora UTC do pedido de cancelamento, ou null.
  - `cancelado_em` string, nullable, required: Data e hora UTC do cancelamento confirmado, ou null.

## Other responses

- `400`: Corpo, query, oferta, aceite, cartão ou ambiente inválido; cartão recusado.
- `401`: Sessão ausente ou inválida; chave de API não autoriza estes pedidos.
- `403`: Origem ou cookie inválido; na escrita, proteção CSRF inválida.
- `404`: Venda e homologação não autorizadas; assinatura inexistente, de outra conta, produto, recebedor ou ambiente.
- `409`: Estado incompatível ou outra oferta já reservada para esta conta e produto.
- `413`: Corpo JSON acima de 4 KiB.
- `415`: Tipo do corpo diferente de application/json, ou corpo comprimido.
- `429`: A conta atingiu o limite diário de criação de cobranças.
- `431`: Cabeçalho de cookies acima de 8 KiB.
- `503`: Conta, banco, configuração ou provedor indisponível; limite de quatro operações simultâneas atingido.

---

[API](https://skmtc.dev/okfindex/apis/okf-index.md) · [All operations](https://skmtc.dev/okfindex/apis/okf-index/llms.txt) · [OpenAPI document](https://skmtc.dev/okfindex/apis/okf-index/revisions/4b13ca3c739f?raw)
