These docs are for v2.1. Click to read the latest docs for v4.1.

Transferência

O recurso Transferência (Transfer) possibilita a movimentação de saldo entre contas PagSeguro.

Através desta API é possível realizar uma movimentação de saldo entre contas PagSeguro.

Para solicitar a transferência, é necessário ter o e-mail ou o account-id da conta destino.

📘

O tempo médio para efetivação de uma transferência é de 1 minuto. Porém, em alguns casos excepcionais, essa efetivação pode chegar a um tempo máximo de 24 horas.

Autenticação

Todas as APIs públicas do PagSeguro requerem autenticação. Através dessa, identificamos e autorizamos o integrador a utilizar nossas APIs e seus recursos, bem como eventuais configurações adicionais.

❗️

As chaves de acesso são confidenciais e recomendamos não compartilhá-las em ambientes públicos ou com terceiros.

Ambiente de Sandbox:

1º passo: Criar uma conta no nosso ambiente de Sandbox
Para criar uma conta no ambiente de Sandbox utilize este link

2º passo: Gerar um Certificado Digital mTLS
Para gerar seu certificado digital, utilize a API de Certificado Digital

O certificado digital mTLS precisará ser gerado toda vez que o certificado atual expirar ou com a frequência que o integrador julgar necessária. Quando um novo certificado é gerado, o antigo não será mais válido. A validade do Certificado Digital é de 2 anos.

❗️

Atenção

Para dar continuidade ao processo é necessário que você tenha esse certificado digital. Qualquer alteração no fluxo desse passo a passo acarretará em um retorno de erro.

3º passo: Criar suas credenciais (Client ID e Client Secret)
Para requisitar seu token do connect você deve obter seu Client_id e Client_secret seguindo o descrito na documentação Criar uma aplicação

4º passo: Gerar chave da conta digital web (token do connect)
Para gerar um token no Connect com escopo de criação e consulta de transferências, você deve acessar esse link

5º passo: Solicitar uma transferência
Clique aqui para acessar a documentação para criação de um POST.

6º passo: Consultar uma transferência solicitada
Existem duas formas para que você consiga consultar as transferências que solicitou:

7º passo: Solicitar homologação e inclusão na allowlist do ambiente de Produção
Para solicitar homologação e inclusão na lista de permissão siga esse link

Ambiente de Produção:

1º passo: Para se integrar no ambiente produtivo é necessário que o 7º passo para integração ao ambiente de sandbox esteja concluído.

2º passo: Gerar um Certificado Digital mTLS
Para gerar seu certificado digital, utilize a API de Certificado Digital

O certificado digital mTLS precisará ser gerado toda vez que o certificado atual expirar ou com a frequência que o integrador julgar necessária. Quando um novo certificado é gerado, o antigo não será mais válido. A validade do Certificado Digital é de 2 anos.

❗️

Atenção

Para dar continuidade ao processo é necessário que você tenha esse certificado digital. Qualquer alteração no fluxo desse passo a passo acarretará em um retorno de erro.

3º passo: Criar suas credenciais (Client ID e Client Secret)
Para requisitar token do connect você deve obter seu Client_id e Client_secret seguindo o descrito na documentação Criar uma aplicação

4º passo: Gerar chave da conta digital web (token do connect)
Para gerar um token no Connect com escopo de criação e consulta de transferências, você deve acessar esse link

5º passo: Solicitar uma transferência
Clique aqui para acessar a documentação para criação de um POST.

6º passo: Consultar uma transferência solicitada
Existem duas formas para que você consiga consultar as transferências que solicitou:

📘

Autenticação

Para garantir a segurança de sua transação, realizaremos a conferência do certificado informado com a chave da conta digital web do cliente. Caso não sejam referentes ao mesmo cliente, a transação não será efetivada e retornaremos o erro 403.

Transações e seus Status

A Máquina de Estado é composta pelos seguintes status:

  1. CREATED: Enviado syncronicamente na resposta da criação da transferência. Indica que a solicitação foi recebida com sucesso;
  2. PROCESSING: Indica que a transação está em andamento;
  3. SUCCESS: Indica que a transação foi concluída com sucesso;
  4. FAILED: Indica que a solicitação foi reprovada pela Pagseguro ou não foi autorizada pelo requisitante ou teve o tempo de autorização ultrapassado.

Tabela de erros

ParâmetroErrorDescrição
amountinvalid_amountInvalid amount format
amountparameter_required_missingField can not be null.
amount.valueparameter_required_emptyField can not be null.
amount.valueamount_too_largeEnter only characters smaller than 20.000.000,00
amount.valueinvalid_amountEnter only numeric characters greater than zero
amount.currencyinvalid_currencyUse a valid value: BRL. Only capital letters.
amount.currencyparameter_required_emptyField can not be null.
descriptioninvalid_string_max_lengthField must have a minimum of 1 and a maximum of 72 characters.
reference_idinvalid_string_max_lengthField must have a minimum of 1 and a maximum of 64 characters.
instrumentparameter_required_missingField can not be null.
instrument.typeparameter_required_emptyField can not be null.
instrument.typetransfer_invalid_typeUse a valid value: P2P.
instrument.p2ptransfer_required_object_p2pField can not be null.
instrument.p2p.emailaccount_not_existsDestination account does not exist
instrument.p2p.account_idaccount_not_existsDestination account does not exist
instrument.p2p.account_idparameter_required_missing"Enter a value for the destination account: ""email"" or ""account_id"""
instrument.p2p.emailaccount_divergentAccount_id value and email value do not represent the same account
instrument.p2p.emailinvalid_emailInvalid email format
x-idempotency-keyidempotency_key_in_useTransfer already exists
notification_urlsinvalid_notification_urlInvalid notification url format
invalid_payload_formatInvalid JSON format
instrument.p2p.emailaccount_inactiveDestination account is inactive
instrument.p2p.account_idaccount_inactiveDestination account is inactive
instrument.p2p.account_idinvalid_idInvalid account_id format
notification_urlsinvalid_notification_urlOnly one URL is accepted.
x-idempotency-keyinvalid_string_max_lengthIdempotencyKey must have at maximum 200 characters and cannot have special characters.
x-idempotency-keyinvalid_string_max_lengthIdempotencyKey must have at maximum 200 characters and cannot have special characters.
-account_blockedDestination account is blocked
-transfer_insufficient_balanceInsufficient balance to transfer
-failedTransfer failed
-transfer_security_rejectedTransfer rejected for security reasons. Contact us for more information.
start_dateinvalid_dateEnter a valid value for the start_date
end_dateinvalid_dateEnter a valid value for the end_date
-invalid_date_periodEnter a valid date period. The end date must be equal to or greater than the start date, and neither date can be in the future
start_dateinvalid_date_formatEnter a valid date format: yyyy-MM-dd
end_dateinvalid_date_formatEnter a valid date format: yyyy-MM-dd
pageinvalid_pageEnter a valid values ​​for page
sizeinvalid_sizeEnter a valid values ​​for size

Cenários Sandbox

Cenárioparametererrordescription
Cenário de Sucesso: envie o amount.value terminando diferente de 10, 11, 12 e 13success
Cenário de e-mail inexistente: utilize o e-mail [email protected]instrument.p2p.emailaccount_not_existsDestination account does not exist
Cenário de account id inexistente: utilize o account_id: ACCO_000instrument.p2p.account_idaccount_not_existsDestination account does not exist
Cenário de contas distintas: envie o email [email protected] e account_id: ACCO_001instrument.p2p.emailaccount_divergentAccount_id value and email value do not represent the same account
Cenário de falha: Envie o amount.value terminado em 11failedTransfer failed
Cenário de conta bloqueada com e-mail: Envie o email: [email protected] e informe um amount.value que termine com 12account_blockedDestination account is blocked
Cenário de conta bloqueada com account_id: Envie o account_id: ACCO_001 e informe um amount.value que termine com 13account_blockedDestination account is blocked
Saldo insuficiente: Envie um amount.value terminando em 10transfer_insufficient_balanceInsufficient balance to transfer