BPAY® is an easy and secure way to manage bills with one payment method all through your online or mobile banking. Customers can choose which account to pay bills from, and schedule payments on a date that works for you, so long as you have funds available in your account on the scheduled date.

BPay Biller: A business setup with a BPAY Biller Code (registered via their bank) to allow receipt of payments to their bank account from their customers. CRN (Customer Reference Number) generated for customers to track payment of specific bill payments.

How BPAY works?


📘

The platform does not support creating BPAY Billers. It allows you to add your existing biller to your account for lookup and use the biller details for future payments.

APIs

Create BPAY Biller for Account ID

  • This endpoint is used to store BPAY details against an account (Just like contacts), allowing you to look up and use these details for future payments.
  • You can provide the same Biller code more than once however cannot assign the same reference or nickname as other saved billers

📘

We use Look Who's Charging to enrich the biller details such as logo image, long name.

  • Validation rules:
    • billerCode can have leading zeros
    • Throw error if active biller is not found for that biller code
    • name must not match an existing record with same nickname
    • If the request is validated the associated details supplied in the response should be captured and held against the details provided by the customer, including: Short name, Long name, Biller ANZSIC code

API Reference: Create BPAY Biller for Account


BPAY billers for account

  • This endpoint is to retrieve biller details that are belongs to the account

API Reference: BPAY Biller for Account


Initiate BPAY payment

  • This endpoint allow to submit payment Instructions for biller code and CRN.
  • Validation rules:
    • The platform will check the BPAY_DAILY_LIMIT account limits before initiating the payment. If the daily limit is breached e.g., if the BPAY limit is $100 and the user attempts to send a BPAY transaction of $101, the platform will reject the transaction.
    • The amount field cannot be zero and must not exceed the available balance in the account. Additionally, the amount must exactly match the expected amount due.

📘

Notes

  • The platform sends payment requests to Cuscal to process payments via BPAY. The platform uses two submission windows each business day, at 1 PM and 5 PM AEST/AEDT. Payments submitted on non-business days will be processed on the following business day
  • There is no restriction on the number of transactions that can be instructed.
  • Payment files will be returned at approximately 2:45pm and 6:15pm AEST/AEDT each business day for any PDF files submitted in the period prior to the associated cutoff. This will instruct the result of transactions.
  • If the rejection contains any error codes against a transaction within the range of 100 - 199. This means there has been an issue with the transaction itself which may or may not be related to customer input. Due to the upfront validations this should be a rare occurrence.

API Reference: Initiate BPAY payment


Validate BPAY details

  • This endpoint allows to validate the biller code and reference field length.
  • Call to Validate BPAY Payment may return validation against specific billers having minimum, maximum or specific values they will allow

API Reference: Validate BPAY


Retrieve BPAY Biller

  • This endpoint allow to retrieve the details of a BPAY Biller based on the Biller Code.
  • We use Look Who's Charging to enrich the logo in the App. We can reliably use the SearchAPI to lookup a merchant by the biller code

API Reference: Retrieve BPAY Biller


Update BPAY Biller

  • This endpoint allow to submit payment Instructions for biller code and CRN.

API Reference: Update BPAY Biller


Webhook Notification

BPAY_TRANSFER_OUT

  • The transactionType: BPAY_TRANSFER_OUT is a part of type: TRANSACTION event
{
  "customerHayId": "63d24ae0-d497-485e-800a-ad141542d23r",
  "idempotencyKey": "f2f7076f-6fb1-46e1-9730-369a86f3234e",
  "type": "TRANSACTION",
  "productId": "8aa68646-77a4-8411-0177-a4dabc5d03d1",
  "transactionEvent": {
    "transactionHayId": "d3daec8e-6044-4c60-b233-ad141542d23r",
    "accountHayId": "150960b2-d042-4b63-abaa-ad141542d23r",
    "currencyAmount": {
      "currency": "AUD",
      "amount": -20.00
    },
    "updatedBalance": {
      "currency": "AUD",
      "amount": 151087.66
    },
    "isPending": false,
    "counterpartName": "TestGQL",
    "outcome": "ACCEPTED",
    "transactionTimeUtc": "2024-06-21T03:03:16.354179Z",
    "isAtmTransaction": false,
    "transactionType": "BPAY_TRANSFER_OUT",
    "accountBalances": {
      "totalBalance": {
        "currency": "AUD",
        "amount": 151087.66
      },
      "heldBalance": {
        "currency": "AUD",
        "amount": 0
      },
      "lockedBalance": {
        "currency": "AUD",
        "amount": 0
      },
      "stacksBalance": {
        "currency": "AUD",
        "amount": 0
      },
      "availableBalance": {
        "currency": "AUD",
        "amount": 151087.66
      }
    },
    "customerHayId": "63d24ae0-d497-485e-800a-ad141542d23r",
    "counterpartDetails": {
      "name": "TestGQL",
      "bpayDetails": {
        "billerCode": "93880",
        "billerReference": "271682361223",
        "billerName": "iiNet",
        "billerImage": "https://images.lookwhoscharging.com/8d9595b6-812e-4e32-8a58-fedbe856b2f2/iinet-ci-image.png"
      }
    },
    "category": "Category",
    "description": "test BPAY TRANSFER BA AU PAYEE"
  }
}

How to test in Staging?

  • For the smooth integration, we have implemented mock with dummy data on Staging env to test BPAY end to end.
  • Few key points:
    • The data used in the mock is for testing purposes only. The details in Production may vary. For example, biller codes and CRNs included in this guide are samples only.
    • When a request payload sent does not match with the test data provided in this guide, error message will be returned specific to the Staging environment.
    • Response times in the Staging do not reflect Production environment response times.
  • Below are the Active and Deactivated Biller Code mock data available on the Staging.

Active Billers

Biller Code 7773

  • Industry Code: 1113 - Cured Meat and Smallgoods Manufacturing
  • Long Name: APIBCD SERVICES AV1
  • Valid CRN Lengths: 8
  • Variable CRN Indicator: N
  • Valid CRNs: 74177361 / 23915754 / 48165831 / 12914552 / 14525281
  • Check digit rule: MOD10V01
  • Payment Methods Accepted: Debit
  • Lower Limit: $20.00
  • Upper Limit: $50,000.00

Biller Code 93849

  • Industry Code: 6931 - Legal Services
  • Long Name: APIBCD SERVICES AV8
  • Valid CRN Lengths:7, 9, 10
  • Variable CRN Indicator: N
  • Valid CRNs: 7231016
  • Check digit rule: MOD11V09
  • Payment Methods Accepted: Debit
  • Lower Limit: $10.00
  • Upper Limit: $20,000.00

Biller Code 93880

  • Industry Code: 94540 - Religious Services
  • Long Name: APIBCD SERVICES AV12
  • Valid CRN Lengths:12
  • Variable CRN Indicator: N
  • Valid CRNs: 271682361214 / 781133471230 / 351118227898 / 859167654564 / 637933921214
  • Check digit rule: MOD10V01
  • Payment Methods Accepted: Debit
  • Lower Limit: $10.00
  • Upper Limit: $4,000.00

Biller Code 600015

  • Industry Code: 3501 - Car Wholesaling
  • Long Name: API2 SERVICES ICRN AMT
  • Valid CRN Lengths:4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20
  • Variable CRN Indicator: Y
  • Valid CRNs: 0808812345678260
  • Check digit rule: ICRNAMT
  • Payment Methods Accepted: Debit
  • Amount Exact only - $104.00

Deactivated Billers

Biller Code 1016

  • Industry Code: 3501 - Car Wholesaling
  • Long Name: BILLER LONG NAME 505529
  • Valid CRN Lengths:10
  • Variable CRN Indicator: N
  • Valid CRNs: 42741454
  • Check digit rule: MOD10V01
  • Payment Methods Accepted: NONE (Inactive Biller)
  • Amount N/A