# Reconciliação automática Deixe que a Stripe cuide da reconciliação de caixa para formas de pagamento por transferência de crédito. Se sua integração usar [customer-configured Accounts](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), substitua `Customer` e as referências a eventos nos exemplos de código pelas referências equivalentes da API Accounts v2. Para mais informações, consulte [Representar clientes com objetos Account](https://docs.stripe.com/connect/use-accounts-as-customers.md). > #### Descontinuado > > Este guia documenta a implementação de transferências de crédito pela descontinuada API Sources. Se você tem uma integração com transferências de crédito, deve [migrar para a API Payment Methods](https://docs.stripe.com/payments/payment-methods/transitioning.md). Enviaremos um comunicado por e-mail com mais informações sobre o encerramento do suporte para a API Sources. As empresas costumam usar pagamentos por transferências de crédito para grandes contratos ou ao iniciar relacionamentos comerciais. Os pagamentos por transferência de crédito podem exigir bastante trabalho manual da sua equipe. A Stripe facilita esse processo ao aceitar transferências para pagar faturas em aberto. Para cada um dos seus clientes, a Stripe gera um número de conta virtual dos EUA que pode ser pago em USD com crédito ACH ou transferências bancárias. Quando o cliente vê uma fatura nesta conta bancária virtual, ele pode enviar o pagamento a ela. A Stripe reconcilia automaticamente o pagamento com a conta bancária virtual e a fatura. A Stripe marca a fatura como paga. ### Transferências vs. débitos Um cartão de crédito ou conta bancária cadastrados são formas de pagamento de *débito*. Com uma forma de pagamento de débito, as cobranças são feitas debitando fundos para a Stripe. Por outro lado, pagamentos de *transferências* envolvem o envio de valores para a Stripe. Transferências internacionais e transferências bancárias são exemplos. A reconciliação automática evita que você exponha dados bancários sigilosos aos usuários e precise reconciliar manualmente faturas em aberto com o extrato bancário. Com a reconciliação automática para faturas, a Stripe pode: - Conciliar pagamentos recebidos com valores de faturas. - Gerenciar pagamentos a maior ou a menor, quando o valor pago não corresponder à fatura. - Reduzir o número de chamadas de API necessárias para transferir fundos à Stripe. - Gerenciar novas tentativas de pagamento de faturas em aberto. ## Pagar uma fatura Se um cliente não tiver um subhash [ach_credit_transfer](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-ach_credit_transfer), a Stripe cria um para cada fatura. Todas as faturas incluem instruções de envio do pagamento. Além disso, cada cliente tem um endereço de pagamento único que é compartilhado entre as faturas. Com o subhash `ach_credit_transfer`, os clientes podem transferir fundos pelo sistema ACH dos EUA ou transferência nacional e incluir um número de fatura no campo de observações. > As transferências de crédito ACH só aceitam USD. Assim que o cliente faz uma transferência, a Stripe corresponde o pagamento a uma fatura, conferindo o número da fatura no campo de observações da transferência. Processamos as faturas quando há correspondência. Se não encontrarmos a correspondência, processamos a fatura pendente mais antiga do mesmo valor. Se não encontrarmos nenhuma fatura pendente com o mesmo valor, processaremos o maior número possível de faturas pendentes com o valor da transferência, começando com a fatura pagável mais antiga. Quando uma fatura é processada, ocorre um evento `invoice.paid` (você pode receber esse evento com [webhooks](https://docs.stripe.com/invoicing/integration/workflow-transitions.md)). Confira o status de qualquer transferência de crédito ACH na lista de formas de pagamento do cliente no [Dashboard](https://dashboard.stripe.com/customers). Você também pode ver o status visualizando as fontes de um cliente na API: ```bash curl https://api.stripe.com/v1/customers/cus_9jWC3097MQwYwF/sources \ -u <>: ``` A Stripe retorna uma lista de fontes vinculada a esse cliente. O valor do tipo (`type`) de fonte de transferências de crédito ACH é `ach_credit_transfer`. No exemplo de resposta a seguir, o favorecido da transferência de crédito ACH está aguardando o pagamento do cliente: ```json { "object": "list", "data": [ { "id": "src_19Q3AILlRB0eXbMt81RVDnM9", "object": "source", "amount": null, "client_secret": "src_client_secret_Z0zPIgnR0BVafiMLaJcxI3HS", "created": 1481585102, "currency": "usd", "customer": "cus_9jWC3097MQwYwF", "flow": "receiver", "livemode": false, "metadata": {}, "owner": { "address": null, "email": "jenny.rosen@example.com", "name": null, "phone": null, "verified_address": null, "verified_email": null, "verified_name": null, "verified_phone": null }, "receiver": { "address": "110000000-test_12e2b7d44ea6", "amount_charged": 0, "amount_received": 0, "amount_returned": 0, "refund_attributes_method": "email", "refund_attributes_status": "missing" }, "status": "chargeable", "type": "ach_credit_transfer", "usage": "reusable", "ach_credit_transfer": { "account_number": "test_12e2b7d44ea6", "fingerprint": "3eoX8Ufbxh0oVDim", "routing_number": 110000000 } } ], "has_more": false, "url": "/v1/customers/cus_9jWC3097MQwYwF/sources" } ``` Ocasionalmente, os clientes podem querer pagar com formas de pagamento fora da Stripe, como cheques físicos. Nessas situações, a Stripe também permite que você acompanhe o status de pagamento das suas faturas. Após receber um pagamento de fatura de um cliente fora da Stripe, marque manualmente a fatura como paga: ```curl curl https://api.stripe.com/v1/invoices/in_18jwqyLlRB0eXbMtrUQ97YBw/pay \ -u "<>:" \ -d paid_out_of_band=true ``` ## Gerenciar exceções Se o seu cliente pagar um valor que não corresponda ao valor de nenhuma fatura, os fundos não serão cobrados e permanecerão no objeto `Source​`. Para usar esses fundos para processar sua fatura, você tem algumas opções: - **Pagamento a maior**: se um usuário enviar um valor acima do solicitado na fatura, a Stripe marca automaticamente a fatura como paga, usando o valor da fatura em aberto. O valor restante permanece no receptor `Source`. Você pode aplicar manualmente esses fundos a uma fatura. Se tiver várias faturas em aberto correspondentes, a Stripe aplica os fundos à fatura mais antiga. - **Pagamento a menor**: nas [configurações de assinaturas e e-mails](https://dashboard.stripe.com/settings/billing/automatic), é possível especificar regras para pagamentos a menor na seção **Pagamentos parciais**. Por exemplo, você pode definir que, dentro de uma determinada margem de erro, a Stripe pode fazer a reconciliação automática das faturas e creditar a diferença. Uma situação típica de pagamento a menor acontece quando o banco do cliente deduz parte do total enviado. Por exemplo: se o cliente envia US$ 100 para pagar uma fatura de US$ 100, o banco do cliente pode cobrar US$ 20, deixando você com US$ 80. Se essa diferença (que geralmente não passa de US$ 20) for aceitável, você já pode especificar essa margem, reduzindo o trabalho manual. Para outras exceções: - ​Se o destinatário tiver dinheiro suficiente para pagar sua fatura, você poderá reivindicar esses fundos no Dashboard clicando no botão **Cobrar cliente** na fatura ou chamando o endpoint [Pay invoice](https://docs.stripe.com/api.md#pay_invoice) e especificando o objeto ACH Credit Transfer como a fonte. - Se os fundos para pagar a fatura forem insuficientes e você não perdoar a diferença, peça ao cliente para enviar o valor restante. Outra possibilidade é anular a fatura antiga, abrir uma nova no valor menor e imediatamente clicar em **Cobrar cliente** nela. Se o cliente tiver uma fonte de transferência de crédito ACH com fundos suficientes, ou um cartão de crédito ou conta bancária registrada, é possível usar essas fontes para pagar a fatura chamando o endpoint [Pay invoice](https://docs.stripe.com/api.md#pay_invoice) com a fonte que você deseja usar. ## Reembolsar pagamentos Você pode reembolsar transferências de crédito ACH e pagamentos com cheque pelo [Dashboard](https://dashboard.stripe.com/payments) ou pela [API](https://docs.stripe.com/api.md#create_refund). No entanto, o cliente deve especificar a conta para a qual os fundos serão devolvidos. A Stripe contata automaticamente o cliente pelo endereço de e-mail informado. Assim que o cliente nos fornece os dados da conta, processamos o reembolso automaticamente. O status inicial de um reembolso é `pending`. Se o reembolso falhar, você receberá o evento `refund.failed` e o status do reembolso muda para `failed`. Isso significa que a Stripe não pode processar o reembolso e você precisa devolver os fundos ao cliente fora da Stripe. Isso é raro, mas pode acontecer se a conta reembolsada for bloqueada. Reembolsos concluídos têm status de `succeeded`. ## Pagamento de teste Se estiver em uma *área restrita* (A sandbox is an isolated test environment that allows you to test Stripe functionality in your account without affecting your live integration. Use sandboxes to safely experiment with new features and changes), você pode simular a transferência de dinheiro para o destinatário atualizando o e-mail do proprietário na fonte para `amount_XXXX@any_domain.com`, em que `XXXX` é a quantia de dinheiro que você deseja simular na transferência. O pagamento não será associado à fatura, exceto se a Stripe tiver bloqueado a edição da fatura. Isso ocorre uma hora após a entrega dos *webhooks* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests) ou quando você envia ao cliente um e-mail para a fatura. No Dashboard, você pode enviar imediatamente um e-mail clicando no botão **Enviar fatura** da fatura. ```curl curl https://api.stripe.com/v1/sources/src_19Q3AILlRB0eXbMt81RVDnM9 \ -u "<>:" \ --data-urlencode "owner[email]=amount_1000@example.com" ``` Momentos após a solicitação de atualização, acesse o parâmetro `receiver`: ```curl curl https://api.stripe.com/v1/sources/src_19Q3AILlRB0eXbMt81RVDnM9 \ -u "<>:" ``` Se a solicitação de atualização for bem-sucedida, o atributo `receiver` mostra os fundos: ```json { "object": "list", "data": [ { "id": "src_19Q3AILlRB0eXbMt81RVDnM9", "object": "source", "amount": null, "client_secret": "src_client_secret_Z0zPIgnR0BVafiMLaJcxI3HS", "created": 1481585102, "currency": "usd", "customer": "cus_4fdAW5ftNQow1a", "flow": "receiver", "livemode": false, "metadata": {}, "owner": { "address": null, "email": "amount_1000@test.com", "name": null, "phone": null, "verified_address": null, "verified_email": null, "verified_name": null, "verified_phone": null }, "receiver": { "address": "110000000-test_12e2b7d44ea6", "amount_charged": 1000, "amount_received": 1000, "amount_returned": 0, "refund_attributes_method": "email", "refund_attributes_status": "missing" }, "status": "chargeable", "type": "ach_credit_transfer", "usage": "reusable", "ach_credit_transfer": { "account_number": "test_12e2b7d44ea6", "fingerprint": "3eoX8Ufbxh0oVDim", "routing_number": 110000000 } } ], "has_more": false, "url": "/v1/customers/cus_4fdAW5ftNQow1a/sources" } ``` Neste exemplo, a fatura em aberto do cliente (do mesmo valor) muda para paga. Ele tem um objeto de pagamento correspondente exibindo os detalhes do pagamento.