Brazil Billing Agreement with Installments Overviewanchor

Availability

This feature is only available to merchants domiciled in Brazil.

Consumers using credit cards in Brazil are accustomed to seeing installment options to pay for some or all of the items in their shopping cart. Now, Braintree will support Billing Agreement with Installments in Brazil. Merchants will integrate using the Braintree GraphQL API to offer Pay with PayPal to their customers. Server SDKs will be supported in the future.

Consumer Experienceanchor

  • From the merchant checkout page the consumer clicks the Pay with PayPal button and is directed to Hermes flow where the consumer will set up the billing agreement and be able to select/change their funding instrument.
  • On the backend, merchant server will call PayPal CalculatedFinancingOptions API (through Braintree GraphQL API) to get installment options.
  • Consumer will be redirected back to the merchant checkout page and will see their billing agreement and the option to select installments on the checkout page.
  • Consumer will then be able to Checkout with their billing agreement and a selected installment option.

Checkout with Installmentsanchor

To pay in installments follow the steps below.

1. Calculate Financing Optionsanchor

In order to calculate financing options with paypalFinancingOptions, you'll need a payment method's ID, information about the transaction, the currency code, and the country code.

  1. Graphql
query PayPalFinancingOptions($input: PayPalFinancingOptionsInput!) {
  paypalFinancingOptions(input: $input) {
    financingOptions {
      creditProductIdentifier
      qualifyingFinancingOptions {
        apr
        nominalRate
        term
        intervalDuration
        countryCode
        creditType
        minimumAmount {
          value
          currencyIsoCode
          currencyCode
        }
        monthlyInterestRate
        periodicPayment {
          value
          currencyIsoCode
          currencyCode
        }
        monthlyPayment {
          value
          currencyIsoCode
          currencyCode
        }
        discountAmount {
          value
          currencyIsoCode
          currencyCode
        }
        discountPercentage
        totalInterest {
          value
          currencyIsoCode
          currencyCode
        }
        totalCost {
          value
          currencyIsoCode
          currencyCode
        }
        paypalSubsidized
      }
    }
  }
}
  1. Variables
{
  "input": {
    "paymentMethodId": "vaulted_payment_method_id",
    "amount": {
      "value": "10.00",
      "currencyCode": "BRL"
    },
    "countryCode": "BR"
  }
}
  1. Response
{
  "paypalFinancingOptions" : {
    "financingOptions" : [
      {
        "creditProductIdentifier" : "CREDIT_CARD_INSTALLMENTS_BR",
        "qualifyingFinancingOptions" : [
          {
            "apr" : "10",
            "nominalRate" : "15.5",
            "term" : 1,
            "intervalDuration" : "P1M",
            "countryCode" : "BR",
            "creditType" : "INSTALLMENT",
            "minimumAmount" : {
              "value" : "10.00",
              "currencyIsoCode" : "BRL",
              "currencyCode" : "BRL"
            },
            "monthlyInterestRate" : "10.00",
            "periodicPayment" : {
              "value" : "10.00",
              "currencyIsoCode" : "BRL",
              "currencyCode" : "BRL"
            },
            "monthlyPayment" : {
              "value" : "10.00",
              "currencyIsoCode" : "BRL",
              "currencyCode" : "BRL"
            },
            "discountAmount" : {
              "value" : "25.50",
              "currencyIsoCode" : "BRL",
              "currencyCode" : "BRL"
            },
            "discountPercentage" : "10",
            "totalInterest" : {
              "value" : "10.00",
              "currencyIsoCode" : "BRL",
              "currencyCode" : "BRL"
            },
            "totalCost" : {
              "value" : "10.00",
              "currencyIsoCode" : "BRL",
              "currencyCode" : "BRL"
            },
            "paypalSubsidized" : false
          }
        ]
      }
    ]
  }
}

2. Charge PayPal Account with Selected Financing Optionanchor

In order to charge a PayPal account with chargePayPalAccount, you'll need the payment method's ID, information about the transaction you'd like to create using it, and a financing option.

  1. Mutation
mutation ChargePayPalAccount($input: ChargePayPalAccountInput!) {
  chargePayPalAccount(input: $input) {
    transaction {
      status
      paymentMethodSnapshot {
        __typename
        ... on PayPalTransactionDetails {
          selectedFinancingOption {
            term
            monthlyPayment {
              value
              currencyIsoCode
              currencyCode
            }
            discountPercentage
            discountAmount {
              value
              currencyIsoCode
              currencyCode
            }
          }
        }
      }
    }
  }
}
  1. Variables
{
  "input": {
    "paymentMethodId": "vaulted_payment_method_id",
    "transaction": {
      "amount": "120.00"
    },
    "options": {
      "selectedFinancingOption": {
        "term": 6,
        "currencyCode": "BRL",
        "monthlyPayment": "20.00",
        "discountPercentage": "4.59",
        "discountAmount": "5.00"
      }
    }
  }
}

Responseanchor

A successful charge results in a transaction with the SETTLING, SUBMITTED_FOR_SETTLEMENT, or SETTLED state.

  1. Response
{
  "chargePayPalAccount" : {
    "transaction" : {
      "status" : "SETTLING",
      "paymentMethodSnapshot" : {
        "__typename" : "PayPalTransactionDetails",
        "selectedFinancingOption" : {
          "term" : 6,
          "monthlyPayment" : {
            "value" : "20.00",
            "currencyIsoCode" : "BRL",
            "currencyCode" : "BRL"
          },
          "discountPercentage" : "4.59",
          "discountAmount" : {
            "value" : "5.00",
            "currencyIsoCode" : "BRL",
            "currencyCode" : "BRL"
          }
        }
      }
    }
  }
}