Skip to main content
Skip table of contents

Daily Fees and Gross Funding

Billing Resource allows partners to differ paying Fees and those automatically being deducted from Disbursements by having a certain set of defined Fees by creating a statement that can be played after a defined period of time.

Billing resource can only be enabled by the API at this time. There is no UI management for Statements. The payment and management of these must be handled by the partner respectively.

Creating a Billing Resource for daily funding

  1. Create a /billings resource. This will determine what fees are collected in a statement for a period of time.
    Entity: Entity that will be collecting the fee at the end of the billing period.
    forEntity: Entity that is paying the fee(s) for the billing period. This field is only required if org or division is set to null.

CODE
 REQUEST:
 POST /billings
 {
	"login": "t1_log_5e052c20b6f1ef38770a410",
	"entity": "t1_ent_5e052c20b7dcdfe6bda8a3a",
	"forentity": "t1_ent_5e9735c503a9888a85fc8e2",
	"schedule": "days",
	"start": "20200409",
	"currency": "USD",
	"inactive": "0",
	"frozen": "0"
}

RESPONSE:
    "response": {
        "data": [
            {
                "id": "t1_bil_5e9797110472c0e9ca747ab",
                "created": "2020-04-15 19:21:53.0183",
                "modified": "2020-04-15 19:21:53.0183",
                "creator": "t1_log_5d498794824b30f9bfc1db2",
                "modifier": "t1_log_5d498794824b30f9bfc1db2",
                "login": "t1_log_5e052c20b6f1ef38770a410",
                "entity": "t1_ent_5e052c20b7dcdfe6bda8a3a",
                "org": null,
                "division": null,
                "partition": null,
                "description": null,
                "schedule": "days",
                "scheduleFactor": 1,
                "start": "20200415",
                "finish": null,
                "collection": "entity",
                "collectionFactor": "days",
                "collectionOffset": 1,
                "collectionIncludeCurrent": "0",
                "currency": "USD",
                "inactive": "0",
                "frozen": "0",
                "forentity": "t1_ent_5e9735c503a9888a85fc8e2"
            }
        ],

The entity defined in the /billings resource needs to be the same charging entity that is in the fee in order for that fee to be included in a statement.

2. Associate a /billingEvents resource to the /billings resource. This defines what will be collected in a statement. A /billingEvents can be setup for fees, chargebacks, returns, and/or profitShares. If the resource is for one specific item then the eventSchedule must be set otherwise the /billingEvents will apply for all items (i.e - All fees opposed to just a specific fee).

By default a /billingEvents resource will have deductFromBalance set to 0/False. Meaning entries will not be created for fees meaning the Available Balance on the entity will not be impacted.

Fees will not be charged or deducted from a disbursement. Disbursements will be only Sales - Returns.

Partners can set deductFromBalance to 1/True if they want entries created on the fees so that the merchant always has enough balance in their FBO to cover the fees.

Will disburse everything in the FBO minus enough to cover the fees so money will be withheld on the merchant account.

A /billingEvents resource can be embedded within the creation of the /billings resource by submitting as an array.

A /billingModifer is an optional configuration for a /billings resource and changes who owns the /billings resource giving them control to change the total amount of the billing and who will pay.

3. When a fee defined within the entity /billingEvents occurs a statementEntry is created.
entity: Is the entity that triggered the statementEntry.

onEntity: Is the entity that will be charged for the statementEntry

forEntity: Is the entity that created the billing resource.

CODE
REQUEST
GET /statementEntries
SEARCH billing[in]=t1_bil_5e9797110472c0e9ca747ab


RESPONSE: 
            {
                "id": "t1_ste_5e98e0f3f3e2852734759b3",
                "created": "2020-04-16 18:49:24.0049",
                "modified": "2020-04-16 18:49:24.0049",
                "creator": "000000000000001",
                "modifier": "000000000000001",
                "onentity": "t1_ent_5e9735c503a9888a85fc8e2",
                "billing": "t1_bil_5e9797110472c0e9ca747ab",
                "statement": null,
                "fee": "t1_fee_5e5d2bd84065a8abce7bc8d",
                "profitShare": null,
                "event": 6,
                "eventId": "t1_txn_5e98e0f3923498772e410f1",
                "description": "AUTH fee schedule",
                "amount": 806.5,
                "deductedFromBalance": 0,
                "entity": "t1_ent_5e9735c503a9888a85fc8e2",
                "forentity": "t1_ent_5e052c20b7dcdfe6bda8a3a"
            },
            {
                "id": "t1_ste_5e98e0f33dbc6eafab9b8c7",
                "created": "2020-04-16 18:49:23.2593",
                "modified": "2020-04-16 18:49:23.2593",
                "creator": "000000000000001",
                "modifier": "000000000000001",
                "onentity": "t1_ent_5e9735c503a9888a85fc8e2",
                "billing": "t1_bil_5e9797110472c0e9ca747ab",
                "statement": null,
                "fee": "t1_fee_5e5d2bd84065a8abce7bc8d",
                "profitShare": null,
                "event": 6,
                "eventId": "t1_txn_5e98e0f2d50760d5b2bca01",
                "description": "AUTH fee schedule",
                "amount": 1026.525,
                "deductedFromBalance": 0,
                "entity": "t1_ent_5e9735c503a9888a85fc8e2",
                "forentity": "t1_ent_5e052c20b7dcdfe6bda8a3a"
            },

Statements are only generated at the end of the billing cycle, statementEntries are created immediately when a fee part of a /billingEvents is created.

4. Depending on the Start of the /billing resource and the schedule the statement is generated.

CODE
        "data": [
            {
                "id": "t1_stm_5e97de96d0ac00c3fe0cf2c",
                "created": "2020-04-16 00:27:02.8583",
                "modified": "2020-04-16 00:27:02.9048",
                "creator": "000000000000001",
                "modifier": "000000000000001",
                "billing": "t1_bil_5e9797110472c0e9ca747ab",
                "status": "pending",
                "totalPaid": 0,
                "total": 5419,
                "currency": "USD",
                "forentity": "t1_ent_5e052c20b7dcdfe6bda8a3a",
                "entity": "t1_ent_5e9735c503a9888a85fc8e2",
                "start": 20200415,
                "finish": 20200415
            }

Paying for a Statement

There are two ways that a statement can be paid for once generated in the API.

  • A Txn can be submitted to pay the statement total. This requires the partner to have a merchant account to accept payment for the statement.

  • A Payout schedule can be created on the billing resource. This will automatically debit the entity for the statement total based on the schedule defined in the payout resource.

Submit a Txn

CODE
{
	"merchant": "t1_mer_5e97363eb964ba05ed8358a",
	"statement": "t1_stm_5e97de96d0ac00c3fe0cf2c",
	"type": "7",
	"origin": "2",
	"payment": {
		"method": "8",
		"number": "xxxxxx3325",
		"routing": "021000021"
	},
	"first": "firstname",
	"expiration": "1122",
	"total": "5419"
}
CODE
        "data": [
            {
                "id": "t1_stm_5e97de96d0ac00c3fe0cf2c",
                "created": "2020-04-16 00:27:02.8583",
                "modified": "2020-04-16 18:55:57.8464",
                "creator": "000000000000001",
                "modifier": "t1_log_5d498794824b30f9bfc1db2",
                "billing": "t1_bil_5e9797110472c0e9ca747ab",
                "status": "processing",
                "totalPaid": 0,
                "total": 5419.925,
                "currency": "USD",
                "forentity": "t1_ent_5e052c20b7dcdfe6bda8a3a",
                "entity": "t1_ent_5e9735c503a9888a85fc8e2",
                "start": 20200415,
                "finish": 20200415
            }

Questions

Question

Answer

What is the behavior if a /billing resource is setup on a merchant entity and on a group the merchant is part of? Will two statements be generated or will one supersede the other?

If multiple billings of the same payer/payee apply for the same event, the order of preference will be:

1. direct to entity (forentity set)
2. via org
3. via division
4. via partition

That said, if there are two separate billings that applied to the same payer/payee by the time statements are generated, there will be two statements generated for whatever applied to each billing.

What is the behavior if a merchant is part of two groups that each have a /billings resource?

The earliest created billingEvent will prevail when creating statementEntries. See above as well.

What are the valid enumerations for collectionFactor and collectionOffset?
        "errors": [             {                 "field": "collectionFactor",                 "code": 15,                 "severity": 2,                 "msg": "This field only accepts values in ()",                 "errorCode": "invalid_enum_value"             },             {                 "field": "collectionOffset",                 "code": 15,                 "severity": 2,                 "msg": "This field only accepts values in ()",                 "errorCode": "invalid_enum_value"             }

In order to be able to set collectionFactor or collectionOffset, it is required to set collection. Currently, only entity collections are supported, so in reality this feature is not yet fully supported.

When a transaction is submitted for a statement does the status change to processing and then paid once the transaction settles?

A statement status will change from processing to paid when the transaction goes into a captured status or the disbursement goes into a processed status.

If a second payment is submitted for a statement that has been marked processing or paid what is the expected behavior?

It appears that a second txn can be submitted to a statement that is in a processing status.

Need to validate behavior for a Paid statement

Should a statement have sub-pennies or should this be rounded up or down?

How do I setup a billingEvents resource for a Chargeback and a Chargeback Fee?

When an event is set to “chargebacks” then the chargeback transaction will be billed daily. To setup the fee then a second event for “fees” would need to be setup or a specific fee ID can be added in the eventSchedule.

What time do /statements generate?

Statements generate around 1AM ET.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.