Bill Pay Integration Guide

DOCS

Last updated: Jun 9th, 1:30pm

Know before you code

  • You must be an approved partner to use this feature.
  • Billers are the Merchant of Record (MOR) on all transactions.
  • Be sure you know your level of data for credit card processing.
  • Venmo testing is limited in the sandbox.

Onboard billers to your platform

To onboard billers to your platform, use the PayPal intake data dictionary. See the sample file for more information.

The onboarding process returns a merchant account ID for each biller. Each transaction must reference the correct merchant account ID for each biller in the transactionInput.

For more information about onboarding, refer to the onboarding guide.

Store your biller's bank account in the vault

You may need to pull funds from a biller's bank account to collect fees due to you or to recoup funds for gross settlement billers. To do so, you need to vault your biller's bank account information. You can use this vaulted bank information to debit a biller through ACH.

Go to ACH Direct Debit Overview to set up vaulting for your biller's bank account.

Set up payment processing

Follow this flow to set up payment processing:

  1. Use the Braintree GraphQL to set up your system to make API calls.
  2. Get a client token.
  3. Set up client-side integrations and GraphQL API mutations for each payment type that your platform supports using the guides in Set up payment integrations.

Payment and fee models

You can set up payment processing with the following convenience fee models:

Fee Model 1: Absorbed Fee Fee Model 2: Convenience Fee in a Split Transaction Fee Model 3: Convenience Fee in Separate Transactions
absorbed,fee convenience,fee,in,one,transaction convenience,fee,in,separate,transaction
Absorb the fee into the total of a single transaction and collect the fee from the biller through another means. Recommended Present the fee in a single transaction as a separate line item. The bill settles to the biller account, and the fee settles to your account. Present two transactions to the consumer: a bill transaction and a fee transaction. The bill transaction moves from the consumer to the biller. The second transaction moves from the consumer to you for the fee amount.

Set up payment integrations

Use Braintree to set up payment integrations for the payment types your platform supports.

To integrate the branded solution, set up the following:

To integrate the full-stack solution, set up the following:

PayPal

  1. Set up your client-side PayPal integration.
  2. Set up your server-side integration using the chargePayPalAccount mutation.
  3. Set up your integration to include the vault feature.

Venmo

  1. Set up your client-side Venmo integration.
  2. Set up your server-side integration using the chargeVenmoAccount mutation.

Credit and debit cards

  1. Set up your client-side credit and debit card integration.
  2. Set up your server-side integration using the chargePaymentMethod mutation.
  3. Verify that your credit card integration uses the required fields for your level of processing as follows.

For Level 2 data, set the following:

For Level 3 data, set the following:

Direct debit (ACH)

  1. Set up your client-side direct debit (ACH) integration.
  2. Set up your server-side integration using the chargeUsBankAccount mutation.
  3. Set up descriptions as follows.

Dynamic descriptors set at the time of transaction are not supported for direct debit transactions. The way banks choose to display soft descriptors varies. Use the following fields to set up descriptions:

Field Character limit Description Instructions Example
Company name 16 Use this descriptor to show the biller name (the company that the payment is processed for). Set up this field at the time of biller onboarding using NACHA.CompanyName. My Telephone Co
Soft descriptor 15 Use this descriptor to add extra detail, such as an account number, to the customer's statement. How banks process information varies, so this information is not guaranteed to appear on the customer's statement. Set this description at the time of intake using NACHA.SoftDescriptor. 867-5309
Tax 10 Use this field as a short description for the type of bill payment. Set this field at the time of intake using Nacha.Entry. If the MAID accepts more than one type of payment, use "billpay" as a generic entry code value. phone bill or billpay

Digital wallets

  1. Set up your client-side integration for Apple Pay.
  2. Set up your client-side integration for Google Pay.
  3. Set up your server-side integration using the chargePaymentMethod mutation.

Set up payouts and ledger management

To send funds to your billers, set up payouts with HyperWallet.

You can make payments to your biller's bank account by uploading two request files to your SFTP folder. Each day, one federal wires request file and one ACH transactions request file is made for all your billers. Any files uploaded to the folder must follow the proper naming convention.

Handle reversals and disputes

  1. Set up reversals with the ReverseTransaction mutation.
  2. Set up refunds with the RefundTransaction mutation.

Timelines for reversals (voids and refunds)

ACH transactions

Voids cancel transactions and prevent money from being sent to the ACH network. This ensures that a placed transaction can be reversed without money movement.

Refunds are when the money is processed through ACH like any other transaction. This takes 1-3 days to settle.

The extended ACH voids enhancement maximizes the void window so that transactions remain voidable.

Void timings

For a transaction before 9:15 p.m. ET:

  • Voidable: Until 9:15pm ET same day
    • You can void transactions that have status of Authorized or Submitted for settlement
  • Not voidable or refundable: Between 9:15 p.m. ET same day and 12:00 a.m. ET next business day
    • Transaction will move to Settlement pending state at 10:00 p.m. ET same day
  • Refundable: Transaction will move to a Settled state after 12:00 a.m. ET next business day
    • You can refund a transaction that has status of Settled

For a transaction between 9:15 p.m. and 9:45 p.m. ET:

  • Not voidable nor refundable: Between 9:15 p.m. ET and 12:00 a.m. ET next business day
    • Transaction will move to Settlement pending state at 10:00 p.m. ET any day
  • Refundable: Transaction will move to a Settled state after 12:00 a.m. ET next business day
    • You can refund a transaction that has status of Settled

For transactions on any day after 9:45pm ET:

  • Voidable: All transactions created after 9:45 p.m. ET are voidable till the following day at 9:15 p.m. ET  the following day
    • You can void transactions that have a status ofAuthorized or Submitted for settlement
  • Not voidable or refundable: Transaction will move to Settlement pendingstate at 10:00 p.m. ET the following day
  • Refundable: Transaction will move to Settled state after 12:00 a.m. ET next business day
    • You can refund a transaction that has status of Settled

NOTE: You can not void or refund a transaction in Settlement pending state

You can manage disputes with the API.

To get notifications about money-moving disputes, subscribe to the dispute webhooks and the transaction webhooks.