Ofereça o meio de pagamento que encanta seus clientes

Integre o checkout preferido de quem mais consome na internet e crie uma experiência “WOW”!


Suggest Edits

Introdução

 

A Wirecard Assinaturas (Cobrança Recorrente) é uma solução da Wirecard que permite você fazer cobranças de forma automática, no valor e intervalo que escolher por meio da criação de planos. Pela Wirecard Assinaturas é possível gerenciar mensalidades, assinaturas e cobranças recorrentes, podendo ser utilizado desde para a cobrança de assinaturas de conteúdo até para a cobrança de utilização de softwares.

IMPORTANTE

1. A API de Cobrança Recorrente (Assinaturas) segue um padrão diferente da API V2 da Wirecard, por isso os recursos não são compartilhados entre elas. Em breve disponibilizaremos uma nova versão da Wirecard Assinaturas em que será possível compartilhar os recursos.

2. O processamento por pagamentos com cartão de crédito em Assinaturas aceita as seguintes bandeiras: Visa, MasterCard, Dinners Club, American Express e Elo.

Ambientes

Todos os exemplos dispostos nessa documentação fazem referência ao ambiente de testes (Sandbox) Wirecard, onde não ocorrem cobranças reais. Contudo, o comportamento executado em ambiente Sandbox é idêntico ao ambiente real (Produção).

Após realizar sua implementação usando o ambiente de sandbox você deve alterar suas chaves de autenticação e o endpoint para apontar as chamadas para o ambiente de produção.

  • Produção: https://api.moip.com.br/assinaturas/v1
  • Sandbox: https://sandbox.moip.com.br/assinaturas/v1
 
Suggest Edits

Autenticação

 

A autenticação na Wirecard Assinaturas é a mesma de sua conta da Wirecard convencional. Usando sua conta de produção para se autenticar exclusivamente em produção e sua conta em ambiente de Sandbox para se autenticar em Sandbox.

Separamos os ambientes para que você tenha mais liberdade em cada ambiente e não se perca no meio do caminho.

Siga o Passo a Passo abaixo para obter suas credenciais:

  • Crie uma conta da Wirecard para vendedores em ambiente Sandbox. Clique aqui para criar a conta, caso ainda não tenha.
  • Acesse o menu Configurações >> Configurações técnicas >> Chaves de Acesso para obter suas chaves de autenticação - Se preferir, clique aqui.
  • Com suas credenciais em mãos gere um hash base64 composto por seu token:chave. Veja exemplo abaixo:

Authorization: Basic BASE64(MOIP_API_TOKEN:MOIP_API_KEY)

O resultado será semelhante a:

Authorization: Basic MDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDE6QUJBQkFCQUJBQkFCQUJBQkFCQUJBQkFCQUJBQkFCQUJBQkFCQUJBQg==

Você pode utilizar as credenciais acima para efetuar os testes. Em todos exemplos de requisições há chaves de testes válidas para o consumo da API.

DICA

Se sua ferramenta de desenvolvimento não faz criptografia automaticamente você pode fazê-la em sites como o Base64 encode. Para isso basta inserir as chaves (separadas por :) no campo vazio e clicar em ENCODE.

 
Suggest Edits

Planos

O Plano é semelhante a um produto para o modelo de assinaturas. Um plano contém as configurações que uma assinatura vai seguir, como valor e intervalo de cobrança. Crie os planos que deseja oferecer para os seus clientes assinarem.

 

Atributos

Nome
Descrição
Detalhes

code

Identificador do plano na sua aplicação.

string(65),
obrigatório

name

Nome do plano na sua aplicação.

string(65),
obrigatório

description

Descrição do plano.

string(65)

amount

Valor do plano a ser cobrado em centavos de Real.

integer(11),
obrigatório

setup_fee

Taxa de contratação a ser cobrada na assinatura em centavos de Real.

integer(11)

interval

Estrutura de intervalo do plano, contendo unit e length.

structured

├─unit

A unidade de medida do intervalo de cobrança, o default é MONTH. Opções: DAY, MONTH, YEAR.

string

└─length

A duração do intervalo de cobrança, default é 1.

integer(11)

billing_cycles

Quantidade de ciclos (faturas) que a assinatura terá até expirar (se não informar, não haverá expiração). O período de TRIAL consome uma unidade do billing cycle.

integer(11)

trial

Estrutura de trial, contendo days, enabled e hold_setup_fee.

structured

├─days

Número de dias de trial do plano.

integer(11)

├─enabled

Determina se o trial está ou não habilitado. Opções: TRUE ou FALSE, default é FALSE.

boolean

└─hold_setup_fee

Determina se o setup_fee será cobrado antes ou após o período de trial. Opções: TRUE (após) ou FALSE (antes). Default é TRUE.

boolean

status

Status do plano. Pode ser ACTIVE ou INACTIVE. O default é ACTIVE.

boolean

max_qty

Quantidade máxima de assinaturas do plano (se não informado, não haverá limite).

integer(11)

payment_method

Formas de pagamentos aceitas no plano. BOLETO, CREDIT_CARD ou ALL. Caso o atributo não seja informado, a forma de pagamento default é CREDIT_CARD.

string

id

Código identificador do plano retornado pela Wirecard. Exemplo: PLA-CXQLAL2NRN8G

string,
response

 
Suggest Edits

Criar Plano

Por meio desta API é possível criar um Plano.

 
posthttps://sandbox.moip.com.br/assinaturas/v1/plans

Body Params

code
string
required

Identificador do plano na sua aplicação. Até 65 caracteres.

name
string
required

Nome do plano na sua aplicação. Até 65 caracteres.

description
string

Descrição do plano na sua aplicação. Até 250 caracteres.

amount
int32
required

Valor do plano a ser cobrado em centavos de Real.

setup_fee
int32

Taxa de contratação a ser cobrada na assinatura em centavos de Real. Caso não queira cobrar taxa de contratação para o plano, o campo setup_fee precisa ficar em branco ou não enviar esse atributo.

interval
object
interval.unit
string

A unidade de medida do intervalo de cobrança, o default é MONTH. Opções: DAY, MONTH, YEAR.

interval.length
int32

A duração do intervalo de cobrança, default é 1.

billing_cycles
int32

Quantidade de ciclos (faturas) que a assinatura terá até expirar (se não informar, não haverá expiração).

trial
object
trial.days
int32

Número de dias de trial do plano.

trial.enabled
boolean

Determina se o trial está ou não habilitado. Opções: TRUE ou FALSE, default é FALSE.

trial.hold_setup_fee
boolean

Determina se o setup_fee será cobrado antes ou após o período de trial. Opções: TRUE (após) ou FALSE (antes).

status
boolean

Status do plano. Pode ser ACTIVE ou INACTIVE. O padrão é ACTIVE. O status do plano deve ser informado. Caso não seja informado, será considerado ACTIVE.

max_qty
int32

Quantidade máxima de assinaturas do plano (não há limite se não informar).

payment_method
string

Formas de pagamentos aceitas no plano. BOLETO, CREDIT_CARD ou ALL. Caso o atributo não seja informado, a forma de pagamento default é CREDIT_CARD.

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

Content-Type
string
required

application/json

 
{
  "code": "plan101",
  "name": "Plano Especial",
  "description": "Descrição do Plano Especial",
  "amount": 990,
  "setup_fee": 500,
  "max_qty": 1,
  "interval": {
    "length": 1,
    "unit": "MONTH"
  },
  "billing_cycles": 12,
  "trial": {
    "days": 30,
    "enabled": true,
    "hold_setup_fee": true
  },
  "payment_method": "CREDIT_CARD"
}
/**
* Este exemplo usa a SDK do Moip de Node, disponível 
* em: https://github.com/moip/moip-sdk-node
*/
const moip = require('moip-sdk-node').default({
    token: 'your-token',
    key: 'your-key',
    production: false
});

moip.plan.create({
  code: "plan101",
  name: "Plano Especial",
  description: "Descrição do Plano Especial",
  amount: 990,
  setup_fee: 500,
  max_qty: 1,
  interval: {
    length: 1,
    unit: "MONTH"
  },
  billing_cycles: 12,
  trial: {
    days: 30,
    enabled: true,
    hold_setup_fee: true
  },
  payment_method: "CREDIT_CARD"
}).then((response) => {
    console.log(response.body) 
}).catch((response) => {
    console.log(response.body) 
})
A binary file was returned

You couldn't be authenticated

{
  "message": "Plano criado com sucesso",
  "alerts": [
    {
      "description": "O status do plano deve ser informado. Caso não seja informado, será considerado ACTIVE",
      "code": "MA30"
    }
  ]
}
 
Suggest Edits

Listar Planos

Por meio desta API é possível listar Planos criados.

 
gethttps://sandbox.moip.com.br/assinaturas/v1/plans

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

 
curl --request GET \
  --url https://sandbox.moip.com.br/assinaturas/v1/plans \
  --header 'authorization: Authorization'
/**
* Este exemplo usa a SDK do Moip de Node, disponível 
* em: https://github.com/moip/moip-sdk-node
*/
const moip = require('moip-sdk-node').default({
    token: 'your-token',
    key: 'your-key',
    production: false
});

moip.plan.getAll()
.then((response) => {
    console.log(response.body) 
}).catch((response) => {
    console.log(response.body) 
})
A binary file was returned

You couldn't be authenticated

{
  "plans": [
    {
      "amount": 330,
      "max_qty": 1,
      "setup_fee": 600,
      "interval": {
        "unit": "MONTH",
        "length": 1
      },
      "status": "ACTIVE",
      "description": "Descrição do Plano",
      "name": "Novo Plano",
      "billing_cycles": 8,
      "code": "planonew",
      "payment_method": "CREDIT_CARD",
      "trial": {
        "enabled": true,
        "days": 30,
        "hold_setup_fee": true
      }
    },
    {
      "amount": 990,
      "max_qty": 1,
      "setup_fee": 500,
      "interval": {
        "unit": "MONTH",
        "length": 1
      },
      "status": "ACTIVE",
      "description": "Descrição do Plano Especial",
      "name": "Plano Especial",
      "billing_cycles": 12,
      "code": "plan1011",
      "payment_method": "CREDIT_CARD",
      "trial": {
        "enabled": true,
        "days": 30,
        "hold_setup_fee": true
      }
    },
    {
      "amount": 990,
      "max_qty": 1,
      "setup_fee": 500,
      "interval": {
        "unit": "MONTH",
        "length": 1
      },
      "status": "ACTIVE",
      "description": "Descrição do Plano Especial",
      "name": "Plano Especial",
      "billing_cycles": 12,
      "code": "plan101",
      "payment_method": "CREDIT_CARD",
      "trial": {
        "enabled": true,
        "days": 30,
        "hold_setup_fee": true
      }
    },
    {
      "amount": 990,
      "max_qty": 1,
      "setup_fee": 500,
      "interval": {
        "unit": "MONTH",
        "length": 1
      },
      "status": "ACTIVE",
      "description": "Descrição do Plano Especial",
      "name": "Plano Especial",
      "billing_cycles": 12,
      "code": "plano021",
      "payment_method": "CREDIT_CARD",
      "trial": {
        "enabled": true,
        "days": 30,
        "hold_setup_fee": true
      }
    },
    {
      "amount": 990,
      "max_qty": 1,
      "setup_fee": 500,
      "interval": {
        "unit": "MONTH",
        "length": 1
      },
      "status": "ACTIVE",
      "description": "Descrição do Plano Especial",
      "name": "Plano Especial",
      "billing_cycles": 12,
      "code": "plano01",
      "payment_method": "CREDIT_CARD",
      "trial": {
        "enabled": true,
        "days": 30,
        "hold_setup_fee": true
      }
    }
  ]
}
 
Suggest Edits

Consultar Plano

Por meio desta API é possível consultar um Plano.

 
gethttps://sandbox.moip.com.br/assinaturas/v1/plans/code

Path Params

code
string
required

Código do plano

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

 
curl --request GET \
  --url https://sandbox.moip.com.br/assinaturas/v1/plans/code \
  --header 'authorization: Authorization'
/**
* Este exemplo usa a SDK do Moip de Node, disponível 
* em: https://github.com/moip/moip-sdk-node
*/
const moip = require('moip-sdk-node').default({
    token: 'your-token',
    key: 'your-key',
    production: false
});

moip.plan.getOne('plan101')
.then((response) => {
    console.log(response.body) 
}).catch((response) => {
    console.log(response.body) 
})
A binary file was returned

You couldn't be authenticated

{
  "amount": 990,
  "max_qty": 1,
  "setup_fee": 500,
  "interval": {
    "unit": "MONTH",
    "length": 1
  },
  "status": "ACTIVE",
  "description": "Descrição do Plano Especial",
  "name": "Plano Especial",
  "billing_cycles": 12,
  "code": "plan101",
  "trial": {
    "enabled": true,
    "days": 30,
    "hold_setup_fee": true
  },
  "payment_method": "CREDIT_CARD"
}
 
Suggest Edits

Ativar Plano

Por meio desta API é possível ativar um Plano.

 
puthttps://sandbox.moip.com.br/assinaturas/v1/plans/code/activate

Path Params

code
string
required

Código do plano

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

Content-Type
string
required

application/json

 
curl --request PUT \
  --url https://sandbox.moip.com.br/assinaturas/v1/plans/code/activate \
  --header 'authorization: Authorization' \
  --header 'content-type: Content-Type'
var request = require("request");

var options = { method: 'PUT',
  url:
   'https://sandbox.moip.com.br/assinaturas/v1/plans/code/activate',
  headers:
   { 'content-type': 'Content-Type',
     authorization: 'Authorization' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://sandbox.moip.com.br/assinaturas/v1/plans/code/activate")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)
request["authorization"] = 'Authorization'
request["content-type"] = 'Content-Type'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("PUT", "https://sandbox.moip.com.br/assinaturas/v1/plans/code/activate");
xhr.setRequestHeader("authorization", "Authorization");
xhr.setRequestHeader("content-type", "Content-Type");

xhr.send(data);
import requests

url = "https://sandbox.moip.com.br/assinaturas/v1/plans/code/activate"

headers = {
    'authorization': "Authorization",
    'content-type': "Content-Type"
    }

response = requests.request("PUT", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

/* Em caso de sucesso (200 OK) a API retornará uma mensagem vazia */
 
Suggest Edits

Desativar Plano

Por meio desta API é possível desativar um Plano.

 
puthttps://sandbox.moip.com.br/assinaturas/v1/plans/code/inactivate

Path Params

code
string
required

Código do plano.

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

Content-Type
string
required

application/json

 
curl --request PUT \
  --url https://sandbox.moip.com.br/assinaturas/v1/plans/code/inactivate \
  --header 'authorization: Authorization' \
  --header 'content-type: Content-Type'
var request = require("request");

var options = { method: 'PUT',
  url:
   'https://sandbox.moip.com.br/assinaturas/v1/plans/code/inactivate',
  headers:
   { 'content-type': 'Content-Type',
     authorization: 'Authorization' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://sandbox.moip.com.br/assinaturas/v1/plans/code/inactivate")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)
request["authorization"] = 'Authorization'
request["content-type"] = 'Content-Type'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("PUT", "https://sandbox.moip.com.br/assinaturas/v1/plans/code/inactivate");
xhr.setRequestHeader("authorization", "Authorization");
xhr.setRequestHeader("content-type", "Content-Type");

xhr.send(data);
import requests

url = "https://sandbox.moip.com.br/assinaturas/v1/plans/code/inactivate"

headers = {
    'authorization': "Authorization",
    'content-type': "Content-Type"
    }

response = requests.request("PUT", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

/* Em caso de sucesso (200 OK) a API retornará uma mensagem vazia */
 
Suggest Edits

Alterar Plano

É possível alterar os dados de um plano criado por meio da API e pela área logada. Contudo, se o plano já possuir assinaturas, algumas informações sensíveis (como valor e intervalo) não poderão ser alteradas para não afetar as assinaturas criadas.

 
puthttps://sandbox.moip.com.br/assinaturas/v1/plans/code

Path Params

code
string
required

Código do plano.

Body Params

name
string

Nome do plano. Até 65 caracteres.

description
string

Descrição do plano. Até 255 caracteres.

amount
int32

Valor do plano a ser cobrado em centavos de Real.

setup_fee
int32

Taxa de contratação a ser cobrada na assinatura em centavos de Real.

interval
object
interval.unit
string

A unidade de medida do intervalo de cobrança, o default é MONTH. Opções: DAY, MONTH, YEAR.

interval.length
int32

A duração do intervalo de cobrança, default é 1.

billing_cycles
int32

Quantidade de ciclos (faturas) que a assinatura terá até expirar (se não informar, não haverá expiração).

trial
object
trial.days
int32

Número de dias de trial do plano.

trial.enabled
boolean

Determina se o trial está ou não habilitado. Opções: TRUE ou FALSE, default é FALSE.

status
boolean

Status do plano. Pode ser ACTIVE ou INACTIVE. O padrão é ACTIVE.

max_qty
int32

Quantidade máxima de assinaturas do plano (não há limite se não informar).

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

Content-Type
string
required

application/json

ATENÇÃO

Fique atento aos atributos que podem ser alterados e em quais situações. Observe o quadro abaixo.

Atributo
Alteração

name

Sempre

description

Sempre

amount

Sempre
Assinaturas existentes não são afetadas

setup_fee

Sempre

interval

Apenas se não houver assinaturas

├──unit

Apenas se não houver assinaturas

└──length

Apenas se não houver assinaturas

billing_cycles

Apenas se não houver assinaturas

trial

Sempre

├──days

Sempre

└──enabled

Sempre

status

Sempre

max_qty

Sempre

{
  "name": "Plano Especial",
  "description": "Nova descrição",
  "amount": 1290,
  "setup_fee": 800,
  "max_qty": 1,
  "payment_method": "CREDIT_CARD",
  "interval": {
    "length": 1,
    "unit": "MONTH"
  },
  "billing_cycles": 12,
  "trial": {
    "days": 30,
    "enabled": true,
    "hold_setup_fee": true
  }
}
A binary file was returned

You couldn't be authenticated

/* Em caso de sucesso (200 OK) a API retornará uma mensagem vazia */
 
Suggest Edits

Assinantes

Para criar uma assinatura, você precisa cadastrar um cliente(assinante) com os dados de pagamento. Isso pode ser feito por meio desta API ou no ato de criação da assinatura

 
Nome
Descrição
Detalhes

code

Identificador do cliente na sua aplicação. Até 65 caracteres.

string,
obrigatório

fullname

Nome completo do cliente. Até 150 caracteres.

string,
obrigatório

email

Email do cliente.

string,
obrigatório

cpf

CPF do cliente. Apenas dígitos numéricos.

string,
obrigatório

phone_area_code

Código de área do telefone do titular (DDD). 2 carateres sem máscara.

integer,
obrigatório

phone_number

Telefone do titular, 8 ou 9 caracteres sem máscara.

integer,
obrigatório

birthdate_day

Dia do nascimento. Válido 1 a 31.

integer,
obrigatório

birthdate_month

Mês do nascimento. Válido 1 a 12.

integer,
obrigatório

birthdate_year

Ano do nascimento. 4 dígitos.

integer,
obrigatório

address

Node com os atributos do endereço.

object,
obrigatório

├──street

Logradouro do endereço.

string,
obrigatório

├──number

Número do endereço

integer,
obrigatório

├──complement

Complemento do endereço

string

├──city

Cidade.

string,
obrigatório

├──district

Bairro.

string,
obrigatório

├──state

Estado (sigla). Exemplo: MG

string,
obrigatório

├──country

País em formato ISO-alpha3. Exemplo BRA.

string,
obrigatório

└──zipcode

CEP do endereço. Sem máscara.

integer,
obrigatório

billing_info

Dados de pagamento desse cliente.

object

├──credit_card

Dados de cartão de crédito.

object

│ ├──holder_name

Nome do portador.

string

│ ├──number

Número do cartão de crédito.

integer

│ ├──expiration_month

Mês de expiração do cartão.

integer

│ ├──expiration_year

Ano de expiração do cartão.

integer

└└──vault

Cofre de um cartão de crédito, se já foi cadastrado para este mesmo cliente anteriormente. Caso informe o cofre, os demais dados do cartão não precisam ser informados.

string

 
Suggest Edits

Criar Assinante

 
posthttps://sandbox.moip.com.br/assinaturas/v1/customers?new_vault=true_or_false

Path Params

new_vault
string
required

Se new_vault=true, o envio do node credit_card é obrigatório. Utilize isso para criar um assinante com dados de cartão e gerar um cofre para guardar os dados de pagamento com segurança no Moip.

Body Params

code
string
required

Identificador do cliente na sua aplicação. Até 65 caracteres.

fullname
string
required

Nome completo do cliente. Até 150 caracteres.

email
string
required

Email do cliente.

cpf
string
required

CPF do cliente. Apenas dígitos numéricos.

phone_area_code
int32
required

Código de área do telefone do titular (DDD). 2 caracteres sem máscara.

phone_number
int32
required

Telefone do titular, 8 ou 9 caracteres sem máscara.

birthdate_day
int32
required

Dia do nascimento. Válido 1 a 31.

birthdate_month
int32
required

Mês do nascimento. Válido 1 a 12.

birthdate_year
int32
required

Ano do nascimento. 4 dígitos.

address
object
address.street
string
required

Logradouro do endereço.

address.number
string
required

Número do endereço

address.city
string
required

Cidade.

address.district
string
required

Bairro.

address.state
string
required

Estado (sigla). Exemplo: MG

address.country
string
required

País em formato ISO-alpha3, exemplo BRA.

address.zipcode
int32
required

CEP do endereço. Sem máscara.

billing_info
object
billing_info.credit_card
object
billing_info.credit_card.holder_name
string

Nome do portador.

billing_info.credit_card.number
string

Número do cartão de crédito.

billing_info.credit_card.expiration_month
string

Mês de expiração do cartão.

billing_info.credit_card.expiration_year
string

Ano de expiração do cartão.

billing_info.credit_card.vault
string

Cofre de um cartão de crédito, se já foi cadastrado para este mesmo cliente anteriormente. Caso informe o cofre, os demais dados do cartão não precisam ser informados.

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

Content-Type
string
required

application/json

 
{
  "code": "cliente01",
  "email": "nome@exemplo.com.br",
  "fullname": "Nome Sobrenome",
  "cpf": "22222222222",
  "phone_area_code": "11",
  "phone_number": "934343434",
  "birthdate_day": "26",
  "birthdate_month": "04",
  "birthdate_year": "1980",
  "address": {
    "street": "Rua Nome da Rua",
    "number": "100",
    "complement": "Casa",
    "district": "Nome do Bairro",
    "city": "São Paulo",
    "state": "SP",
    "country": "BRA",
    "zipcode": "05015010"
  },
  "billing_info": {
    "credit_card": {
      "holder_name": "Nome Completo",
      "number": "4111111111111111",
      "expiration_month": "06",
      "expiration_year": "22"
    }
  }
}
/**
* Este exemplo usa a SDK do Moip de Node, disponível 
* em: https://github.com/moip/moip-sdk-node
*/
const moip = require('moip-sdk-node').default({
    token: 'your-token',
    key: 'your-key',
    production: false
});
moip.subscriber.create({
  code: "cliente012018",
  email: "nome@exemplo.com.br",
  fullname: "Nome Sobrenome",
  cpf: "22222222222",
  phone_area_code: "11",
  phone_number: "934343434",
  birthdate_day: "26",
  birthdate_month: "04",
  birthdate_year: "1980",
  address: {
    street: "Rua Nome da Rua",
    number: "100",
    complement: "Casa",
    district: "Nome do Bairro",
    city: "São Paulo",
    state: "SP",
    country: "BRA",
    zipcode: "05015010"
  },
  billing_info: {
    credit_card: {
      holder_name: "Nome Completo",
      number: "4111111111111111",
      expiration_month: "06",
      expiration_year: "22"
    }
  }
}).then((response) => {
    console.log(response.body) 
}).catch((response) => {
    console.log(response.body) 
})
A binary file was returned

You couldn't be authenticated

{
  "message": "Cliente criado com Sucesso"
}
 
Suggest Edits

Listar Assinantes

Por meio desta API é possível listar os assinantes criados.

 
gethttps://sandbox.moip.com.br/assinaturas/v1/customers

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

 
curl --request GET \
  --url https://sandbox.moip.com.br/assinaturas/v1/customers \
  --header 'authorization: Authorization'
/**
* Este exemplo usa a SDK do Moip de Node, disponível 
* em: https://github.com/moip/moip-sdk-node
*/
const moip = require('moip-sdk-node').default({
    token: 'your-token',
    key: 'your-key',
    production: false
});

moip.subscriber.getAll()
.then((response) => {
    console.log(response.body) 
}).catch((response) => {
    console.log(response.body) 
})
A binary file was returned

You couldn't be authenticated

{
  "customers": [
    {
      "birthdate_month": "04",
      "phone_area_code": "11",
      "phone_number": "934343434",
      "birthdate_day": "26",
      "email": "email3@exemplo.com.br",
      "birthdate_year": "1980",
      "cpf": "33333333311",
      "code": "cliente03",
      "fullname": "Nome da Silva"
    },
    {
      "birthdate_month": "04",
      "phone_area_code": "11",
      "phone_number": "934343434",
      "birthdate_day": "26",
      "email": "nome2@exemplo.com.br",
      "birthdate_year": "1980",
      "cpf": "12345679891",
      "code": "cliente02",
      "fullname": "Cliente Sobrenome"
    },
    {
      "birthdate_month": "04",
      "phone_area_code": "11",
      "phone_number": "934343434",
      "birthdate_day": "26",
      "email": "nome@exemplo.com.br",
      "birthdate_year": "1980",
      "cpf": "22222222222",
      "code": "cliente01",
      "fullname": "Nome Sobrenome"
    }
  ]
}
 
Suggest Edits

Consultar Assinante

Por meio desta API é possível listar todos pedidos criados anteriormente. Os pedidos são ordenados pela data de criação, dos mais recentes para os mais antigos. Nesta versão da API são retornados apenas pedidos que contenham ao menos um pagamento.

 
gethttps://sandbox.moip.com.br/assinaturas/v1/customers/code

Path Params

code
string
required

Código do Assinante

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

 
curl --request GET \
  --url https://sandbox.moip.com.br/assinaturas/v1/customers/code \
  --header 'authorization: Authorization'
/**
* Este exemplo usa a SDK do Moip de Node, disponível 
* em: https://github.com/moip/moip-sdk-node
*/

const moip = require('moip-sdk-node').default({
    token: 'your-token',
    key: 'your-key',
    production: false
});
moip.subscriber.getOne('cliente02')
.then((response) => {
    console.log(response.body) 
}).catch((response) => {
    console.log(response.body) 
})
A binary file was returned

You couldn't be authenticated

{
  "creation_date": "27/11/2014",
  "birthdate_month": "04",
  "phone_area_code": "11",
  "phone_number": "934343434",
  "birthdate_day": 26,
  "address": {
    "complement": "Casa 2",
    "zipcode": "05015010",
    "street": "Rua Nome da Rua 2",
    "state": "SP",
    "number": "1002",
    "district": "Nome do Bairro 2",
    "country": "BRA",
    "city": "São Paulo"
  },
  "email": "nome2@exemplo.com.br",
  "birthdate_year": 1980,
  "creation_time": "11:11:50",
  "cpf": "12345679891",
  "code": "cliente02",
  "fullname": "Cliente Sobrenome",
  "billing_info": {
    "credit_cards": [
      {
        "holder_name": "Nome do cliente",
        "first_six_digits": "211111",
        "expiration_month": "04",
        "brand": "VISA",
        "expiration_year": "15",
        "vault": "teste-teste00-1teste-t35t3-141709",
        "last_four_digits": "1111"
      }
    ]
  }
}
 
Suggest Edits

Alterar Assinante

Requisição para alterar os dados de um assinante, exceto o seu código.

 
puthttps://sandbox.moip.com.br/assinaturas/v1/customers/code

Path Params

code
string
required

Código do Assinante

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

 
{
  "code": "cliente01",
  "email": "novoemail@exemplo.com.br",
  "fullname": "Nome Sobrenome",
  "cpf": "22222222222",
  "phone_number": "934343434",
  "phone_area_code": "11",
  "birthdate_day": "26",
  "birthdate_month": "04",
  "birthdate_year": "1986",
  "address": {
    "street": "Rua nova rua",
    "number": "100",
    "complement": "Casa",
    "district": "Bairro",
    "city": "São Paulo",
    "state": "SP",
    "country": "BRA",
    "zipcode": "00000-000"
  }
}
A binary file was returned

You couldn't be authenticated

No response examples available
 
Suggest Edits

Atualizar Cartão do Assinante

Atualize os dados de pagamento de seu assinante.

  • É possível alterar os dados do pagamento via API, Javascript ou pela área logada da Wirecard Assinaturas.
 
puthttps://sandbox.moip.com.br/assinaturas/v1/customers/code/billing_infos

Path Params

code
string
required

Código do Assinante

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

ATENÇÃO

Ao realizar qualquer processo que envolva dados sensíveis de cartão de crédito em seu ambiente, é altamente recomendado que você siga as normas e boas práticas do PCI Compliance para garantir a segurança de sua aplicação e dos dados de seus clientes.

{
  "credit_card": {
    "holder_name": "Novo nome",
    "number": "5555666677778884",
    "expiration_month": "12",
    "expiration_year": "20"
  }
}
A binary file was returned

You couldn't be authenticated

{
"message": "Dados alterados com sucesso"
}
 
Suggest Edits

Assinaturas

Uma assinatura permite a cobrança recorrente de um cliente(assinante) de forma automática e simples. Para criar uma nova assinatura, basta informar o plano, o cliente da assinatura e um identificador para ela. Se quiser, é possível criar o cliente e seus dados de pagamento junto com a assinatura. Para isso, recomendamos utilizar o moip-assinaturas.js.

 
Nome
Descrição
Detalhes

code

Seu ID próprio da assinatura. Não deve ser duplicado.

string(65),
obrigatório

amount

Valor da assinatura em centavos. Caso não seja informado, a assinatura é criada com o valor especificado no plano. Caso informado, esse valor sobrescreve o valor do plano contratado. Ex: R$ 100,00 deve ser informado como "10000".
ATENÇÃO: o cliente deve estar ciente e de acordo em ser cobrado um valor diferente do plano escolhido.

string

payment_method

Meio de pagamento. Valores possíveis: CREDIT_CARD, BOLETO. Importante: para utilizar a opção BOLETO é preciso habilitar a opção de "Enviar e-mail para o comprador" na configuração de Notificações de Assinaturas na conta Moip.

string,
obrigatório

plan

Node de informações do plano que será usado na assinatura

object,
obrigatório

└─code

Identificador de um plano existente no qual a assinatura será associada.

string,
obrigatório

customer

Caso a flag new_customer seja true, você deve passar todos os dados obrigatórios desse objeto, caso a assinatura esteja sendo criada para um cliente já existente (new_customer igual a false), só é necessário passar o code do cliente.

object

├─code

Id que você gera para o cliente. Importante: caso esteja utilizando um cliente já existente, basta passar esse id e os outros dados de customer não são necessários.

string,
obrigatório

├─email

Email do cliente. Limite de caracteres: (45)

string,
obrigatório

├─fullname

Nome completo do cliente. Limite de caracteres: (90)

string,
obrigatório

├─cpf

CPF do cliente.

string,
obrigatório

├─phone_number

Número de telefone do cliente. Somente números e não incluir código de area.

string,
obrigatório

├─phone_area_code

DDD (código local) do telefone.

string,
obrigatório

├─birthdate_day

Dia de nascimento.

string,
obrigatório

├─birthdate_month

Mês de nascimento.

string,
obrigatório

└─birthdate_year

Ano de nascimento.

string,
obrigatório

address

Endereço

object

├─street

Logradouro do endereço.

string,
obrigatório

├─number

Número.

string

├─complement

Complemento.

string

├─district

Bairro.

string,
obrigatório

├─city

Cidade.

string,
obrigatório

├─state

Estado.

string,
obrigatório

├─country

País em formato ISO-alpha3, exemplo BRA ou ARG.

string,
obrigatório

└─zipcode

CEP do endereço. Limite de caracteres: (8)

string,
obrigatório

billing_info

Se o payment_method for BOLETO, não é necessário passar esse objeto.

object

├─credit_card

Informações do cartão de crédito caso o pagamento seja CREDIT_CARD

object

├─ ├─holder_name

Nome do portador do cartão como está no cartão.

string,
obrigatório

├─ ├─number

Número do cartão (somente números, sem espaços).

string,
obrigatório

├─ ├─expiration_month

Mês de expiração do cartão.

string,
obrigatório

└─ └─expiration_year

Ano de expiração do cartão. Importante: A data de expiração do cartão deve estar no futuro.

string,
obrigatório

pro_rata

Campo para especificar se assinatura deve ser criada com pró-rata ou não. Valores possíveis: true e false

string

best_invoice_date

object

├─day_of_month

Define o dia do mês que deverá ser atribuído como melhor dia para pagar. Valores disponíveis: De 1 até 31. Se for informado um valor maior que a quantidade de dias do mês, será automaticamente setado para o último dia do mês.

integer

└─month_of_year

Define o mês que deverá ser atribuído como melhor dia para pagar. Valores possíveis: de 1 a 12. Importante: deve ser informado apenas para assinaturas anuais.

string

 
Suggest Edits

Criar Assinaturas

Por meio desta API é possível criar uma Assinatura.

 
posthttps://sandbox.moip.com.br/assinaturas/v1/subscriptions?new_customer=true_or_false

Path Params

true_or_false
string
required

Caso queira adicionar um novo assinante à Assinatura, entre com valor true.

Body Params

code
string
required

Seu ID próprio da assinatura. Não deve ser duplicado.

amount
string

Valor da assinatura em centavos. Caso não seja informado, a assinatura é criada com o valor especificado no plano. Caso informado, esse valor sobrescreve o valor do plano. Ex: R$ 100,00 deve ser informado como "10000"

plan
object

Detalhes sobre o plano

plan.code
string
required

Identificador de um plano existente no qual a assinatura será associada.

payment_method
string
required

Meio de pagamento. Valores possíveis: CREDIT_CARD, BOLETO. Importante: para utilizar a opção BOLETO é preciso habilitar a opção de "Enviar e-mail para o comprador" na configuração de Notificações de Assinaturas na conta Moip.

customer
object

Caso a flag new_costumer seja true, você deve passar todos os dados obrigatórios desse objeto, caso a assinatura esteja sendo criada para um cliente já existente (new_costumer igual a false), só é necessário passar o code do cliente.

customer.code
string
required

Id que você gera para o cliente. Importante: caso esteja utilizando um cliente já existente, basta passar esse id e os outros dados de costumer não são necessários.

customer.email
string
required

Email do cliente. Limite de caracteres: (45)

customer.fullname
string
required

Nome completo do cliente. Limite de caracteres: (90)

customer.cpf
string
required

CPF do cliente.

customer.phone_number
string
required

Número de telefone do cliente. Somente números e não incluir código de area.

customer.phone_area_code
string
required

DDD (código local) do telefone.

customer.birthdate_day
string
required

Dia de nascimento.

customer.birthdate_month
string
required

Mês de nascimento.

customer.birthdate_year
string
required

Ano de nascimento.

customer.address.street
string
required

Logradouro do endereço.

customer.address.number
string
required

Número.

customer.address.complement
string

Complemento.

customer.address.district
string
required

Bairro.

customer.address.city
string
required

Cidade.

customer.address.state
string
required

Estado.

customer.address.country
string
required

País em formato ISO-alpha3, exemplo BRA ou ARG.

customer.address.zipcode
string
required

CEP do endereço. Limite de caracteres: (8)

customer.billing_info
object

Se o payment_method for BOLETO, não é necessário passar esse objeto.

customer.billing_info.credit_card
object

Informações do cartão de crédito caso o pagamento seja CREDIT_CARD

customer.billing_info.credit_card.holder_name
string
required

Nome do portador do cartão como está no cartão.

customer.billing_info.credit_card.number
string
required

Número do cartão (somente números, sem espaços).

customer.billing_info.credit_card.expiration_month
string
required

Mês de expiração do cartão.

customer.billing_info.credit_card.expiration_year
string
required

Ano de expiração do cartão. Importante: A data de expiração do cartão deve estar no futuro.

pro_rata
string

Campo para especificar se assinatura deve ser criada com pró-rata ou não. Valores possíveis: true e false

best_invoice_date
object
best_invoice_date.day_of_month
int32

Define o dia do mês que deverá ser atribuído como melhor dia para pagar. Valores disponíveis: De 1 até 31. Se for informado um valor maior que a quantidade de dias do mês, será automaticamente setado para o último dia do mês.

best_invoice_date.month_of_year
string

Define o mês que deverá ser atribuído como melhor dia para pagar. Valores possíveis: de 1 a 12. Importante: deve ser informado apenas para assinaturas anuais.

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

Content-Type
string
required

application/json

IMPORTANTE

1. Criando uma assinatura com um assinante já cadastrado: utilize o parâmetro ?new_customer=false para informar que está utilizando um customer já existente.

2. Assinatura com Boleto: ao criar uma assinatura com BOLETO, o link para o primeiro boleto é retornado pela API já na requisição de criação. Os boletos seguintes são enviados automaticamente para o e-mail do assinante se a opção "Enviar e-mail para o comprador" estiver selecionada nas configurações de notificação de assinaturas na sua conta Moip.

3. Bandeiras aceitas para pagamentos em cartão de crédito: Visa, MasterCard, Dinners Club, American Express e Elo.

Exemplo completo de criação de assinatura com novo assinante
(lembre-se que que de passar ?new_customer=true no endpoint)

Request

{
  "code": "assinatura21",
  "amount": "9990",
  "payment_method": "CREDIT_CARD",
  "plan": {
      "name": "Plano Especial",
      "code": "planonew"
  },
  "customer": {
      "code": "cliente01",
      "email": "nome@exemplo.com.br",
      "fullname": "Nome Sobrenome",
      "cpf": "22222222222",
      "phone_number": "934343434",
      "phone_area_code": "11",
      "birthdate_day": "26",
      "birthdate_month": "04",
      "birthdate_year": "1986",
      "address": {
          "street": "Rua nome da Rua",
          "number": "170",
          "complement": "Casa",
          "district": "Bairro",
          "city": "São Paulo",
          "state": "SP",
          "country": "BRA",
          "zipcode": "00000000"
      },
      "billing_info": {
          "credit_card": {
              "holder_name": "Nome Completo",
              "number": "4111111111111111",
              "expiration_month": "04",
              "expiration_year": "25"
          }
      }
  }
}

Response

{
  "amount": 9990,
  "message": "Assinatura criada com sucesso",
  "errors": [],
  "plan": {
    "name": "Plano Especial",
    "code": "planonew"
  },
  "status": "ACTIVE",
  "invoice": {
    "amount": 9990,
    "id": 1388159,
    "status": {
      "description": "PAGO",
      "code": 5
    }
  },
  "alerts": [],
  "next_invoice_date": {
    "month": 12,
    "year": 2015,
    "day": 12
  },
  "code": "assinatura21",
  "customer": {
    "email": "diegonunescosta@gmail.com",
    "code": "1445374013",
    "fullname": "Nome Sobrenome"
  }
}

RESPOSTA

A Wirecard Assinaturas deve responder praticamente em tempo real. Contudo, como a cobrança depende de comunicação com as operadoras de cartões de crédito, em raras exceções pode haver um intervalo maior para resposta. Assim, recomendamos configurar o time-out de requisição da sua aplicação para 40 segundos.

{
    "code": "assinatura01",
    "amount": "9990",
    "payment_method": "CREDIT_CARD",
    "plan" : {
        "code" : "plano01"
    },
    "customer" : {
        "code" : "cliente01"
    }
}
/**
* Este exemplo usa a SDK do Moip de Node, disponível 
* em: https://github.com/moip/moip-sdk-node
*/
const moip = require('moip-sdk-node').default({
    token: 'your-token',
    key: 'your-key',
    production: false
});
moip.subscription.create(code: 'assinatura01', 
    amount: 9990,
    payment_method: "CREDIT_CARD",
    plan : {
        code : 'plan01'
    },
    customer : {
        code : 'cliente01'
  }  
}).then((response) => {
    console.log(response.body) 
}).catch((response) => {
    console.log(response.body) 
})
A binary file was returned

You couldn't be authenticated

{
    "amount": 9990,
    "message": "Assinatura criada com sucesso",
    "errors": [],
    "plan": {
        "name": "Plano Especial",
        "code": "plano01"
    },
    "status": "TRIAL",
    "invoice": {
        "amount": 9990,
        "id": 1000,
        "status": {
            "description": "Pago",
            "code": 3
        }
    },
    "alerts": [],
    "next_invoice_date": {
        "month": 01,
        "year": 2013,
        "day": 31
    },
    "code": "assinatura01",
    "customer": {
        "email": "nome@exemplo.com.br",
        "code": "cliente01",
        "fullname": "Nome e Sobrenome"
    }
}
 
Suggest Edits

Listar Todas Assinaturas

Por meio desta API é possível listar as assinaturas criadas.

 
gethttps://sandbox.moip.com.br/assinaturas/v1/subscriptions

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

 
curl --request GET \
  --url https://sandbox.moip.com.br/assinaturas/v1/subscriptions \
  --header 'authorization: Authorization'
/**
* Este exemplo usa a SDK do Moip de Node, disponível 
* em: https://github.com/moip/moip-sdk-node
*/
const moip = require('moip-sdk-node').default({
    token: 'your-token',
    key: 'your-key',
    production: false
});
moip.subscription.getAll()
.then((response) => {
    console.log(response.body) 
}).catch((response) => {
    console.log(response.body) 
})
A binary file was returned

You couldn't be authenticated

{
  "subscriptions": [
    {
      "amount": 19900,
      "code": "2017050601",
      "moip_account": "MPA-XXXXXXXXXXXX",
      "id": "SUB-XXXXXXXXXXXX",
      "creation_date": {
        "month": 6,
        "hour": 12,
        "year": 2017,
        "day": 7,
        "minute": 10,
        "second": 30
      },
      "invoice": {
        "amount": 19900,
        "id": 1232211,
        "status": {
          "code": 2,
          "description": "Aguardando confirmação"
        }
      },
      "plan": {
        "code": "plan_01",
        "name": "Ultimate",
        "id": "PLA-XXXXXXXXXXXX"
      },
      "next_invoice_date": {
        "month": 7,
        "year": 2017,
        "day": 7
      },
      "payment_method": "CREDIT_CARD",
      "status": "ACTIVE",
      "customer": {
        "code": "1",
        "billing_info": {
          "credit_card": {
            "first_six_digits": "445566",
            "expiration_year": "20",
            "expiration_month": "01",
            "last_four_digits": "4455",
            "brand": "VISA",
            "vault": "11111111-10aa-4233-abcd-1234567890ab",
            "holder_name": "JOSE SILVA"
          }
        },
        "fullname": "José Silva",
        "email": "jose.silva@moip.com.br"
      }
    },
    {
      "amount": 6900,
      "code": "2017050602",
      "moip_account": "MPA-XXXXXXXXXXXX",
      "id": "SUB-XXXXXXXXXXXX",
      "creation_date": {
        "month": 6,
        "hour": 12,
        "year": 2017,
        "day": 7,
        "minute": 15,
        "second": 30
      },
      "invoice": {
        "amount": 6900,
        "id": 1234123,
        "status": {
          "code": 2,
          "description": "Aguardando confirmação"
        }
      },
      "plan": {
        "code": "plan_02",
        "name": "Standard",
        "id": "PLA-XXXXXXXXXXXX"
      },
      "next_invoice_date": {
        "month": 7,
        "year": 2017,
        "day": 7
      },
      "payment_method": "CREDIT_CARD",
      "status": "CANCELED",
      "customer": {
        "code": "1",
        "billing_info": {
          "credit_card": {
            "first_six_digits": "445566",
            "expiration_year": "20",
            "expiration_month": "01",
            "last_four_digits": "4466",
            "brand": "VISA",
            "vault": "11111111-10aa-4233-abcd-1234567890ac",
            "holder_name": "JOAO ALVES"
          }
        },
        "fullname": "João Alves",
        "email": "joao.alves@moip.com.br"
      }
    }
  ]
}
 
Suggest Edits

Consultar Detalhes de Uma Assinatura

 
gethttps://sandbox.moip.com.br/assinaturas/v1/subscriptions/code

Path Params

code
string
required

Código da Assinatura

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

 
curl --request GET \
  --url https://sandbox.moip.com.br/assinaturas/v1/subscriptions/code \
  --header 'authorization: Authorization'
/**
* Este exemplo usa a SDK do Moip de Node, disponível 
* em: https://github.com/moip/moip-sdk-node
*/
const moip = require('moip-sdk-node').default({
    token: 'your-token',
    key: 'you-key',
    production: false
});

moip.subscription.getOne('2017050602')
.then((response) => {
    console.log(response.body) 
}).catch((response) => {
    console.log(response.body) 
})
A binary file was returned

You couldn't be authenticated

{
  "amount": 6900,
  "code": "2017050602",
  "moip_account": "MPA-XXXXXXXXXXXX",
  "id": "SUB-XXXXXXXXXXXX",
  "creation_date": {
    "month": 6,
    "hour": 12,
    "year": 2017,
    "day": 7,
    "minute": 15,
    "second": 30
  },
  "invoice": {
    "amount": 6900,
    "id": 1234123,
    "status": {
      "code": 2,
      "description": "Aguardando confirmação"
    }
  },
  "plan": {
    "code": "plan_02",
    "name": "Standard",
    "id": "PLA-XXXXXXXXXXXX"
  },
  "next_invoice_date": {
    "month": 7,
    "year": 2017,
    "day": 7
  },
  "payment_method": "CREDIT_CARD",
  "status": "CANCELED",
  "customer": {
    "code": "1",
    "billing_info": {
      "credit_card": {
        "first_six_digits": "445566",
        "expiration_year": "20",
        "expiration_month": "01",
        "last_four_digits": "4466",
        "brand": "VISA",
        "vault": "11111111-10aa-4233-abcd-1234567890ac",
        "holder_name": "JOAO ALVES"
      }
    },
    "fullname": "João Alves",
    "email": "joao.alves@moip.com.br"
  }
}
 
Suggest Edits

Suspender Assinatura

É possível suspender, reativar e cancelar uma assinatura. Caso suspensa, a assinatura não será cobrada no final do intervalo atual, ao reativá-la, a próxima cobrança será feita de acordo com a data de contratação da assinatura. Caso cancelada, a assinatura não poderá mais ser reativa ou alterada.

 
puthttps://sandbox.moip.com.br/assinaturas/v1/subscriptions/code/suspend

Path Params

code
string
required

Código da Assinatura

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

 
curl --request PUT \
  --url https://sandbox.moip.com.br/assinaturas/v1/subscriptions/code/suspend \
  --header 'authorization: Authorization'
var request = require("request");

var options = { method: 'PUT',
  url:
   'https://sandbox.moip.com.br/assinaturas/v1/subscriptions/code/suspend',
  headers: { authorization: 'Authorization' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://sandbox.moip.com.br/assinaturas/v1/subscriptions/code/suspend")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)
request["authorization"] = 'Authorization'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("PUT", "https://sandbox.moip.com.br/assinaturas/v1/subscriptions/code/suspend");
xhr.setRequestHeader("authorization", "Authorization");

xhr.send(data);
import requests

url = "https://sandbox.moip.com.br/assinaturas/v1/subscriptions/code/suspend"

headers = {'authorization': 'Authorization'}

response = requests.request("PUT", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

No response examples available
 
Suggest Edits

Reativar Assinatura

 
puthttps://sandbox.moip.com.br/assinaturas/v1/subscriptions/code/activate

Path Params

code
string
required

Código da Assinatura

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

 
curl --request PUT \
  --url https://sandbox.moip.com.br/assinaturas/v1/subscriptions/code/activate \
  --header 'authorization: Authorization'
var request = require("request");

var options = { method: 'PUT',
  url:
   'https://sandbox.moip.com.br/assinaturas/v1/subscriptions/code/activate',
  headers: { authorization: 'Authorization' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://sandbox.moip.com.br/assinaturas/v1/subscriptions/code/activate")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)
request["authorization"] = 'Authorization'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("PUT", "https://sandbox.moip.com.br/assinaturas/v1/subscriptions/code/activate");
xhr.setRequestHeader("authorization", "Authorization");

xhr.send(data);
import requests

url = "https://sandbox.moip.com.br/assinaturas/v1/subscriptions/code/activate"

headers = {'authorization': 'Authorization'}

response = requests.request("PUT", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

No response examples available
 
Suggest Edits

Cancelar Assinatura

 
puthttps://sandbox.moip.com.br/assinaturas/v1/subscriptions/code/cancel

Path Params

code
string
required

Código da Assinatura

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

 
curl --request PUT \
  --url https://sandbox.moip.com.br/assinaturas/v1/subscriptions/code/cancel \
  --header 'authorization: Authorization'
var request = require("request");

var options = { method: 'PUT',
  url:
   'https://sandbox.moip.com.br/assinaturas/v1/subscriptions/code/cancel',
  headers: { authorization: 'Authorization' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://sandbox.moip.com.br/assinaturas/v1/subscriptions/code/cancel")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)
request["authorization"] = 'Authorization'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("PUT", "https://sandbox.moip.com.br/assinaturas/v1/subscriptions/code/cancel");
xhr.setRequestHeader("authorization", "Authorization");

xhr.send(data);
import requests

url = "https://sandbox.moip.com.br/assinaturas/v1/subscriptions/code/cancel"

headers = {'authorization': 'Authorization'}

response = requests.request("PUT", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

No response examples available
 
Suggest Edits

Alterar Assinatura

É possível alterar dados de uma assinatura já criada, tais como o plano, o valor e a data da próxima cobrança.

 
puthttps://sandbox.moip.com.br/assinaturas/v1/subscriptions/code

Path Params

code
string
required

Código da Assinatura

Body Params

plan
object
plan.code
string

Identificador do novo plano na sua aplicação. Até 65 caracteres. Informe caso queira migrar o plano da assinatura (downgrade/upgrade). Importante: a próxima cobrança ocorrerá na data que já estava pré-agendada e será feita no valor do novo plano (seguindo o modelo de assinaturas pré-pagas).

amount
string

Valor em centavos de Real. Importante: informe apenas se quiser alterar o valor a ser cobrado na assinatura (em centavos). Sobrescreverá o valor do plano contratado. A alteração de valor é útil caso queira definir um valor diferente para a assinatura de cliente específico (acrescentar o valor de frete ao plano ou oferecer um desconto, por exemplo). O valor informado será utilizado a partir da próxima fatura.

next_invoice_date
object
next_invoice_date. day
string

Dia do mês no formato dd.

next_invoice_date.month
string

Mês no formato MM.

next_invoice_date.year
string

Ano no formato yyyy.

best_invoice_date
object
best_invoice_date.day_of_month
string

Define o dia do mês que deverá ser atribuído como melhor dia para pagar. Valores disponíveis: De 1 até 31. Se for informado um valor maior que a quantidade de dias do mês, será automaticamente setado para o último dia do mês.

best_invoice_date. month_of_year
string

Define o mês que deverá ser atribuído como melhor dia para pagar. Valores possíveis: de 1 a 12. Importante: deve ser informado apenas para assinaturas anuais.

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

Content-Type
string
required

application/json

ATENÇÃO

O assinante deve ser notificado e estar de acordo com qualquer alteração em sua assinatura (plano, valor ou data). O não cumprimento dessa exigência poderá ocasionar a suspensão da utilização dos serviços do Moip Assinaturas.

{
  "plan": {
    "code": "codigo_do_novo_plano"
  },
  "amount": "9990",
  "next_invoice_date": {
    "day": "05",
    "month": "01",
    "year": "2017"
  }
}
A binary file was returned

You couldn't be authenticated

No response examples available
 
Suggest Edits

Alterar o método de pagamento

Utilize essa API para alterar o método de pagamento de uma assinatura.

 
puthttps://sandbox.moip.com.br/assinaturas/v1/subscriptions/code/change_payment_method

Path Params

code
string
required

Código da assinatura

Body Params

payment_method
string
required

O novo método de pagamento a ser utilizado. Valores possíveis: BOLETO e CREDIT_CARD

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

Content-Type
string
required

application/json

IMPORTANTE

Essa alteração só será aplicada para a próxima fatura. Caso um assinante já possua uma fatura pendente de pagamento, essa alteração não surtirá efeito para essa fatura.

Se você tem um assinante que tem sua fatura atrasada pois seu cartão não tem saldo ou foi recusado por algum outro motivo, não é possível fazer com que ele pague essa fatura por boleto. Pois a alteração de método de pagamento só tem efeito para a próxima fatura.

{
	"payment_method": "BOLETO"
}
A binary file was returned

You couldn't be authenticated

No response examples available
 
Suggest Edits

Status de uma Assinatura

Uma assinatura pode passar por diversos status durante o seu ciclo de vida, abaixo temos a relação dos status que uma assinatura pode ter.

 
Status
Descrição

Active

A assinatura está ativa, ou seja, o cliente assinante será cobrado a cada ciclo.

Suspended

As cobranças da assinatura estão suspensas, ou seja, o cliente assinante não será cobrado a cada ciclo.

Expired

A assinatura está expirada, ou seja, já atingiu o limite de cobranças configuradas no plano contratado e não gerará mais cobranças.

Overdue

A assinatura está com o pagamento de sua fatura atrasada e entrou no fluxo de retentativas. Para saber mais sobre retentativas de pagamentos, clique aqui.

Canceled

A assinatura foi cancelada e não poderá mais ser reativada ou editada de nenhuma maneira. Em outras palavras, o cancelamento é a inativação definitiva de uma assinatura.

Trial

O trial é um período de testes de uma assinatura, ele pode ter uma taxa de inscrição ou ser gratuito. Para configurar as preferências do seu trial, você deve utilizar a API de Planos ou utilizar a interface da Wirecard Assinaturas.

[A] - Após criada, a Assinatura gera uma nova fatura;

[B] - Dentro da fatura, foi criado um novo pagamento;

[C] - O pagamento foi “Iniciado” na Wirecard Assinaturas;

[D] - O pagamento tem o status “Iniciado” ou “Em análise”, o status da fatura é “Aguardando Confirmação”;

[E] - Enquanto o pagamento e fatura estão no cenário (D), a Assinatura mantém o status “Ativo”.

[F] - Quando o pagamento é “Autorizado” o status da fatura torna-se “Paga” e a Assinatura continua “Ativa”;

[G] - O pagamento que estava “Autorizado”/”Concluído” foi “Estornado” ou “Reembolsado”;

[H] - O pagamento foi “Cancelado”;

[I] - O pagamento “Estornado”/”Reembolsado” muda o status da fatura para “Não Paga”;

[J] - A terceira retentativa automática de pagamento foi executada, a fatura torna-se “Não paga”;

[K] - O primeiro pagamento da fatura foi cancelado e ela entrou no fluxo de retentativa automática, a fatura torna-se “Atrasada”;

[L] - A primeira ou a segunda ou retentativa de pagamento foi cancelada, a fatura continua no fluxo de retentativa automática;

[M] - A fatura “Paga” mantém a assinatura “Ativa”;

[N] - A fatura “Não Paga”, suspende a assinatura.

[O] - Os cenários (K) ou (L) alteraram o status da assinatura para “Atrasada”;

[P] - Após o prazo determinado no plano a assinatura expirou;

[Q] - Os cenários (K) e (L) foi executada uma retentativa automática.

 
Suggest Edits

Faturas

As assinaturas criadas geram faturas de acordo com as configurações do plano contratado. A partir desta API é possível consultar todas as faturas de uma assinatura e seus detalhes.

 

Atributos da resposta da busca

Nome
Descrição
Detalhes

id

Identificador da fatura na Wirecard Assinaturas.

integer

amount

Valor total cobrado do cliente, em centavos.

integer

subscription_code

Código da assinatura.

string

occurence

Ocorrência da fatura na assinatura (ex. 3 para a terceira fatura).

integer

status

Node de status da fatura. Ver valores possíveis

object

└──code

Código do status

integer

description

Descrição do status.

string

items

Detalhamento dos itens que compõem a fatura.

object

├──type

Descrição do item (ex. "Valor da assinatura", "Taxa de contratação", "Período de Trial", etc.)

string

└──amount

Valor do item, em centavos. Em assinaturas com período de Trial gratuito o valor da primeira fatura é ser 0.

integer

plan

Dados do plano referente à fatura.

object

├──ode

Código do plano contratado.

string

└──name

Nome do plano contratado

string

customer

Node do cliente referente à fatura.

object

├──code

Código do cliente assinante.

string

└──fullname

Nome completo do cliente assinante.

string

creation_date

Data e hora da criação da fatura.

object

├──day

Dia do mês no formato dd.

integer

├──month

Mês no formato MM.

integer

├──year

Ano no formato yyyy.

integer

├──hour

Horas no formato HH (24hs).

integer

├──minute

Minutos no formato mm.

integer

└──second

Segundos no formato ss.

integer

 
Suggest Edits

Listar Todas as Faturas de Uma Assinatura

 
gethttps://sandbox.moip.com.br/assinaturas/v1/subscriptions/code/invoices

Path Params

code
string
required

Código da Assinatura

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

 
curl --request GET \
  --url https://sandbox.moip.com.br/assinaturas/v1/subscriptions/code/invoices \
  --header 'authorization: Authorization'
A binary file was returned

You couldn't be authenticated

{
  "invoices": [
    {
      "amount": 0,
      "creation_date": {
        "minute": 52,
        "second": 5,
        "month": 11,
        "year": 2014,
        "hour": 15,
        "day": 27
      },
      "id": 1729934,
      "status": {
        "description": "Pago",
        "code": 3
      },
      "subscription_code": "assinatura21",
      "occurrence": 1
    }
  ]
}
 
Suggest Edits

Consultar Detalhes de Uma Fatura

 
gethttps://sandbox.moip.com.br/assinaturas/v1/invoices/id

Path Params

id
string
required

ID da Cobrança

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

IMPORTANTE

Você pode obter o ID da cobrança pela requisição “listar cobranças”, pelo webhook ou ainda pela área logada.

Status de uma fatura

É importante conhecer e entender os status da fatura e suas possíveis transições para gerenciar inadimplência e permissão aos serviços contratados em seu sistema. Para ter mais informações sobre os diferentes status de sua fatura acesse a nossa documentação de negócios.

curl --request GET \
  --url https://sandbox.moip.com.br/assinaturas/v1/invoices/id \
  --header 'authorization: Authorization'
A binary file was returned

You couldn't be authenticated

{
  "amount": 0,
  "creation_date": {
    "minute": 52,
    "second": 5,
    "month": 11,
    "year": 2014,
    "hour": 15,
    "day": 27
  },
  "id": 1729934,
  "plan": {
    "name": "Novo Plano",
    "code": "planonew"
  },
  "items": [
    {
      "amount": 0,
      "type": "Período de trial"
    }
  ],
  "status": {
    "description": "Pago",
    "code": 3
  },
  "subscription_code": "assinatura21",
  "occurrence": 1,
  "customer": {
    "code": "cliente01",
    "fullname": "Nome Sobrenome"
  }
}
 
Suggest Edits

Status de uma Fatura

É importante conhecer e entender os status da fatura e suas possíveis transições para gerenciar inadimplência e permissão aos serviços contratados em seu sistema.

 
Código
Descrição
O que significa

1

Em Aberto

A fatura foi gerada mas ainda não foi paga pelo assinante.

2

Aguardando Confirmação

A fatura foi paga pelo assinante, mas o pagamento está em processo de análise de risco.

3

Pago

A fatura foi paga pelo assinante e confirmada.

4

Não Pago

O assinante tentou pagar a fatura, mas o pagamento foi negado pelo banco emissor do cartão de crédito ou a análise de risco detectou algum problema. Veja os motivos possíveis.

5

Atrasada

O pagamento da fatura foi cancelado e serão feitas novas tentativas de cobrança de acordo com a configuração de retentativa automática.

[A] O pagamento está em análise.
[B] O pagamento foi autorizado.
[C] O pagamento foi cancelado, veja aqui os possíveis motivos.
[D] O pagamento foi cancelado e entrou no fluxo de retentativas.
[E] O pagamento teve um reembolso/chargeback.
[F]O pagamento de retentativa foi cancelado.
[G] O pagamento de retentativa foi autorizado.

 
Suggest Edits

Pagamentos

Uma fatura, como é conhecida no mercado, é um conjunto descritivo de itens cobrados em um pré-determinado intervalo de tempo em uma assinatura. O pagamento, por sua vez, é a efetivação da cobrança do valor total de uma fatura.

 
Nome
Descrição
Detalhes

id

Identificador do pagamento na Wirecard Assinaturas.

string

moip_id

Identificador do pagamento na Wirecard.

integer

status

Node de status do pagamento. Ver valores possíveis.

object

└──code

Código do status

integer

description

Descrição do status.

string

├──subscription_code

Código da assinatura.

string

└──customer_code

Código do cliente pagador.

string

invoice

Node da fatura

object

├──id

ID da fatura na Wirecard Assinaturas.

integer

└──amount

Valor pago em centavos.

integer

payment_method

Node da forma de pagamento.

object

├──code

Código da forma de pagamento. 1 - CREDIT_CARD, 2 - BOLETO

integer

├──description

Descrição da forma de pagamento.

string

├──credit_card

Node de dados do cartão de crédito, caso esta seja a forma de pagamento escolhida.

object

│ ├──brand

Bandeira do cartão.

string

│ ├──holder_name

Nome do portador.

string

│ ├──first_six_digits

Primeiros 6 dígitos.

integer

│ ├──last_four_digits

Últimos 4 dígitos.

integer

│ ├──expiration_month

Mês de expiração. Formato MM.

integer

└ └──expiration_year

Ano de expiração. Formato YY.

integer

creation_date

Node de data e hora da criação da cobrança.

string

├──day

Dia do mês no formato DD.

integer

├──month

Mês no formato MM.

integer

├──year

Ano no formato YYYY.

integer

├──hour

Horas no formato HH (24hs).

integer

├──minute

Minutos no formato MM.

integer

└──second

Segundos no formato SS.

integer

_links

Node de links de formas de pagamento

object

└──boleto

Forma de pagamento gerando o link

object

└─└──redirect_href

Link do boleto

string

Para entender melhor, veja o diagrama abaixo:

A assinatura do “Plano Ouro” gerou uma fatura referente à mensalidade de janeiro de 2013.
A Wirecard Assinaturas realizou o pagamento no cartão de crédito Visa, cadastrado previamente pelo assinante. Como o cartão já estava com o limite de saldo atingido, a administradora de cartões negou o pagamento. O status da fatura foi alterado para “Não pago”.
O vendedor foi notificado e solicitou uma nova tentativa de pagamento, agora com o cartão de crédito Mastercard. A administradora de cartões aprovou o pagamento e a análise de risco da Wirecard autorizou. O status da fatura foi alterado para “Pago”.

 
Suggest Edits

Listar Todos os Pagamentos de Uma Fatura

 
gethttps://sandbox.moip.com.br/assinaturas/v1/invoices/id/payments

Path Params

id
string
required

ID da Cobrança

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

IMPORTANTE

Você pode obter o ID da cobrança pela requisição “listar cobranças”, pelo webhook ou ainda pela área logada.

curl --request GET \
  --url https://sandbox.moip.com.br/assinaturas/v1/invoices/id/payments \
  --header 'authorization: Authorization'
A binary file was returned

You couldn't be authenticated

{
  "payments": [
    {
      "id": 6,
      "moip_id": 7205895,
      "status": {
        "code": 6,
        "description": "Em análise"
      },
      "payment_method": {
        "code": 1,
        "description": "Cartão de Crédito",
        "credit_card": {
          "brand": "VISA",
          "holder_name": "Fulano Testador",
          "first_six_digits": "411111",
          "last_four_digits": "1111",
          "expiration_month": "03",
          "expiration_year": "16"
        }
      },
      "creation_date": {
        "day": 28,
        "month": 12,
        "year": 2012,
        "hour": 15,
        "minute": 38,
        "second": 41
      }
    }
  ]
}
 
Suggest Edits

Consultar Detalhes de Um Pagamento da Assinatura

 
gethttps://sandbox.moip.com.br/assinaturas/v1/payments/id

Path Params

id
string
required

ID do Pagamento

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

IMPORTANTE

Você pode obter o ID do pagamento pela requisição “listar pagamentos”, pelo webhook ou ainda pela área logada.

Atributos

Atributo Formato esperado Descrição
__
id 6 Identificador do pagamento na Wirecard Assinaturas.
moip_id 7205895 Identificador do pagamento na Wirecard.
status Node de status do pagamento. Ver valores possíveis.
└──code 6 Código do status
description "Em análise" Descrição do status.
├──subscription_code "assinatura7" Código da assinatura.
└──customer_code cliente01 Código do cliente pagador.
invoice Node da fatura
├──id "13" ID da fatura na Wirecard Assinaturas.
└──amount 101 Valor pago em centavos.
payment_method Node da forma de pagamento.
├──code 1 Código da forma de pagamento. 1 - CREDIT_CARD, 2 - BOLETO
├──description "Cartão de Crédito" Descrição da forma de pagamento.
├──credit_card Node de dados do cartão de crédito, caso esta seja a forma de pagamento escolhida.
│ ├── brand "VISA" Bandeira do cartão.
│ ├── holder_name "Fulano Testador" Nome do portador.
│ ├── first_six_digits "411111" Primeiros 6 dígitos.
│ ├── last_four_digits "1111" Últimos 4 dígitos.
│ ├── expiration_month "03" Mês de expiração. Formato MM.
│ ├── expiration_year "16" Ano de expiração. Formato yy.
creation_date Data e hora da criação da cobrança.
├──day "26" Dia do mês no formato dd.
├──month "09" Mês no formato MM.
├──year "2012" Ano no formato yyyy.
├──hour "16" Horas no formato HH (24hs).
├──minute "00" Minutos no formato mm.
└──second "10" Segundos no formato ss.
_links Node de links de formas de pagamento
└──boleto Forma de pagamento gerando o link
└─└──redirect_href https://checkout.wirecard.com.br/boleto/PAY-H1M7FFZ8ZYHQ Link do boleto

Status de um pagamento

Os status de pagamento no Assinaturas seguem o padrão Wirecard.

Atributo Formato esperado Descrição
1 Autorizado O pagamento foi autorizado pelo banco e pela análise de risco. O valor será creditado de acordo com o prazo de recebimento da sua conta da Wirecard.
2 Iniciado O pagamento foi criado, mas ainda não foi autorizado pelo banco.
3 Boleto impresso O assinante optou pelo pagamento com boleto bancário, mas o banco ainda não confirmou a liquidação do mesmo.
4 Concluído O pagamento foi concluído e o valor líquido já está disponível para saque em sua conta da Wirecard.
5 Cancelado O pagamento foi negado pelo banco ou pela análise de risco. Este é um estado final do pagamento.
6 Em análise O pagamento foi autorizado pelo banco e está sendo analisado pelo setor de Análise de Risco. Este é um status temporário com tempo limite de 48 horas.
7 Estornado O pagamento foi revertido pelo banco por solicitação do assinante.
9 Reembolsado O valor foi reembolsado para o assinante por solicitação dele ou do vendedor.
10 Aguardando A Wirecard ainda está aguardando a confirmação do pagamento. Válido apenas para pagamentos com Boleto Bancário
curl --request GET \
  --url https://sandbox.moip.com.br/assinaturas/v1/payments/PAY-123456789012 \
  --header 'authorization: Authorization'
A binary file was returned

You couldn't be authenticated

{
  "payments": [
    {
      "creation_date": {
        "minute": 26,
        "second": 1,
        "month": 11,
        "year": 2014,
        "hour": 21,
        "day": 28
      },
      "id": 1743609,
      "status": {
        "description": "Cancelado",
        "code": 5
      },
      "moip_id": 1417217161,
      "payment_method": {
        "description": "Cartão de Crédito",
        "credit_card": {
          "holder_name": "Nome Completo",
          "first_six_digits": "411111",
          "expiration_month": "04",
          "brand": "VISA",
          "expiration_year": "15",
          "last_four_digits": "1111"
        },
        "code": 1
      }
    }
  ]
}
 
Suggest Edits

Cartões de Crédito Teste

Na tabela abaixo a Wirecard disponibiliza números de cartões fictícios em diversas bandeiras para fazer uma compra.

 
Bandeira
Número
Vencimento
CVC

Mastercard

5555666677778884

06/2022

123

Visa

4012001037141112

06/2022

123

Amex

376449047333005

06/2022

1234

Elo

6362970000457013

06/2022

123

Diners

36490102462661

06/2018

123

 
Suggest Edits

Cupons

Se necessário, você pode criar cupons de descontos para oferecer aos assinantes do seus planos. Os cupons podem dar descontos de valores inteiros ou percentuais, e podem ter data de vencimento ou limite de assinaturas.

 
Nome
Descrição
Detalhes

code

Código do identificador do cupom.

string

name

Nome do cupom.

string(45)

description

Descrição do cupom.

string

discount

Node dos atributos do desconto. Ver valores possíveis.

object

├──value

Valor do desconto com duas casas decimais.

integer

└──type

Define se o tipo de desconto é percentual ou em reais (R$).
Valores possíveis percent e amount

boolean

status

Cupons ativos podem ser associados em assinaturas, cupons inativos não podem ser associados, mas ainda podem estar relacionados com assinaturas já existentes. Valores possíveis: active e inactive

boolean

duration

Node de duração do cupom em uma assinatura. Ver valores possíveis.

object

├──type

Determina se um cupom será válido apenas em uma cobrança, ou em um número específico diferente de 1 ou em todas. Valores possíveis: once, repeating e forever

boolean

└──occurrences

Representa o número de ocorrências que receberão o desconto. Válido apenas quando o type for repeating. Exemplo de valor possível 12.

integer

max_redemptions

Número máximo de submits do cupom até que ele seja inativado automaticamente.

integer

expiration_date

Data de inativação do cupom, quando ele não poderá mais ser associado a novas assinaturas.

object

├──year

Ano da expiração no formato "YYYY".

integer

├──month

Mês da expiração no formato "MM".

integer

└──day

Dia da expiração no formato "dd".

integer

creation_date

Data e hora da criação do cupom.

object

├──day

Dia do mês no formato DD.

integer

├──month

Mês no formato MM.

integer

├──year

Ano no formato YYYY.

integer

├──hour

Horas no formato HH (24hs).

integer

├──minute

Minutos no formato MM.

integer

└──second

Segundos no formato SS.

integer

in_use

Informa se o cupom está ou não aplicando suas regras em alguma assinatura.

boolean

 
Suggest Edits

Criar Cupom

Um cupom permite oferecer a um determinado cliente um desconto em valor percentual ou inteiro. Esse desconto pode ser configurado para que seja aplicado apenas uma vez, inúmeras vezes ou pra sempre, além de outras configurações de duração e limite de associações.

 
posthttps://sandbox.moip.com.br/assinaturas/v1/coupons

Body Params

code
string

Código do Cupom

name
string

Nome do cupom.

description
string

Descrição do cupom.

discount
object
discount.value
int32

Valor do desconto com duas casas decimais.

discount.type
boolean

Define se o tipo de desconto é percentual ou em reais (R$). Valores possíveis percent e amount

status
string

Cupons ativos podem ser associados em assinaturas, cupons inativos não podem ser associados, mas ainda podem estar relacionados com assinaturas já existentes. Valores possíveis: active e inactive.

duration
object
duration.type
string

Determina se um cupom será válido apenas em uma cobrança, ou em um número específico diferente de 1 ou em todas. Valores possíveis: once, repeating e forever.

duration.occurrences
int32

Representa o número de ocorrências que receberão o desconto. Válido apenas quando o type for repeating.

max_redemptions
int32

Número máximo de submits do cupom até que ele seja inativado automaticamente.

expiration_date
object
expiration_date.year
int32

Ano da expiração no formato "yyyy".

expiration_date.month
int32

Mês da expiração no formato "MM".

expiration_date.day
int32

Dia da expiração no formato "dd".

creation_date
object
creation_date.day
int32

Dia do mês no formato dd.

creation_date.month
int32

Mês no formato MM.

creation_date.year
int32

Ano no formato yyyy.

creation_date.hour
int32

Horas no formato HH (24hs).

creation_date.minute
int32

Minutos no formato mm.

creation_date.second
int32

Segundos no formato ss.

in_use
boolean

Informa se o cupom está ou não aplicando suas regras em alguma assinatura. Valores possíveis: true e false.

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

Content-Type
string
required

application/json

 
{
    "code": "coupon-0001",
    "name": "Coupon name",
    "description": "My new coupon",
    "discount": {
        "value": 10000,
        "type": "percent"
    },
    "status": "active",
    "duration": {
        "type": "repeating",
        "occurrences": 12
    },
    "max_redemptions": 1000,
    "expiration_date": {
        "year": 2020,
        "month": 08,
        "day": 01
    }
}
/**
* Este exemplo usa a SDK do Moip de Node, disponível 
* em: https://github.com/moip/moip-sdk-node
*/
const moip = require('moip-sdk-node').default({
    token: 'your-token',
    key: 'your-key',
    production: false
});

moip.coupon.create({
    code: "coupon-0001",
    name: "Coupon name",
    description: "My new coupon",
    discount: {
        value: 1000,
        type: "percent"
    },
    status: "active",
    duration: {
        type: "repeating",
        occurrences: 12
    },
    max_redemptions: 1000,
    expiration_date: {
        year: 2020,
        month: 8,
        day: 01
    }
}).then((response) => {
    console.log(response.body) 
}).catch((err) => {
    console.log(err) 
})
A binary file was returned

You couldn't be authenticated

{
    "code": "coupon-0001",
    "name": "Coupon name",
    "description": "My new coupon",
    "discount": {
        "value": 10000,
        "type": "PERCENT"
    },
    "status": "ACTIVE",
    "duration": {
        "type": "REPEATING",
        "occurrences": 12
    },
    "expiration_date": {
        "day": 1,
        "month": 8,
        "year": 2020
    },
    "max_redemptions": 100,
    "in_use": false,
    "creation_date": {
        "day": 5,
        "month": 8,
        "year": 2014,
        "hour": 11,
        "minute": 42,
        "second": 55
    }
}
 
Suggest Edits

Associar um Cupom a Assinatura Existente

Um coupon pode ser associado a uma nova assinatura ou a uma assinatura existente, entretanto, em ambos os casos é necessário que o coupon já tenha sido criado. Não é possível criar um coupon e associá-lo com uma assinatura ao mesmo tempo.

 
puthttps://sandbox.moip.com.br/assinaturas/v1/subscriptions/code

Path Params

code
string
required

Código da Assinatura

Body Params

coupon
object
coupon.code
string

ID do cupom.

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

Content-Type
string
required

application/json

 
{
    "coupon": {
        "code": "plan-0001"
    }
}
A binary file was returned

You couldn't be authenticated

No response examples available
 
Suggest Edits

Associar um Cupom a uma Nova Assinatura

Um cupom pode ser associado a uma nova assinatura ou a uma assinatura existente, entretanto, em ambos os casos é necessário que o cupom já tenha sido criado. Não é possível criar um cupom e associá-lo com uma assinatura ao mesmo tempo.

 
posthttps://sandbox.moip.com.br/assinaturas/v1/subscriptions?new_customer=true_or_false

Path Params

new_customer
string
required

Caso queira criar um novo Assinante o valor desse ser true, caso contrário false.

Body Params

code
string

Código da Nova Assinatura

customer
object
customer.code
string

Identificador do cliente na sua aplicação. Até 65 caracteres.

customer.fullname
string

Nome completo do cliente. Até 150 caracteres.

customer.email
string

Email do cliente.

customer.cpf
int32

CPF do cliente. Apenas dígitos numéricos.

customer.phone_area_code
int32

Código de área do telefone do titular (DDD). 2 caracteres sem máscara.

customer.phone_number
string

Telefone do titular, 8 ou 9 caracteres sem máscara.

customer.birthdate_day
int32

Dia do nascimento. Válido 1 a 31.

customer.birthdate_year
int32

Ano do nascimento. 4 dígitos.

customer.address
object
customer.address.street
string

Logradouro do endereço.

customer.address.number
int32

Número do endereço.

customer.address.city
string

Cidade.

customer.address.state
string

Estado (sigla). Exemplo: MG

customer.address.country
string

País em formato ISO-alpha3, exemplo BRA.

customer.address.zipcode
int32

CEP do endereço. Sem máscara.

cutomer
object
cutomer.birthdate_month
int32

Mês do nascimento. Válido 1 a 12.

billing_info
object
billing_info.credit_card
object
billing_info.credit_card.holder_name
string

Nome do portador.

billing_info.credit_card.number
int32

Número do cartão de crédito.

billing_info.credit_card.expiration_month
int32

Mês de expiração do cartão.

billing_info.credit_card.expiration_year
int32

Ano de expiração do cartão.

billing_info.credit_card.vault
string

Cofre de um cartão de crédito, se já foi cadastrado para este mesmo cliente anteriormente. Caso informe o cofre, os demais dados do cartão não precisam ser informados.

cupon
object

Node do cupom.

coupon
object
coupon.code
string

Código identificador do cupom.

plan
object
plan. code
string

Código identificador do Plano.

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

Content-Type
string
required

application/json

 
{
  "code": "subscription-0001",
  "plan": {
    "code": "plano-0001"
  },
  "customer": {
    "code": "cliente-0001",
    "email": "nome@exemplo.com.br",
    "fullname": "Nome Sobrenome",
    "cpf": "22222222222",
    "phone_number": "934343434",
    "phone_area_code": "11",
    "birthdate_day": "26",
    "birthdate_month": "04",
    "birthdate_year": "1986",
    "address": {
      "street": "Rua nome da Rua",
      "number": "170",
      "complement": "Casa",
      "district": "Bairro",
      "city": "São Paulo",
      "state": "SP",
      "country": "BRA",
      "zipcode": "00000000"
    },
    "billing_info": {
      "credit_card": {
        "holder_name": "Nome Completo",
        "number": "4111111111111111",
        "expiration_month": "04",
        "expiration_year": "18"
      }
    }
  },
  "coupon": {
    "code": "coupon-0001"
  }
}
/**
* Este exemplo usa a SDK do Moip de Node, disponível 
* em: https://github.com/moip/moip-sdk-node
*/
const moip = require('moip-sdk-node').default({
    token: 'your-token',
    key: 'your-key',
    production: false
});


moip.subscription.create({new_customer:'false',
  code: "152423060622", //novo codigo de assinatura
  plan: {
  code: "plan123456"
  },
  customer: {
    code: "1520370416",
    email: "nome@exemplo.com.br",
    fullname: "Nome Sobrenome",
    cpf: "22222222222",
    phone_number: "934343434",
    phone_area_code: "11",
    birthdate_day: "26",
    birthdate_month: "04",
    birthdate_year: "1986",
    address: {
      street: "Rua nome da Rua",
      number: "170",
      complement: "Casa",
      district: "Bairro",
      city: "São Paulo",
      state: "SP",
      country: "BRA",
      zipcode: "00000000"
    },
    billing_info: {
    credit_card: {
        holder_name: "Nome Completo",
        number: "4111111111111111",
        expiration_month: "06",
        expiration_year: "18"
      }
    }
  },
  coupon: {
    code: "coupon-0001"
  }
}).then((response) => {
    console.log(response.body) 
}).catch((err) => {
    console.log(err) 
})
A binary file was returned

You couldn't be authenticated

{
  "amount": 10000,
  "message": "Assinatura criada com sucesso",
  "errors": [],
  "plan": {
    "name": "plano",
    "code": "plano-0001"
  },
  "status": "ACTIVE",
  "invoice": {
    "amount": 0,
    "id": 86013,
    "status": {
      "description": "Pago",
      "code": 3
    }
  },
  "alerts": [],
  "next_invoice_date": {
    "month": 12,
    "year": 2014,
    "day": 7
  },
  "code": "subscription-0001",
  "customer": {
    "email": "nome@exemplo.com.br",
    "code": "cliente-0001",
    "fullname": "Nome Cliente"
  },
  "coupon": {
    "code": "coupon-0001",
    "discount": {
      "value": 10000,
      "type": "PERCENT"
    }
  }
}
 
Suggest Edits

Consultar Cupom

Você também pode consultar seus cupons, para isso, basta utilizar o código do mesmo na URL do recurso.

 
gethttps://sandbox.moip.com.br/assinaturas/v1/coupons/code

Path Params

code
string
required

Código do Cupom.

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

Content-Type
string
required

application/json

 
curl --request GET \
  --url https://sandbox.moip.com.br/assinaturas/v1/coupons/code \
  --header 'authorization: Authorization' \
  --header 'content-type: Content-Type'
/**
* Este exemplo usa a SDK do Moip de Node, disponível 
* em: https://github.com/moip/moip-sdk-node
*/
const moip = require('moip-sdk-node').default({
    token: 'your-token',
    key: 'your-key',
    production: false
});

moip.coupon.getOne('coupon-0001')
.then((response) => {
    console.log(response.body) 
}).catch((response) => {
    console.log(response.body) 
})
A binary file was returned

You couldn't be authenticated

{
    "code": "coupon-0001",
    "name": "coupon",
    "description": "",
    "discount": {
        "value": 100,
        "type": "PERCENT"
    },
    "status": "ACTIVE",
    "duration": {
        "type": "REPEATING",
        "occurrences": 12
    },
    "expiration_date": {
        "day": 20,
        "month": 8,
        "year": 2018
    },
    "max_redemptions": 100,
    "in_use": false,
    "creation_date": {
        "day": 5,
        "month": 8,
        "year": 2014,
        "hour": 11,
        "minute": 50,
        "second": 52
    }
}
 
Suggest Edits

Listar Todos os Cupons

Também é possível listar todos os cupons criados na sua conta.

 
gethttps://sandbox.moip.com.br/assinaturas/v1/coupons

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

Content-Type
string
required

application/json

 
curl --request GET \
  --url https://sandbox.moip.com.br/assinaturas/v1/coupons \
  --header 'authorization: Authorization' \
  --header 'content-type: Content-Type'
/**
* Este exemplo usa a SDK do Moip de Node, disponível 
* em: https://github.com/moip/moip-sdk-node
*/
const moip = require('moip-sdk-node').default({
    token: 'your-token',
    key: 'your-key',
    production: false
});

moip.coupon.getAll()
.then((response) => {
    console.log(response.body) 
}).catch((response) => {
    console.log(response.body) 
})
A binary file was returned

You couldn't be authenticated

[
  {
    "code": "coupon-0001",
    "name": "coupon",
    "description": "",
    "discount": {
      "value": 100,
      "type": "PERCENT"
    },
    "status": "ACTIVE",
    "duration": {
      "type": "REPEATING",
      "occurrences": 12
    },
    "expiration_date": {
      "day": 20,
      "month": 8,
      "year": 2018
    },
    "max_redemptions": 100,
    "in_use": false,
    "creation_date": {
      "day": 5,
      "month": 8,
      "year": 2014,
      "hour": 11,
      "minute": 50,
      "second": 52
    }
  },
  {
    "code": "coupon-0002",
    "name": "coupon",
    "description": "",
    "discount": {
      "value": 100,
      "type": "PERCENT"
    },
    "status": "ACTIVE",
    "duration": {
      "type": "REPEATING",
      "occurrences": 12
    },
    "expiration_date": {
      "day": 20,
      "month": 8,
      "year": 2018
    },
    "max_redemptions": 100,
    "in_use": false,
    "creation_date": {
      "day": 5,
      "month": 8,
      "year": 2014,
      "hour": 11,
      "minute": 50,
      "second": 52
    }
  }
]
 
Suggest Edits

Ativar e Inativar Cupons

 
puthttps://sandbox.moip.com.br/assinaturas/v1/coupons/code/active_or_inactive

Path Params

code
string
required

Código do Cupom

active_or_inactive
string
required

Escolha active para Ativar um Cupom e inactive para desativar.

Body Params

Authorization
string
required

Basic [gerar hash base64 do token:chave]

 
curl --request PUT \
  --url https://sandbox.moip.com.br/assinaturas/v1/coupons/code/active_or_inactive
var request = require("request");

var options = { method: 'PUT',
  url:
   'https://sandbox.moip.com.br/assinaturas/v1/coupons/code/active_or_inactive' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://sandbox.moip.com.br/assinaturas/v1/coupons/code/active_or_inactive")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("PUT", "https://sandbox.moip.com.br/assinaturas/v1/coupons/code/active_or_inactive");

xhr.send(data);
import requests

url = "https://sandbox.moip.com.br/assinaturas/v1/coupons/code/active_or_inactive"

response = requests.request("PUT", url)

print(response.text)
A binary file was returned

You couldn't be authenticated

{
  "code": "coupon-0001",
  "name": "coupon",
  "description": "",
  "discount": {
    "value": 10000,
    "type": "PERCENT"
  },
  "status": "INACTIVE",
  "duration": {
    "type": "REPEATING",
    "occurrences": 12
  },
  "expiration_date": {
    "day": 20,
    "month": 8,
    "year": 2018
  },
  "max_redemptions": 100,
  "in_use": false,
  "creation_date": {
    "day": 5,
    "month": 8,
    "year": 2014,
    "hour": 11,
    "minute": 50,
    "second": 52
  }
}
 
Suggest Edits

Excluir Cupom de uma Assinatura

É possível excluir um cupom de uma assinatura. Para isso, basta executar a request abaixo.

 
deletehttps://sandbox.moip.com.br/assinaturas/v1/subscriptions/code/coupon

Path Params

code
string
required

Código da Assinatura

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

Atributos

Atributo Formato esperado Descrição
__
code "coupon-0001" Código do identificador do cupom.
name "Coupon name" Nome do cupom.
description "My new coupon" Descrição do cupom.
discount Node dos atributos do desconto. Ver valores possíveis.
├──value 10000 Valor do desconto com duas casas decimais.
└──type percent/amount Define se o tipo de desconto é percentual ou em reais (R$).
status "active/inactive" Cupons ativos podem ser associados em assinaturas, cupons inativos não podem ser associados, mas ainda podem estar relacionados com assinaturas já existentes.
duration Node de duração do cupom em uma assinatura. Ver valores possíveis.
├──type once/repeating/forever Determina se um cupom será válido apenas em uma cobrança, ou em um número específico diferente de 1 ou em todas.
└──occurrences percent/amount Representa o número de ocorrências que receberão o desconto. Válido apenas quando o type for repeating.
max_redemptions 100 Número máximo de submits do cupom até que ele seja inativado automaticamente.
expiration_date Data de inativação do cupom, quando ele não poderá mais ser associado a novas assinaturas.
├──year 2020 Ano da expiração no formato "yyyy".
├──month 10 Mês da expiração no formato "MM".
└──day 31 Dia da expiração no formato "dd".
creation_date Data e hora da criação do cupom.
├──day "26" Dia do mês no formato dd.
├──month "09" Mês no formato MM.
├──year "2012" Ano no formato yyyy.
├──hour "16" Horas no formato HH (24hs).
├──minute "00" Minutos no formato mm.
└──second "10" Segundos no formato ss.
in_use true/false Informa se o cupom está ou não aplicando suas regras em alguma assinatura.
curl --request DELETE \
  --url https://sandbox.moip.com.br/assinaturas/v1/subscriptions/code/coupon \
  --header 'authorization: Authorization'
var request = require("request");

var options = { method: 'DELETE',
  url:
   'https://sandbox.moip.com.br/assinaturas/v1/subscriptions/code/coupon',
  headers: { authorization: 'Authorization' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://sandbox.moip.com.br/assinaturas/v1/subscriptions/code/coupon")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Delete.new(url)
request["authorization"] = 'Authorization'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("DELETE", "https://sandbox.moip.com.br/assinaturas/v1/subscriptions/code/coupon");
xhr.setRequestHeader("authorization", "Authorization");

xhr.send(data);
import requests

url = "https://sandbox.moip.com.br/assinaturas/v1/subscriptions/code/coupon"

headers = {'authorization': 'Authorization'}

response = requests.request("DELETE", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

No response examples available
 
Suggest Edits

Retentativas

A Wirecard Assinaturas possibilita recuperar pagamentos de suas assinaturas pela interface e pela API.

 
Nome
Descrição
Detalhes

year

Ano no formato YYYY. Ex: 2020

integer

month

Mês no formato MM. Ex: 08

integer

day

Dia no formato DD. Ex: 01

integer

first_try

Primeira tentativa de cobrança.

integer

second_try

Segunda tentativa de cobrança.

integer

third_try

Terceira tentativa de cobrança.

integer

finally

Após as tentativas você pode escolher se a Assinatura será suspensa (suspend) ou cancelada (cancel).

boolean

IMPORTANTE

O limite diário de retentativas é de 3 tentativas/dia por fatura.

 
Suggest Edits

Retentativa de pagamento de uma fatura

Após uma fatura ter seu pagamento cancelado é possível fazer uma nova tentativa de cobrança tanto para cartão, quanto para boleto. Por cartão, pode ser no mesmo cartão que o cliente já possui, ou efetuar uma nova tentativa assim que atualizar os dados do cartão. Por boleto é possível gerar um novo boleto, e fazer uma nova tentativa de cobrança para o seu cliente (é gerado um novo boleto e o boleto anterior é automaticamente cancelado).

 
posthttps://sandbox.moip.com.br/assinaturas/v1/invoices/id/retry

Path Params

id
string
required

ID da fatura

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

Content-Type
string
required

application/json

IMPORTANTE

Na retentativa por boletos, quando um novo boleto é gerado, o boleto anterior é automaticamente cancelado.

Lembre de sempre deixar habilitado o envio de e-mail para o comprador, no caso de retentiva por boleto.

A data de vencimento dos boletos gerados via essa API são de 5 dias corridos à partir da data de criação.

curl --request POST \
  --url https://sandbox.moip.com.br/assinaturas/v1/invoices/4453831/retry \
  --header 'authorization: Authorization' \
  --header 'content-type: Content-Type'
var request = require("request");

var options = { method: 'POST',
  url:
   'https://sandbox.moip.com.br/assinaturas/v1/invoices/4453831/retry',
  headers:
   { 'content-type': 'Content-Type',
     authorization: 'Authorization' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://sandbox.moip.com.br/assinaturas/v1/invoices/4453831/retry")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["authorization"] = 'Authorization'
request["content-type"] = 'Content-Type'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://sandbox.moip.com.br/assinaturas/v1/invoices/4453831/retry");
xhr.setRequestHeader("authorization", "Authorization");
xhr.setRequestHeader("content-type", "Content-Type");

xhr.send(data);
import requests

url = "https://sandbox.moip.com.br/assinaturas/v1/invoices/4453831/retry"

headers = {
    'authorization': "Authorization",
    'content-type': "Content-Type"
    }

response = requests.request("POST", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

No response examples available
 
Suggest Edits

Gerar um novo boleto para uma fatura

É possível criar um novo boleto para uma fatura escolhendo a data que o mesmo irá vencer. Este endpoint é diferente da retentativa por boleto, pois tem a opção de escolher a data de vencimento. Caso o assinante já tenha recebido um boleto e o mesmo ainda não estiver vencido, ele será automaticamente cancelado e o novo boleto será o único válido.

 
posthttps://sandbox.moip.com.br/assinaturas/v1/invoices/id/boletos

Path Params

id
string
required

ID da fatura

Body Params

year
string
required

Ano no formato YYYY. Ex: 2020

month
string
required

Mês no formato MM. Ex: 08

day
string
required

Dia no formato DD. Ex: 01

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

Content-Type
string
required

application/json

IMPORTANTE

Se você tiver configurado em sua conta o envio de e-mails para assinantes. Ao fazer essa retentativa, o assinante receberá um e-mail com o novo boleto.

{
    "year": 2020,
    "month": 08,
    "day": 01
}
A binary file was returned

You couldn't be authenticated

{
    "subscription_code": "assinatura_boleto",
    "amount": 100,
    "_links": {
        "boleto": {
            "redirect_href": "https://checkout-sandbox.moip.com.br/boleto/PAY-S4YWH31TW8E8"
        }
    },
    "due_date": {
        "month": 8,
        "hour": 0,
        "year": 2020,
        "day": 1,
        "minute": 0,
        "second": 0
    },
    "id": 4583997,
    "creation_date": {
        "month": 8,
        "hour": 10,
        "year": 2017,
        "day": 18,
        "minute": 52,
        "second": 24
    },
    "occurrence": 1,
    "plan": {
        "code": "13443245",
        "name": "Plan Name"
    },
    "items": [
        {
            "amount": 100,
            "type": "Subscription Fee"
        },
        {
            "amount": 0,
            "type": "Hiring Fee"
        }
    ],
    "customer": {
        "code": "customer_code",
        "fullname": "José Silva",
        "email": "josesilva@email.com"
    },
    "status": {
        "code": 2,
        "description": "Aguardando confirmação"
    }
}
 
Suggest Edits

Criar Regras de Retentativas Automáticas

Além de tentar reprocessar um pagamento manualmente via interface ou através de uma requisição na API, é possível configurar retentativas automáticas a partir das quais a Wirecard vai reprocessar seus pagamentos de acordo com suas preferências. Essas retentativas são aplicadas a todas as cobranças recorrentes, porém, não ocorrem na primeira ocorrência de cobrança (primeira fatura gerada). Essas regras não são aplicadas para as cobranças por boletos.

 
posthttps://sandbox.moip.com.br/assinaturas/v1/users/preferences/retry

Body Params

first_try
int32

Primeira tentativa.

second_try
int32

Segunda tentativa.

third_try
int32

Terceira tentativa.

finally
string

Após as tentativas você pode escolher se a Assinatura será suspensa (suspend) ou cancelada (cancel).

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

Content-Type
string
required

application/json

Você pode determinar até três tentativas de cobrança de uma fatura em atraso. Leia mais sobre faturas em status atrasada.

ATENÇÃO

  1. As regras de retentativas só são válidas para as cobranças por cartão de crédito. Para enviar novas cobranças por boleto você deve gerá-los novamente como visto na seção anterior.

  2. O limite diário de retentativas é de 3 tentativas/dia por invoice, independente se essa é uma tentativa automática (feita pela Wirecard Assinaturas) ou manual (feita pelo cliente). Caso as retentativas automáticas não sejam configuradas, a assinatura será automaticamente suspensa após o primeiro cancelamento.

As datas das retentativas são calculadas com base na tentativa anterior, podendo ser configuradas de acordo com a tabela abaixo:

Parâmetros

Parâmetro Valor
first_try, second_try, third_try, finally 1, 3, 5, 7 dia após a tentativa anterior suspend e cancel deixam de executar a retentativa e alteram o status da Assinatura.

Assim, o intervalo mínimo de retentativa automática é de 1 dia e o máximo de 22 dias.

IMPORTANTE

Recomendamos que o intervalo total de retentativas seja sempre inferior ao seu plano com a menor periodicidade de cobranças. Por exemplo, se seu plano for quinzenal, configure suas retentativas para um intervalo total de no máximo 14 dias, evitando assim efetuar duas cobranças autorizadas em períodos muito curtos de tempo.

{
    "first_try": 1,
    "second_try": 3,
    "third_try": 5,
    "finally": "cancel"
}
A binary file was returned

You couldn't be authenticated

No response examples available
 
Suggest Edits

Preferências de notificação

 

Você pode alterar algumas das preferências de sua conta para a Wirecard Assinaturas também através de uma requisição via API. As configurações que podem ser alteradas são: envio de e-mails ao vendedor, envio de e-mails ao assinante e URL de notificação.

 
Suggest Edits

Criar Preferência de Notificação

 
posthttps://sandbox.moip.com.br/assinaturas/v1/users/preferences

Body Params

notification
object

Node de criação de preferência de notificação.

webhook
string

Node de configuração do webhook.

url
string

URL onde você deve receber os webhooks enviados pelo Moip.

email
object

Node de configuração de recebimento de e-mails.

merchant
object

Node de configuração do e-mail do merchant (comerciante).

enabled
string

Para ativar o recebimento de e-mails o valor deve ser true. Para desativar escolha false

customer
object

Node de configuração de recebimento de e-mail pelo customer (cliente).

Headers

Authorization
string
required

Basic [gerar hash base64 do token:chave]

Content-Type
string
required

application/json

IMPORTANTE

Não podemos garantir a ordem dos status que serão recebidos pela sua aplicação. Desta forma, aconselhamos o uso da abordagem de tratamento de status baseado em hierarquia.

DICA

Caso não tenha uma URL disponível você pode usar o Webhook Tester para fazer seus testes e receber os webhooks. Para isso basta acessar o site que será gerado uma URL para testes.

  1. Entre no site e clique em "Copy";
  2. Após copiar a URL gerada use-a no valor da url da requisição de criação de preferência de notificação.

Dessa forma a Wirecard enviará os webhooks para a URL gerada e nela você poderá ver as notificações que recebeu.

Atenção

O Webhook Tester é apenas uma ferramenta que deve ser usada a fim de fazer testes em sua aplicação. A URL gerada é provisória e você deve trocar para uma URL permanente logo que tenha uma.

{
  "notification": {
    "webhook": {
      "url": "http://exemploldeurl.com.br/assinaturas"
    },
    "email": {
      "merchant": {
        "enabled": true
      },
      "customer": {
        "enabled": true
      }
    }
  }
}
A binary file was returned

You couldn't be authenticated

No response examples available
 
 

Atributos (Webhooks Assinaturas):

Nome Descrição Detalhes
__
event Evento que gerou o webhook. Valores possíveis apresentados na lista abaixo. string
date Data da criação do evento. string
env Ambiente onde o evento ocorreu (production/sandbox). string
resource Estrutura de recurso que gerou o webhook. string
 
Suggest Edits

Exemplo de Webhook de Planos (Plans)

 
//Plano criado
//PLAN.CREATED

{
    "event": "plan.created",
    "resource": {
        "amount": 990,
        "max_qty": 1,
        "setup_fee": 500,
        "interval": {
            "unit": "MONTH",
            "length": 1
        },
        "status": "ACTIVE",
        "description": "Descrição do Plano Especial",
        "name": "Plano Especial",
        "payment_method": "CREDIT_CARD",
        "billing_cycles": 12,
        "code": "plano01",
        "trial": {
            "enabled": true,
            "days": 30,
            "hold_setup_fee": true
        }
    },
    "env": "sandbox",
    "date": "01/01/2013 00:00:00"
}
//Plano ativado
//PLAN.ACTIVATED

{
   "event": "plan.activated", 
   "date": "01/01/2013 00:00:00",
   "env": "sandbox",
   "resource": { 
        "code": "plano01"
   }
} 
//Plano atualizado 
//PLAN.UPDATED

{  
   "date":"22/05/2018 15:59:57",
   "env":"sandbox",
   "event":"plan.updated",
   "resource":{  
      "amount":5000,
      "billing_cycles":12,
      "code":"plan101",
      "description":"Nova descrição",
      "interval":{  
         "length":1,
         "unit":"MONTH"
      },
      "max_qty":1,
      "name":"Plano Especial",
      "payment_method":"CREDIT_CARD",
      "setup_fee":800,
      "status":"ACTIVE",
      "trial":{  
         "days":30,
         "enabled":true,
         "hold_setup_fee":true
      }
   }
}
//Plano desativado 
//PLAN.INACTIVATED

{  
   "date":"22/05/2018 16:05:09",
   "env":"sandbox",
   "event":"plan.inactivated",
   "resource":{  
      "code":"plan101"
   }
}
 
Suggest Edits

Exemplo de Webhook de Clientes (Customers)

 
//Assinante criado 
//CUSTOMER.CREATED

{  
   "date":"15/01/2019 15:01:54",
   "env":"sandbox",
   "event":"customer.created",
   "resource":{  
      "address":{  
         "city":"São Paulo",
         "complement":"Casa",
         "country":"BRA",
         "district":"Nome do Bairro",
         "number":"100",
         "state":"SP",
         "street":"Rua Nome da Rua",
         "zipcode":"05015010"
      },
      "billing_info":{  
         "credit_cards":[  
            {  
               "brand":"VISA",
               "expiration_month":"04",
               "expiration_year":"19",
               "first_six_digits":"411111",
               "holder_name":"Nome Completo",
               "last_four_digits":"1111",
               "vault":"68c615e3-0a22-4014-ba3b-4a7d1d9cfc9d"
            }
         ]
      },
      "birthdate_day":26,
      "birthdate_month":"04",
      "birthdate_year":1980,
      "code":"1547571712",
      "document":"22222222222",
      "document_type":"CPF",
      "email":"email_1547571712@exemplo.com.br",
      "fullname":"Nome Sobrenome",
      "phone_area_code":"11",
      "phone_number":"934343434"
   }
}
//Assinante atualizado 
//CUSTOMER.UPDATED

{  
   "date":"22/05/2018 16:24:06",
   "env":"sandbox",
   "event":"customer.updated",
   "resource":{  
      "address":{  
         "city":"Salvador",
         "complement":"Casa",
         "country":"BRA",
         "district":"Bairro",
         "number":"100",
         "state":"BA",
         "street":"Rua nova rua",
         "zipcode":"06413150"
      },
      "billing_info":{  
         "credit_cards":[  
            {  
               "brand":"VISA",
               "expiration_month":"06",
               "expiration_year":"22",
               "first_six_digits":"411111",
               "holder_name":"Nome Completo",
               "last_four_digits":"1111",
               "vault":"812a6b48-91db-445f-a348-cefc0666bc3f"
            }
         ]
      },
      "birthdate_day":26,
      "birthdate_month":"04",
      "birthdate_year":1986,
      "code":"cliente120",
      "cpf":"34299728092",
      "email":"novoemail@exemplo.com.br",
      "fullname":"Novo Nome",
      "phone_area_code":"11",
      "phone_number":"934343434"
   }
}
 
Suggest Edits

Exemplo de Webhook de Assinaturas (Subscriptions)

 
//Assinatura criada
//SUBSCRIPTION.CREATED

{
    "event": "subscription.created",
    "resource": {
        "amount": 990,
        "creation_date": {
            "month": 01,
            "year": 2013,
            "day": 01
        },
        "plan": {
            "code": "plano01"
        },
        "status": "ACTIVE",
        "expiration_date": {
            "month": 06,
            "year": 2013,
            "day": 01
        },
        "next_invoice_date": {
            "month": 02,
            "year": 2013,
            "day": 01
        },
        "payment_method": "CREDIT_CARD",
        "code": "assinatura01",
        "customer": {
            "code": "cliente01"
        }
    },
    "env": "sandbox",
    "date": "01/01/2013 00:00:00"
}
//Assinatura ativada
//SUBSCRIPTION.ACTIVATED

{
    "event": "subscription.activated",
    "resource": {
        "code": "assinatura01"
    },
    "env": "prod",
    "date": "01/01/2013 00:00:00"
} 
//Assinatura atualizada 
//SUBSCRIPTION.UPDATED

{  
   "date":"22/05/2018 16:40:41",
   "env":"sandbox",
   "event":"subscription.updated",
   "resource":{  
      "amount":10000,
      "code":"Assinatura_10201020",
      "creation_date":{  
         "day":22,
         "month":5,
         "year":2018
      },
      "customer":{  
         "code":"cliente125"
      },
      "expiration_date":{  
         "day":22,
         "month":5,
         "year":2019
      },
      "next_invoice_date":{  
         "day":5,
         "month":6,
         "year":2018
      },
      "payment_method":"CREDIT_CARD",
      "plan":{  
         "code":"plan1020"
      },
      "status":"ACTIVE"
   }
}
//Assinatura suspensa 
//SUBSCRIPTION.SUSPENDED

{  
   "date":"22/05/2018 16:51:32",
   "env":"sandbox",
   "event":"subscription.suspended",
   "resource":{  
      "code":"Assinatura_20102010"
   }
}
//Assinatura cancelada 
//SUBSCRIPTION.CANCELED

{  
   "date":"22/05/2018 16:48:41",
   "env":"sandbox",
   "event":"subscription.canceled",
   "resource":{  
      "code":"Assinatura_10201020"
   }
}
//Assinatura Migrada
//SUBSCRIPTION.MIGRATED

{  
   "date":"13/06/2018 14:34:13",
   "env":"sandbox",
   "event":"subscription.migrated",
   "resource":{  
      "plan":{  
         "code":"1528911250"
      }
   }
}
 
Suggest Edits

Exemplo de Webhook de Faturas (Invoices)

 
//Fatura criada
//INVOICE.CREATED

{
   "event": "invoice.created",
   "date": "01/01/2013 00:00:00",
   "env": "sandbox",
   "resource": {
       "id": 13, //ID da fatura
       "subscription_code": "assinatura01",
       "amount": 101,
       "occurrence": 1,
       "status": {
           "code": 1,
           "description": "Em aberto"
       }
   }
}
//Fatura atualizada
//INVOICE.STATUS_UPDATED

{
   "event": "invoice.status_updated",
   "date": "01/01/2013 00:00:00",
   "env": "sandbox",
   "resource": {
       "id": 13, //ID da fatura
       "status": { //novo status da fatura
           "code": 2,
           "description": "Aguardando confirmação"
       }
   }
}
 
Suggest Edits

Exemplo de Webhook de Pagamentos de Assinaturas (Payments)

 
//Pagamento criado
//PAYMENT.CREATED

{
   "event": "payment.created",
   "date": "01/01/2013 00:00:00",
   "env": "sandbox",
   "resource": {
       "id": 6, //ID do pagamento
       "invoice_id": 13,
       "moip_id": 14456223,
       "subscription_code": "assinatura01",
       "amount": 101,
       "status": {
           "code": 2,
           "description": "Iniciado"
       },
       "payment_method": {
           "code": 1,
           "description": "Cartão de Crédito",
           "credit_card": { //enviado apenas se foi pago com cartão de crédito
               "brand": "VISA",
               "holder_name": "Fulano Testador",
               "first_six_digits": "411111",
               "last_four_digits": "1111",
               "vault": "cc7719e7-9543-4380-bdfe-c14d0e3b8ec9"
           }
       }
   }
}
//Pagamento atualizado
//PAYMENT.STATUS_UPDATED

{
   "event": "payment.status_updated",
   "date": "01/01/2013 00:00:00",
   "env": "sandbox",
   "resource": {
       "id": 6, //identificador do pagamento
       "status": { //novo status do pagamento
           "code": 6,
           "description": "Em análise"
       }
   }
}
 
Suggest Edits

Eventos

Os eventos das notificações são os status das assinaturas. Abaixo estão as listas de todos os eventos possíveis.

 

Planos

As informações do Plano (plan) estarão disponíveis no recurso plans dentro do JSON de webhook.

Tipos de Evento de Planos
Descrição

PLAN.CREATED

Criação de um novo plano.

PLAN.UPDATED

Atualização de um plano existente.

PLAN.ACTIVATED

Ativação de um plano.

PLAN.INACTIVATED

Inativação de um plano.

Assinante

As informações do Assinante (customer) estarão disponíveis no recurso customer dentro do JSON de webhook.

Tipos de Evento de Assinantes
Descrição

CUSTOMER.CREATED

Criação de um novo cliente.

CUSTOMER.UPDATED

Atualização de um cliente existente.

Assinaturas

As informações da Assinatura (subscription) estarão disponíveis no recurso subscription dentro do JSON de webhook.

Tipos de Evento de Assinaturas

SUBSCRIPTION.CREATED

Nova assinatura criada.

SUBSCRIPTION.UPDATED

Atualização de uma assinatura existente.

SUBSCRIPTION.ACTIVATED

Assinatura ativada.

SUBSCRIPTION.SUSPENDED

Assinatura suspensa.

SUBSCRIPTION.CANCELED

Assinatura cancelada.

SUBSCRIPTION.MIGRATED

Assinatura migrada. Acontece quando é usado a api de alterar os dados da assinatura.

Faturas

As informações da Fatura (invoice) estarão disponíveis no recurso invoice dentro do JSON de webhook.

Tipos de Evento de Faturas
Descrição

INVOICE.CREATED

Nova fatura criada.

INVOICE.STATUS_UPDATED

Fatura existente atualizada.

Pagamentos

As informações do Pagamento (payment) estarão disponíveis no recurso payment dentro do JSON de webhook.

Tipos de Evento de Pagamentos
Descrição

PAYMENT.CREATED

Novo pagamento criado.

PAYMENT.STATUS_UPDATED

Um pagamento recebeu uma alteração de status.

 
Suggest Edits

Lista de Erros

 

Atributos

Nome
Descrição
Detalhes

code

Código identificador do erro

string

description

Descrição do erro

string

Você vai receber um erro se o formato da requisição estiver com algum problema de sintaxe ou se houver algum erro na validação de um atributo (exemplo: caracteres inválidos para aquele atributo).

Os alertas auxiliam o desenvolvedor na integração uma vez que informam como melhorar a integração, aumentar a conversão de pagamentos e preveni-lo de futuros erros.

Exemplo

{
    "message": "Erro na requisição",
    "errors": [
        {
            "code": "MA1",
            "description": "Código já utilizado. Escolha outro código."
        }
    ]
}
Code description type scope
__
MA1 Erro inesperado error assinaturas
MA2 O ambiente informado não é válido. Informe SANDBOX para testes ou PRODUCTION para produção error assinaturas
MA3 A estrutura do JSON ou XML enviado não é válida error assinaturas
MA4 O método de callback não é válido error assinaturas
MA5 Código do plano deve ser informado error assinaturas
MA6 Código do plano já utilizado. Escolha outro código error assinaturas
MA7 O limite de assinaturas do plano foi atigindo error assinaturas
MA8 Código do plano não pode ter caracteres especiais, pontuação ou espaço. Exemplo válido: PLAN_001-23 error assinaturas
MA9 Código do plano não pode começar ou terminar com espaços. Os espaços foram ignorados alert assinaturas
MA10 O nome do plano deve ser informado error assinaturas
MA11 O nome do plano deve ter no máximo 65 caracteres error assinaturas
MA12 A descrição do plano deve ter no máximo 255 caracteres error assinaturas
MA13 O valor do plano deve ser informado error assinaturas
MA14 O valor deve ter apenas números error assinaturas
MA15 O valor deve ter no máximo 9 dígitos error assinaturas
MA16 O valor do plano não pode ser inferior a R$ 1,00 error assinaturas
MA17 A taxa de contratação deve ter apenas números error assinaturas
MA18 A taxa de contratação deve ser maior que zero error assinaturas
MA19 A taxa de contratação deve ter no máximo 9 díg