- Documentação Best Bank API
- Aceder à API
- Referência Rápida
Referência Rápida
Esta página contém algumas referências rápida para os desenvolvedores.
URL Sandbox
https://dev.openbank.bancobest.pt/sandbox
URL Production
https://api.openbank.bancobest.pt/
Endpoint Initiate
Descrição
Endpoint que dá acesso à página de autenticação e consentimentos. Um passo necessário para usar o endpoint '/Token' e aceder às operações.
Funções Permitidas
- PSP_AI
- PSP_AS
- PSP_IC
- PSP_PI
Endereço POST
https://api.openbank.bancobest.pt/api/v2/OAuth/Initiate
Cabeçalho do Pedido
Variável | Valor de Exemplo | Descrição | Obrigatório? |
---|---|---|---|
Authorization | OAuth oauth_consumer_key=0f4c0... | Esquema OAuth para Autorização. Ver documentação "Aceder à API" | Sim |
Certificate | 9dFpJUCnQcwe80aAOHx7YWYlqisICXNnVSKiaiA9vGO8YnzlZoJcUVPJ/rZ68X8FD== | Chave públic do certificado. Ver documentação "Aceder à API" | Sim |
redirect_uri | myapplication.com/loginReturn | Endereço que o utilizador será redirecionado para após a operação. | Sim |
response_type | 200 | Código de resposta HTTP retornado no caso de sucesso. Por padrão a resposta é 200. | Não |
state | something_here | Valor utilizado livrement pela aplicação que será retornado após a operação. | Sim |
Corpo da Resposta: (Formato JSON)
Variável | Valor de Exemplo | Descrição |
---|---|---|
LoginUrl | (ver exemplo em baixo) | URL da página de autenticação e consentimento. |
Exemplo de Corpo da Resposta.
json
{
"LoginUrl": "https://www.bancobest.pt/ptg/start.swe?SWECmd=InvokeMethod&SWEService=BEST+Process+Web+Request+NS&SWEMethod=runService&serviceName=BEST+PSD2+Web&serviceMethod=StartLogin&login_token=f191ba310f111399c6dd5966fc2cd27e176bd8b91582f1df771a47531cf83226&state=none2&oper_id=1-BJN2KC"
}
URL de Redirecionamento: (Parâmetros GET no URL)
Variável | Valor de Exemplo | Descrição |
---|---|---|
code | d007359368f94215b4e0bda6aa039563 | Código Temporário utilizado para aceder ao Token de Acesso. |
oper_id | 1-BQMM39 | Identificador da operação de consentimento. |
state | something_here | Valor utilizado livremente pela aplicação que será retornado após a operação. |
myapplication.com/loginReturn?code=d007359368f94215b4e0bda6aa039563&state=something_here&oper_id=1-BQMM39
Endpoint Token
Funções Permitidas
- PSP_AI
- PSP_AS
- PSP_IC
- PSP_PI
Endereço POST
https://dev.openbank.bancobest.pt/sandbox/api/v2/OAuth/Token
Cabeçalho de Pedido
Variável | Valor de Exemplo | Descrição | Obrigatório? |
---|---|---|---|
Authorization | OAuth code=d007359368f94215b4e0bda6aa039563,oauth_consumer_key=0f4c0... | Esquema OAuth para Autorização com o código temporário. Ver documentação "Aceder à API" | Sim |
Certificate | 9dFpJUCnQcwe80aAOHx7YWYlqisICXNnVSKiaiA9vGO8YnzlZoJcUVPJ/rZ68X8FD== | Public key of the certificate. See "How to Access API". | Yes |
Corpo de Pedido
SEM CORPO DE PEDIDO
Corpo da Resposta: (Formato JSON)
Variável | Valor de Exemplo | Descrição |
---|---|---|
access_token | b7633a278bae420dabc91df952d83532 | Token de Acesso a ser utilziado no esquema OAuth para as operações da API. |
expires_in | 1648166400 | Timestamp que representa a tempo quanto o Access Token deverá expirar. |
Exemplo de Corpo da Resposta.
json
{
"access_token": "b7633a278bae420dabc91df952d83532",
"expires_in":1648166400
}
Endpoint CheckOperationByID
Descrição
Endpoint que ofereçe informação extra com base em algumas operações específicas. Estas operações de momento são retornadas após o redirecionamento dos endpoints de '/Initiate' e '/InitiatePayment'
Funções Permitidas
- PSP_AS
- PSP_IC
- PSP_PI
Endereço POST
https://dev.openbank.bancobest.pt/sandbox/api/v2/Operation/CheckOperationByID/{ID}
Cabeçalho de Pedido
Variável | Valor de Exemplo | Descrição | Obrigatório? |
---|---|---|---|
Authorization | OAuth access_token=c7622a278bae420dabc91df952d83582,oauth_consumer_key=0f4c0... | Esquema OAuth para Autorização com o código de acesso. Ver documentação "Aceder à API" | Sim |
Certificate | 9dFpJUCnQcwe80aAOHx7YWYlqisICXNnVSKiaiA9vGO8YnzlZoJcUVPJ/rZ68X8FD== | Chave públic do certificado. Ver documentação "Aceder à API" | Sim |
Corpo de Pedido
SEM CORPO DE PEDIDO
Corpo de Resposta
Exemplo de uma operação gerada a partir do endpoint api/v2/OAuth/Initiate :
json
{
"outputData": {
"oper_id": "1-BQOCJB",
"error_code": null,
"error_desc": null,
"redirect_url": "http://httpbin.org/get?oper_id=1-BQOCJB&status=INIT",
"home_iban": null,
"oper_type": "0",
"oper_sub_type": null,
"oper_status": null,
"entity_name": "BANCO BEST",
"destination": null,
"dest_name": null,
"amount": null,
"description": null,
"transfer_type": null,
"dest_email": null,
"dest_cellphone": null,
"currency": null,
"urgent": null,
"transf_reason": null,
"exp_detail": null,
"dest_address": null,
"swift": null,
"bank_name": null,
"bank_address": null,
"bank_city": null,
"bank_country": null,
"entity": null,
"reference": null,
"regime_type": null,
"reference_year": null,
"reference_month": null,
"beneficiary": null,
"employer": null,
"remuneration_type": null,
"remuneration_units": null,
"fiscal_number": null,
"credit_card_num": null,
"mov_date": null,
"status": "INIT",
"order_num": null
},
"returnCode": "0",
"returnMsg": "Sucesso"
}
Variável | Tipo de Dados | Descrição | Observações |
---|---|---|---|
login_token | String | Código utilizado no pedido de consentimento | |
oper_type | String | Tipo de Operação | Valores possíveis: 0 - Pedido de Consentimento 1 - Operação (Transferência/Pagamento) |
oper_sub_type | String | Sub-tipo de Operação | Apenas utilizado em Transferências/Pagamentos: TRF_EC – Transferência entre contas TRF_INTERB – Transferência interbancárias TRF_INTERN – Transferência internacional PS – Pagamento de Serviços PC – Pagamento Compras PE – Pagamento Estado PSS – Pagamento segurança social PCOM – Pagamento comunicações TSU – Taxa social unica |
oper_status | String | Estado de Operação | |
error_code | String | Código de Erro | |
error_desc | String | Descrição de Erro | |
entity_name | String | Nome de Entidade | |
certify_guid | String | GUID do certificado da entidade | |
tpp_auth_number | String | Número de Autorização do TPP | |
tpp_role | String | Função do TPP | |
tpp_country | String | País do TPP | |
nca_identify | String | NCA Identificação NCA | |
timestamp_eba | String | Timestamp de Verificação EBA | |
home_iban | String | IBAN Origem | |
credit_card_num | String | Número Cartão de Crédito | |
redirect_url | String | Link utilizado para redireccionar para o site do TPP | Link utilizado para redireccionar para o site do TPP |
oper_date | Date | Data da Operação | |
destination | String | Destino do IBAN | |
dest_name | String | Nome do Destinatário | |
amount | Number | Valor a Transferir | Tem de ser superior a 0. |
description | String | Descritivo | |
transfer_type | String | Transferência Imediata | Valores possíveis: 1 - Transferência normal 2 - Transferência Imediata |
dest_email | String | Email do Destinatário | |
dest_cellphone | String | Telemóvel do Destinatário | |
currency | String | Moeda | Quando não é enviado é utilizado o EUR |
urgent | String | Urgente | Valores possíveis: Y - Sim N - Não |
transf_reason | String | Natureza da Tranferencia | Valores possíveis: 052 - Transf. de não residentes (qualquer motivo) 066 - Transf. entre contas de residente, em Portugal e no Exterior 068 - Transf. entre contas de emigrante, em Portugal e no Exterior 101 - Exportação/Importação de Mercadorias 292 - Viagens e Turismo - desp de viagem e estada turística 479 - Outros serviços fornecidos por empresas 483 - Serviços de educação 489 - Outros de serviços de natureza pessoal 622 - Transf. correntes privadas de residentes p/ não residentes |
exp_detail | String | Despesas a cargo de | Valores possíveis: SHA - Despesas partilhadas (Sha) OUR - Sem desp p/ beneficiário (Our) BEN - Sem desp p/ ordenador (Ben) |
dest_address | String | Morada do Destinatário | |
swift | String | Endereço SWIFT do Banco do Destinatário | |
bank_name | String | Nome do banco destinatário | |
bank_address | String | Morada do banco destinatário | |
bank_city | String | Localidade do banco destinatário | |
bank_country | String | Código do País do banco destinatário | |
entity | String | Entidade | |
reference | String | Referência | |
regime_type | String | Tipo de Regime | Valores possíveis: 3 - Serviço doméstico 4 - Trabalhadores independentes 5 - Seguro social voluntário 6 - Produtores agricolas Açores |
reference_year | String | Ano de referência | Só são permitidos os últimos 5 anos (Se estamos em 2019 só permite 2019,2018,2017,2016,2015,2014) |
reference_month | String | Mês de referência | Ex.: 01,02,03,04,05,06,07,08,09,10,11,12 |
beneficiary | String | Nº Beneficiário da Segurança Social | |
employer | String | Nº Beneficiário da Entidade Patronal | |
remuneration_type | String | Tipo de Remuneração | Valores possíveis: 1 - Mensal - Mês completo 2 - Mensal - Mês incompleto 3 - Horária |
remuneration_units | Integer | Unidades de Pagamento | |
fiscal_number | String | Número de contribuinte | |
mov_date | Date | Data do Movimento/Data de Execução do Pagamento | Valor retornado nas APIs de pagamentos ou transferências |
order_num | String | Número de Ordem do Movimento | Valor retornado na API de transferências |
dest_country | String | Código Númerico ISO 3166-1 do país do destinatário | Deve sempre conter 4 caractéres (ex.: Código '840' deverá ser '0840') |
Endpoint Balance
Descrição
Pesquisar pelo balanço e mais alguma informação da conta/cartão de crédito para todas as contas/cartões do utilizador ou apenas um específico (definido pelo ID).
Funções Permitidas
- PSP_AI
- PSP_AS
- PSP_IC
- PSP_PI
Endereços
https://dev.openbank.bancobest.pt/sandbox/api/v2/Operation/Balance/{Type}
https://dev.openbank.bancobest.pt/sandbox/api/v2/Operation/Balance/{Type}/{ID}
ex.:
https://dev.openbank.bancobest.pt/sandbox/api/v2/Operation/Balance/Account/0-MDAwMDAxMDI2
Variável | Valor de Exemplo | Descrição | Obrigatório? |
---|---|---|---|
Type | Account or CreditCard | Indica se o balanço acedido pertence a Contas ou Cartões de Crédito. | Sim |
ID | 0-MDAwMDAxMDI2 | Identificador opcional utilizado para pesquisar balanço de uma Conta em específico. APENAS DISPONÍVEL PARA CONTAS! | Não |
Cabeçalho de Pedido
Variável | Valor de Exemplo | Descrição | Obrigatório? |
---|---|---|---|
Authorization | OAuth access_token=c7622a278bae420dabc91df952d83582,oauth_consumer_key=0f4c0... | Esquema OAuth para Autorização com o token de acesso. Ver documentação "Aceder à API" | Sim |
Corpo de Pedido
SEM CORPO DE PEDIDO
Corpo de Resposta (Formato JSON)
- Para balanços do tipo Account (Conta):
json
[
{
"ID": "0-MDAwMDAxMDI2",
"Balance": 995.0000,
"BalanceAvailable": 0.0,
"BalanceBooked": 995.0000,
"Currency": "EUR",
"AccountType": "Account",
"Product": "Conta Digital",
"AccountNumber": {
"Type": "IBAN",
"Value": "PT50006500010000000620154"
}
}
]
- Para balanços do tipo CreditCard (Cartão de Crédito):
json
[
{
"ID": "1-MDAwMDAxMDI2",
"Balance": 995.0000,
"BalanceAvailable": 0.0,
"BalanceBooked": 0.0,
"Currency": null,
"AccountType": "CreditCard",
"Product": "BestBankSandbox",
"AccountNumber": {
"Type": "CreditCard",
"Value": "5247729000001026"
}
}
]
Corpo de Pedido Erro (Formato JSON)
- Tentativa de aceder a uma conta/cartão de crédito inválido (e.x.: Conta não pertence ao utilizador)
json
{
"Message":"EACC002",
"ErrorDate":"2022-01-30T00:00:00.0000000Z","ErrorID":"abf833d24de34bad8b5006f2ba621efx"
}
Endpoint Transactions
Descrição
Pesquisar as transações feitas a partir de uma certa Conta ou Cartão de Crédito.
Funções Permitidas
- PSP_AI
- PSP_AS
- PSP_PI
Endereço
https://dev.openbank.bancobest.pt/sandbox/api/v2/Operation/Transactions/{Type}/{ID}
e.x.:
https://dev.openbank.bancobest.pt/sandbox/api/v2/Operation/Transactions/Account/0-MDAwMDAxMDI2
Variável | Valor de Exemplo | Descrição | Obrigatório? | |
---|---|---|---|---|
Type | Account or CreditCard | Indica se as transferências acedidas pertencem a uma Conta ou Cartões de Crédito. | Sim | |
ID | 0-MDAwMDAxMDI2 | Identificador utilizado para pesquisar as trasnferências de uma Conta ou Cartão de Crédito em específico. | Yes |
Cabeçalho de Pedido
Variável | Valor de Exemplo | Descrição | Obrigatório? |
---|---|---|---|
Authorization | OAuth access_token=c7622a278bae420dabc91df952d83582,oauth_consumer_key=0f4c0... | Esquema OAuth para Autorização com o token de acesso. Ver documentação "Aceder à API" | Sim |
Corpo de Pedido
SEM CORPO DE PEDIDO
Corpo de Resposta (Formato JSON)
- Para transações do tipo Account (Conta):
json
[
{
"Balance": 1000.0,
"Type": "Credit",
"Description": "Sandbox Virtual Main Account Bank",
"Date": "1598349684",
"Amount": 1000.0000,
"MovimentCurrency": "EUR",
"TransactionNumber": "10036"
},
{
"Balance": 2000.0,
"Type": "Credit",
"Description": "",
"Date": "1598372709",
"Amount": 5.0000,
"MovimentCurrency": "EUR",
"TransactionNumber": "10037"
},
{
"Balance": 2005.0,
"Type": "Debit",
"Description": "Sandbox Virtual Main Account Bank",
"Date": "1598349684",
"Amount": -1000.0000,
"MovimentCurrency": "EUR",
"TransactionNumber": "10038"
},
{
"Balance": 1005.0,
"Type": "Debit",
"Description": "",
"Date": "1598372709",
"Amount": -5.0000,
"MovimentCurrency": "EUR",
"TransactionNumber": "10039"
}
]
- Para transações do tipo CreditCard (Cartão de Crédito):
json
[
{
"Balance": 1000.0,
"Type": "Debit",
"Description": "PAYMENT NOS Movies",
"Date": "1530403200",
"Amount": -10.0,
"MovimentCurrency": null,
"TransactionNumber": "2"
},
{
"Balance": 990.0,
"Type": "Credit",
"Description": "REFUND Soccer Team Donative",
"Date": "1529193600",
"Amount": 10.0,
"MovimentCurrency": null,
"TransactionNumber": "3"
}
]
Corpo de Pedido Erro (Formato JSON)
- Tentativa de aceder a uma conta/cartão de crédito inválido (e.x.: Conta não pertence ao utilizador)
json
{
"Message":"EACC002",
"ErrorDate":"2022-01-30T00:00:00.0000000Z","ErrorID":"abf833d24de34bad8b5006f2ba621efx"
}
Endpoint Initiate Payment
Início do Fluxo de Pagamento. A partir deste endpoint são feitas transferências e pagamentos com entidade e referência multibanco. Em produção, é enviado ao utilizador um SMS para confirmação da operação.
Notas Sandbox:
Ao contrário do endpoint '/Initiate', o '/InitiatePayment' não contém uma página específica para a sandbox. Dito isto, o ' LoginURL' irá ser igual ao valor do 'redirect_uri' que é enviado no pedido. O ID de operação que resulta deste pedido será um valor estático que poderá ser verificado no endpoint 'CheckOperationByID', que representa os dados de uma transferência regular.
Funções Permitidas
- PSP_AS
Endereço POST
https://api.openbank.bancobest.pt/api/v2/Operation/InitiatePayment
Headers
Variável | Valor de Exemplo | Descrição | Mandatório? |
---|---|---|---|
Authorization | OAuth oauth_consumer_key=0f4c0... | Basic OAuth auhtorization schema. See "How to Access API" | Sim |
certificate | 9dFpJUCnQcwe80aAOHx7YWYlqisICXNnVSKiaiA9vGO8YnzlZoJcUVPJ/rZ68X8FD== | Certificado em base64 que contém a chave pública | Sim |
redirect_uri | myapplication.com/loginReturn | Endereço para o qual o utilizador da aplicação será redirecionado após a operação | Sim |
Corpo do Pedido
Nome | Obrigatório? | Tipo | Dimensão | Formato | Descrição | Observações |
---|---|---|---|---|---|---|
pispid | S | String | ID dado pelo PISP para a iniciação de uma operação de pagamentos/transferências. Validade do valor é da responsabilidade do PISP. | |||
environment | N | String | 3 | WEB/APP | Identificador do ambiente a que o pagamento será redirecionado. | Por padrão assume WEB. |
creditor.account.iban | S | String | 21 | IBAN de Destino | ||
creditor.account.amount | S | String | 100 | Montante da Transferência | ||
creditor.account.type.inside | N | boolean | true/false | Tipo de transferência. (inside = true - transferência entre contas.) | ||
creditor.account.type.interbank | N | boolean | true/false | Tipo de transferência. (interbank = true - transferência interbancária.) | ||
creditor.account.type.international | N | boolean | true/false | Tipo de transferência. (international = true - transferência internacional.) | ||
creditor.name | S | String | 50 | Nome do Destinatário da Transferência. | ||
creditor.description | S | String | 140 | Descrição da Transferência. | ||
creditor.email | N | String | 50 | Email do Destinatário. | ||
creditor.country | S | String | 4 | País do Destinatário - Deve sempre conter 4 caractéres (ex.: Código '840' deverá ser '0840') | Código Númerico ISO 3166-1 (ex.: '0840' - Estados Unidos da America) - Deverá sempre ter 4 caractéres. | |
debtor.iban | N | String | 25 | Iban de origem. | Não deve conter o prefixo PT50 |
Corpo do Pedido Parcial - (apenas usado em internacionais)
Nome | Obrigatório? | Tipo | Dimensão | Formato | Descrição | Observações | ||
---|---|---|---|---|---|---|---|---|
creditor.account.info.currency | N | String | 3 | Código ISO 4217 para moedas - Por padrão assume 'EUR' | Código ISO 4217 para moedas - Por padrão assume 'EUR' | |||
creditor.account.info.urgency_flag | S | (Y/N) String | 1 | Indica urgência da transferência (Y - Sim, N - Não) | ||||
creditor.account.info.nature_code | S | String | 3 | Natureza da Transferência - Ver códigos possíveis em baixo. | ||||
creditor.account.info.address | S | String | 50 | Endereço do Destinatário. | ||||
creditor.account.info.expenses_code | S | String | 50 | [Ignorado se IBAN é SEPA] Detalhes de Despesas - Ver códigos possíveis em baixo. (Ignorado se SEPA, assume o valor 'SHA') | ||||
creditor.account.info.swift_code | S | String | 50 | [Ignorado se IBAN é SEPA] Código SWIFT do Banco da conta do Destinatário. | ||||
creditor.account.info.bank_name | S | String | 50 | [Ignorado se IBAN é SEPA] Nome do Banco da conta do Destinatário. | ||||
creditor.account.info.bank_address | S | String | 50 | [Ignorado se IBAN é SEPA] Endereço do Banco da conta do Destinatário. | ||||
creditor.account.info.bank_address_city | S | String | 50 | [Ignorado se IBAN é SEPA] Cidade do do Banco da conta do Destinatário. | ||||
creditor.account.info.bank_country_code | S | String | 4 | [Ignorado se IBAN é SEPA] Código do país do Banco da conta do Destinatário. - Deve sempre conter 4 caractéres (ex.: Código '840' deverá ser '0840') | Código Númerico ISO 3166-1 (ex.: '0840' - Estados Unidos da America) - Deverá sempre ter 4 caractéres. |
Exemplo de Corpo do Pedido para transferências entre contas:
json
{
"pispid": "1234567890-1234",
"environment": "WEB",
"creditor": {
"account": {
"iban": "006500010000000000000",
"amount": "5",
"type": {
"inside": true
}
},
"name": "Beneficiary name",
"description": "descrição",
"email": "email@email.com"
},
"debtor": {
"iban": "006500010000000000000"
}
}
Resposta:
{
"LoginUrl": "https://api.openbank.bancobest.pt/api/v2/Auth/Index/1-000000"
}
Exemplo de Corpo do Pedido para transferências interbancária:
json
{
"pispid": "1234567890-1234",
"environment": "WEB",
"type": "1",
"creditor": {
"account": {
"iban": "006500010000000000000",
"amount": "5",
"type": {
"interbank": true
}
},
"name": "Beneficiary name",
"description": "descrição",
"email": "email@email.com"
},
"debtor": {
"iban": "006500010000000000000"
}
}
Resposta:
{
"LoginUrl": "https://api.openbank.bancobest.pt/api/v2/Auth/Index/1-000000"
}
Exemplo de Corpo do Pedido para transferências internacionais:
json
{
"pispid": "1234567890-1234",
"environment": "WEB",
"type": "",
"creditor": {
"account": {
"iban": "006500010000000000000",
"amount": "5",
"type": {
"international": true
},
"info": {
"currency": "EUR",
"urgency_flag": "N",
"nature_code": "066",
"expenses_code": "OUR",
"address": "Morada do Destinatário Address 1",
"swift_code": "BESZPTPL123",
"bank_name": "Nome do Banco Dest",
"bank_address": "Praça Marquês de Pombal, Nº 3, 3º",
"bank_address_city": "Lisboa",
"bank_country_code": "0840"
}
},
"name": "Beneficiary name",
"description": "descrição",
"email": "email@email.com",
"country" : "0840"
},
"debtor": {
"iban": "006500010000000000000"
}
}
Resposta:
{
"LoginUrl": "https://api.openbank.bancobest.pt/api/v2/Auth/Index/1-000000"
}
Lista de códigos para Transferências Internacionais
Natureza da Transferência - Obrigatório. (nature_code) Valores possíveis: o 052 - Transf. de não residentes (qualquer motivo); o 066 - Transf. entre contas de residente, em Portugal e no Exterior; o 068 - Transf. entre contas de emigrante, em Portugal e no Exterior; o 101 - Exportação/Importação de Mercadorias; o 292 - Viagens e Turismo - desp de viagem e estada turística; o 479 - Outros serviços fornecidos por empresas; o 483 - Serviços de educação; o 489 - Outros de serviços de natureza pessoal; o 622 - Transf. correntes privadas de residentes p/ não residentes;
Detalhes de Despesas - Obrigatório. (expenses_code) Valores possíveis: o SHA - Despesas partilhadas (Sha); o OUR - Sem despesas para o beneficiário (Our); o BEN - Sem despesas para o originador (Ben);
URL de Redirecionamento : (Parametro GET no URL)
Variável | Valor exemplo | Descrição |
---|---|---|
oper_id | 1-BQMM39 | ID da operação de pagamento |
myapplication.com/loginReturn?oper_id=1-BQMM37
Pagamentos
Endereço POST
https://api.openbank.bancobest.pt/api/v2/Operation/InitiatePayment
Cabeçalho de Pedido
Variável | Valor de Exemplo | Descrição |
---|---|---|
redirect_uri | myapplication.com/loginReturn | Endereço para o qual o utilizador da aplicação será redirecionado após a operação |
response_type | 200 | Tipo de resposta. Atualmente este parâmetro não é usado, mas não pode ser nulo. |
scope | user | Scope do utilizador. Atualmente este parâmetro não é usado, mas não pode ser nulo. |
state | user | Valor que pode ser usado livremente pela aplicação, valor que será retornado após o login. |
certificate | 9dFpJUCnQcwe80aAOH... | Certificado em base64 que contém a chave pública |
Exemplo de Corpo de Pedido para pagamento de serviços:
Corpo de Pedido (Formato JSON)
Nome | Obrigatório? | Tipo | Dimensão | Formato | Descrição | Observações |
---|---|---|---|---|---|---|
creditor.payment_bill.entity | S | String | 5 | Entidade | ||
creditor.payment_bill.reference | S | String | 9 | Referência | ||
creditor.payment_bill.amount | S | String | 100 | Montante | ||
creditor.description | S | String | 140 | Descrição | ||
debtor.iban | N | String | 25 | Iban de origem. |
json
{
"creditor": {
"payment_bill": {
"entity": "22356",
"reference": "123456789",
"amount": "5",
},
"description": "",
},
"debtor": {
"iban": "006500010000000000000"
}
}
Corpo de Resposta (Formato JSON)
{
"LoginUrl": "https://api.openbank.bancobest.pt/api/v2/Auth/Index/1-000000"
}
Exemplo de Corpo de Pedido para pagamento de compras:
Corpo de Pedido (Formato JSON)
Nome | Obrigatório? | Tipo | Dimensão | Formato | Descrição | Observações |
---|---|---|---|---|---|---|
creditor.payment_bill.enterprise | S | String | 5 | Empresa | ||
creditor.payment_bill.reference | S | String | 9 | Referência | ||
creditor.payment_bill.amount | S | String | 100 | Montante | ||
debtor.iban | N | String | 25 | Iban de origem. |
json
{
"creditor": {
"payment_bill": {
"enterprise": "22356",
"reference": "123456789",
"amount": "5",
},
},
"debtor": {
"iban": "006500010000000000000"
}
}
Corpo de Resposta (Formato JSON)
{
"LoginUrl": "https://api.openbank.bancobest.pt/api/v2/Auth/Index/1-000000"
}
Exemplo de Corpo de Pedido para pagamento ao estado:
Corpo de Pedido (Formato JSON)
Nome | Obrigatório? | Tipo | Dimensão | Formato | Descrição | Observações |
---|---|---|---|---|---|---|
creditor.state_bill.reference | S | String | 9 | Referência | ||
creditor.state_bill.amount | S | String | 100 | Montante | ||
debtor.iban | N | String | 25 | Iban de origem. |
json
{
"creditor": {
"state_bill": {
"amount": "12",
"reference": "123456789",
},
},
"debtor": {
"iban": "006500010000000000000"
}
}
Corpo de Resposta (Formato JSON)
{
"LoginUrl": "https://api.openbank.bancobest.pt/api/v2/Auth/Index/1-000000"
}
Exemplo de Corpo de Pedido para pagamento santa casa:
Corpo de Pedido (Formato JSON)
Nome | Obrigatório? | Tipo | Dimensão | Formato | Descrição | Observações |
---|---|---|---|---|---|---|
creditor.santa_casa.player_card_num | S | String | 9 | Número de Jogador | ||
creditor.santa_casa.amount | S | String | 100 | Montante | ||
debtor.iban | N | String | 25 | Iban de origem. |
json
{
"creditor": {
"santa_casa": {
"amount": "12",
"player_card_num": "123456789",
},
},
"debtor": {
"iban": "006500010000000000000"
}
}
Corpo de Resposta (Formato JSON)
{
"LoginUrl": "https://api.openbank.bancobest.pt/api/v2/Auth/Index/1-000000"
}
Exemplo de Corpo de Pedido para pagamento segurança social:
Corpo de Pedido (Formato JSON)
Nome | Obrigatório? | Tipo | Dimensão | Formato | Descrição | Observações |
---|---|---|---|---|---|---|
creditor.social_security.regime_type | S | String | 1 | Tipo de Regime | 3 - Serviço doméstico 4- Trabalhadores independentes 5- Seguro social voluntário 6- Produtores agricolas Açores | |
creditor.social_security.reference_year | S | String | 4 | YYYY | Ano de referência | Só são permitidos os últimos 5 anos (Se estamos em 2019 só permite 2019,2018,2017,2016,2015,2014) |
creditor.social_security.reference_month | S | String | 2 | MM | Mês de referência | Ex: 01,02,03,04,05,06,07,08,09,10,11,12 |
creditor.social_security.beneficiary | S | String | 11 | Nº Beneficiário da Segurança Social | ||
creditor.social_security.employer | N | String | 11 | Nº Beneficiário da Entidade Patronal | Se o regime_type = "3" então este campo é obrigatório | |
creditor.social_security.remuneration_type | S | String | 1 | Montante | 1 - Mensal - Mês completo 2 - Mensal - Mês incompleto 3 - Horária | |
creditor.social_security.remuneration_units | S | String | Unidades de Pagamento | Se o tipo de renumeração fpr diferente de "1", é obrigatório. | ||
creditor.social_security.remuneration_monthly | S | String | Valor efetivo de renumeração mensal | |||
debtor.iban | N | String | 25 | IBAN de Origem |
json
{
"creditor": {
"social_security": {
"regime_type": "3",
"reference_year": "2021",
"reference_month": "01",
"beneficiary": "12345678900",
"employer": "12345678900",
"remuneration_type": "1",
"remuneration_units": "",
"remuneration_monthly": "",
},
},
"debtor": {
"iban": "006500010000000000000"
}
}
Endpoint TopsUpsGetPaymentInfo
Descrição
De forma a tratar alguns tipos de pagaments, é necessário obter informação dos Top Ups / Carregamentos através da API TopsUpsGetPaymentInfo.
Funções Permitidas
- PSP_AS
Endereço POST
https://dev.openbank.bancobest.pt/sandbox/api/v2/Operation/TopsUpsGetPaymentInfo
Request Header
Variável | Valor de Exemplo | Descrição | Obrigatório? |
---|---|---|---|
Authorization | OAuth oauth_consumer_key=0f4c0... | Esquema OAuth para Autorização. Ver documentação "Aceder à API" | Sim |
Certificate | 9dFpJUCnQcwe80aAOHx7YWYlqisICXNnVSKiaiA9vGO8YnzlZoJcUVPJ/rZ68X8FD== | Chave públic do certificado. Ver documentação "Aceder à API" | Sim |
Exemplo de Corpo do Pedido. (Top Up):
Corpo de Pedido (Formato JSON)
Nome | Obrigatório? | Tipo de Dados | Dimensão | Formato | Descrição | Notas |
---|---|---|---|---|---|---|
creditor.topup.entity_code | Sim | String | 5 | Código da Entidade | Informçaão de TopsUpsGetPaymentInfo (entityCode) | |
creditor.topup.reference | Sim | Number | Telefone ou Referência | |||
creditor.topup.amount | Não | Number | Quantia | |||
creditor.topup.amount_desc | Não | String | 30 | Descrição da quantia | Não obrigatório se a Quantia estiver preenchida. Informação de TopsUpsGetPaymentInfo (amount) |
Corpo de Resposta (Formato JSON)
json
{
"outputData": {
"ListOfEntities": {
"entity": [
{
"entityName": "WTF",
"entityCode": "10058",
"ListOfPaymentTypes": {
"payment": [
{
"name": "Carregamentos",
"code": "1",
"amount_max": "100",
"amount_min": "5",
"reference_digits": "9",
"ListOfAmount": {
"amount": [
{
"internal_code": "1",
"description": "5 Euros",
"amount": "5"
},
{
"internal_code": "2",
"description": "10 Euros",
"amount": "10"
},
{
"internal_code": "3",
"description": "15 Euros",
"amount": "15"
},
{
"internal_code": "4",
"description": "20 Euros",
"amount": "20"
},
{
"internal_code": "5",
"description": "30 Euros",
"amount": "30"
},
{
"internal_code": "6",
"description": "50 Euros",
"amount": "50"
},
{
"internal_code": "8",
"description": "Outros Montantes",
"amount": ""
}
]
},
"ListOfDetails": {
"details": [
{
"code": "1",
"name": "Contribuinte",
"value": ""
},
{
"code": "2",
"name": "Telemóvel",
"value": ""
}
]
}
}
]
}
}
]
}
},
"returnCode": "0",
"returnMsg": "Sucesso"
}
Gweneric Error messages
Description
List of generic error messages that may occur during the consumption of the APIs.
Errors
Missing variables in Header HttpStatusCode: 400
{
"Message": "Missing one or more variables in the authorization header request.",
"ErrorDate": "2021-01-26T11:21:38.9419034Z",
"ErrorID": "ccc9b2b7df2643a5a975d0f76ff152bb"
}
Incorrect Header Authorization HttpStatusCode: 400
{
"Message": "Incorrect Authorization Scheme.",
"ErrorDate": "2021-01-26T11:25:37.4498494Z",
"ErrorID": "6dc4ea9aff8345348b0c37f0dba29c32"
}
Account not found HttpStatusCode: 401
{
"Message": "No account found. Maybe you are passing a wrong account id.",
"ErrorDate": "2021-01-26T11:28:11.8021361Z",
"ErrorID": "e2a3899c2f1645d4b9d7812a0ae6fc39"
}
Invalid IBAN HttpStatusCode: 401
{
"Message": "Unknown IBAN. The creditor account must be a valid sandbox virtual account.",
"ErrorDate": "2021-01-26T11:29:43.8125923Z",
"ErrorID": "d241dca9ddbd4fad80688fa0e9ae93c4"
}
Payment creditor and debitor equals HttpStatusCode: 401
{
"Message": "The creditor account and the debitor account is the same.",
"ErrorDate": "2021-01-26T11:37:48.56841Z",
"ErrorID": "ee10cf5419a34953b55aaed4631f0215"
}
Invalid Request Json HttpStatusCode: 400
{
"Message": "Missing one or more variables in the body request.",
"ErrorDate": "2021-01-26T11:41:29.9113813Z",
"ErrorID": "5408ee366caf480d975ade8b81a2b5fc"
}
Invalid Token HttpStatusCode: 400
{
"Message": "Invalid Token.",
"ErrorDate": "2021-01-26T11:42:36.0774542Z",
"ErrorID": "cea7ae36186346afb86da30bcfff341e"
}
Invalid Certificate HttpStatusCode: 401
{
"Message": "Certificate error",
"ErrorDate": "2021-01-26T11:43:44.9602376Z",
"ErrorID": "918723fe03c046a5b259fe3a932919f2"
}
Generic Error, please contact the support HttpStatusCode: 417
{
"Message": "We apologize but an unexpected error occured. Please try again later.",
"ErrorDate": "2021-01-26T11:44:52.471263Z",
"ErrorID": "51f4c9dff6084f6dab0cf9d7ab306622"
}
URL not found HttpStatusCode: 400
{
"Message": "URL not found.",
"ErrorDate": "2021-01-26T11:48:32.4858036Z",
"ErrorID": "d6ced1637d8443e38c0730a4dfd05c22"
}
Invalid Request Json HttpStatusCode: 400
{
"Message": "Missing input value",
"ErrorDate": "2021-01-26T11:50:53.0260426Z",
"ErrorID": "bfa03e5a1cc841a4a94d4295536d0a69"
}
Sandbox SMS number invalid HttpStatusCode: 401
{
"Message": "The SMS number is wrong.",
"ErrorDate": "2021-01-26T11:52:33.0950804Z",
"ErrorID": "b120bd1b441d4992acdde7920f6264a2"
}
Invalid amount HttpStatusCode: 401
{
"Message": "Invalid amount.",
"ErrorDate": "2021-01-26T11:55:03.9314232Z",
"ErrorID": "d653bc19dfab47fe903fdd8166d0dc75"
}
Invalid creditor HttpStatusCode: 401
{
"Message": "Invalid creditor.",
"ErrorDate": "2021-01-26T11:56:57.9314065Z",
"ErrorID": "b621168e53db45f9a8e7010f0c710da2"
}
Payment previously sent HttpStatusCode: 401
{
"Message": "This payment bill was sent previously to the sandbox. Type another bill reference or bill entity.",
"ErrorDate": "2021-01-26T11:59:46.2469413Z",
"ErrorID": "3fb3ffe5b4c945cabfbc705f7c86fd23"
}
Payment previously sent HttpStatusCode: 401
{
"Message": "This government bill was sent previously to the sandbox. Type another bill reference.",
"ErrorDate": "2021-01-26T12:00:57.913106Z",
"ErrorID": "07bcdeb26ef746f5947e977bf4c695c4"
}
Pagamento not found HttpStatusCode: 401
{
"Message": "Payment Not Found.",
"ErrorDate": "2021-01-26T12:03:21.875039Z",
"ErrorID": "cf8f519ea35a46eba34c8cbb93f5f84b"
}
Bill already paid HttpStatusCode: 401
{
"Message": "This bill has been paid.",
"ErrorDate": "2021-01-26T12:04:48.4444192Z",
"ErrorID": "945894869aea4c4da060d3d1a2fb15d6"
}
Invalid Json request ID HttpStatusCode: 401
{
"Message": "Id is required",
"ErrorDate": "2021-01-26T12:08:41.9591402Z",
"ErrorID": "37be13b57e6948ad9c0c610ba483fea2"
}
O Acess Token foi cancelado. O mais prov?vel ? um novo Access Token diferente do que foi passado no pedido ter sido criado para o mesmo utilizador. HttpStatusCode: 400
{
"Message": "EGEN003",
"ErrorDate": "2021-01-26T12:08:41.9591402Z",
"ErrorID": "37be13b57e6948ad9c0c610ba483fea2"
}