Merchant Interchange Plus Pricing

Note

The Merchant IC+ pricing model can only be applied to merchants based in the United States, processing USD.

Interchange Plus (IC+) is a pricing model for credit card processing, where merchants are billed for processing fees (interchange fees), rather than interchange fees being applied in real time. In addition to interchange fees, processors charge a markup, referred to by the “Plus.” Interchange and markup fees are calculated and billed to merchants at the end of each billing cycle.

IC+ provides the most transparent pricing for your merchants by breaking down the card network processing costs vs. the processor costs of each transaction. A number of data points factor into a given transaction's processing cost, which is what gets tracked and calculated. Rather than approximating processing costs and charging a standard fee across all transactions (as with our out-of-the-box blended rate pricing), Merchant IC+ pricing allows us to track interchange costs per transaction, in addition to our processing fees and your platform fees, and then to compile a billing statement for merchants at the end of each billing cycle.

Use this guide if your signed contract with WePay indicates that your platform has access to the Merchant IC+ feature.

An IC+ pricing model breaks down fees into the following three categories:
  1. Interchange fees from issuing banks
  2. Fees & assessments charged from the card network*
  3. Processor Markup where Markup = X% + Y¢ (a percentage fee and a per transaction fee)

* Some monthly fees may be estimated by us, as those are reported at platform level.

Conversely, a Merchant IC+ pricing model breaks down fees into the following three categories:
  1. Interchange fees from issuing banks
  2. Fees & assessments charged from the network*
  3. Platform Markup where Markup = X% + Y¢(a percentage fee and a per transaction fee)
To implement Merchant IC+, you'll use the pricing API to set the fixed and variable amounts that your platform will charge per transaction. At the end of the billing cycle, your pricing will be added to the merchant's bill in addition to the interchange fees. For instance, your platform may want to charge a higher percentage rate for credit card transactions than for ACH/Echeck transactions, and may want to apply a $0.50 flat rate across both credit card and ACH/Echeck transactions. Setting a fee pricing like this will be outlined in this guide.

Set Up

Before getting started, be sure to subscribe to the following Notifications:

  • billing_statements.created
  • billing_statements.charge_succeeded**
  • billing_statements.charge_failed**
  • adjustments.created
  • recoveries.completed
  • accounts.created *
  • recoveries.created *
  • recoveries.failed *

* Subscribing to these Notification event topics is recommended, but not mandatory for a functional Merchant IC+ integration.

** These Notification Event Topics are currently Limited Availability. Reach out to us if you need access.

The billing statement Notification will give you the Account and the amount details of fees owed, but it does not reflect the actual money movement related to Merchant IC+ to and from an Account. Adjustment and Recovery Notifications will reflect money movement to and from an Account in association with Merchant IC+. To help differentiate a Merchant IC+ related Recovery or Adjustment Notification from other types of Recoveries and Adjustments, you can look at the reason JSON block in Notifications.

To find out more about what getting notified looks like, see the section below on Consume Billing Statements.

Define Merchant IC+ Pricing

This section outlines how to set the markup fees on each transaction.

Your markup fees should be inclusive of our processing fees, which will be debited from your platform Account. For any markup that you define, you'll receive that amount minus our fees. If you choose to have a lower markup than the fees we charge, your Account will be debited to cover the difference.

Use the pricing parameter on the POST /accounts request with the merchant's currency. For merchants using an alternate method of payments such as eCheck, you can define the pricing using the argument payment_bank. Find the supported pricing options that you'd like to implement and specifically examine Merchant IC+ pricing APIs here.
Supported pricing featureAPI
US merchantspricing.currencies.USD
Merchant IC+ feespricing.currencies.USD.credit_card.interchange_plus
ACH feespricing.currencies.USD.payment_bank
Recurring feespricing.currencies.USD.recurring_fee
Other feespricing.currencies.USD.other_fees
Supported credit card feesAPI
Flat transaction fee...transaction.fixed_fee_markup_amount
Percentage transaction fee...transaction.variable_fee_markup_bps
Flat authorization fee...auth.fixed_fee_markup_amount
Refund fee...refund_fee_for_transaction_markup
Dispute fee...chargeback_amount
Supported ACH feesAPI
Fixed transaction fee...standard.fixed_fee_amount
Percentage transaction fee...standard.variable_fee_bps
Maximum transaction fee...standard.max_fee_amount
Minimum transaction fee...standard.min_fee_amount
Refund fee...standard.refund_fee_for_standard
Other supported feesAPI
Billing failure fee...other_fees.debit_failure_fee

The listed features in a json request body would look something like this:

Copy
Copied
{
  "pricing": {
    "currencies": {
      "USD": {
        "credit_card": {
          "type": "interchange_plus",
          "interchange_plus": {
            "transaction": {
              "fixed_fee_markup_amount": 20,
              "variable_fee_markup_bps": 295
            },
            "auth": {
              "fixed_fee_markup_amount": 20
            },
            "refund_fee_for_transaction_markup": true,
			"chargeback_amount": 1500
          }
        },
        "payment_bank": {
          "type": "standard",
          "standard": {
            "fixed_fee_amount": 10,
            "variable_fee_bps": 195,
            "max_fee_amount": 1000,
            "min_fee_amount": 200,
            "refund_fee_for_standard": true
          }
        },
        "recurring_fee": {
          "period": "monthly",
          "amount": 1500
        }
      }
    }
  }
}
Note
Across our Clear APIs, values related to amounts are represented in the lowest denomination (cents). So to represent $2.00, use a value of 200.
Important:
If any errors are made in setting an Account's pricing, they must be corrected using a POST /accounts/{id} request with the correct pricing parameters. Pricing is applied at the end of a billing cycle using the current values for a given merchant, so errors that are corrected within the same billing cycle will not impact merchants.

Process Diagram

PartnerWePay"Create a merchant Account with the pricing JSON blockPOST /notification_preferences""Send an accounts.created NotificationPOST /accounts_callback_uri""Verify the pricing parameter is correct"PartnerWePay

Disclose Merchant IC+ Pricing

Pricing disclosures have two components that merchants must be informed of and agree to: markup rate and passthrough rates.

You must currently provide pricing disclosures to all merchants, even those with access to the WePay Merchant Center. That said, the merchant's current pricing can be viewed in the WePay Merchant Center.

Onboarding Disclosure Requirements

Present merchants with a fee disclosure document as part of onboarding. This step is a legal requirement which must be acknowledged and accepted by merchants on Merchant IC+ pricing.
Pricing TypeCustom Merchant CenterWePay Merchant Center
Markup RatesYou must build the disclosure and collect agreements from merchants with regard to your own markup rates.You must build the disclosure and collect agreements from merchants with regard to your own markup rates.
Passthrough RatesYou must build the disclosure and collect agreements from merchants with regard to passthrough rates. WePay will inform you of the current rates.A disclosure will be presented to merchants before they are granted access to the WePay Merchant Center.
For any disclosures that you must build, follow this guidance. Further detail on each step is provided below.
  1. Ensure all your markup rates and fees are defined in the “Platform Fees” section of the “Merchant IC+ Fee Disclosure Template."
  2. If applicable, include a section on "Interchange Pass-Through" with the rates provided to you by us. The WePay Merchant Center covers this requirement for those merchants who have access to it.
  3. Get merchant acceptance to this pricing document.
  4. Upload this document via API prior to setting the fees for the merchant.
  5. The API response will provide the following:
  • Document ID
  • Document type (Fee Disclosure)
  • Timestamp (Create time for doc upload)

Re-pricing Disclosure Requirements

Re-pricing an existing merchant, or making changes or updates to your platform fees, requires that you present merchants with a new fee disclosure document.
Pricing TypeCustom Merchant CenterWePay Merchant Center
Markup RatesYou must build the disclosure and collect agreements from merchants with regard to any changes in your own markup rates.You must build the disclosure and collect agreements from merchants with regard to any changes in your own markup rates.
Passthrough RatesYou must build the disclosure and collect agreements from merchants with regard to any changes in passthrough rates. We will inform you of any changes.The WePay Merchant Center will not notify merchants of any changes. You must disclose any changes which we inform you of.
The process for disclosing re-pricing Merchant IC+ fees is as follows, and sample implementations can be seen below:
  1. Inform Merchant of Effective Date, a required notice period as minimum time as required by pricing policy or on Merchants' acceptance of new pricing; whichever is earlier.
  2. Ensure all your fees are defined in the “Platform Fees” section of the “Merchant IC+ Fee Disclosure Template.”
  3. Include the "Interchange Pass-Through" section with any updates provided by us.
  4. Display this new pricing document.
  5. Get merchant acceptance to this new document. Note: Acceptance must be collected before any changes to pricing.
  6. Update Merchant Account Object via APIs only if the merchant has accepted the changes
    • Send a POST /accounts/{id} request with updated Pricing parameter
    • Provide proof by uploading the pdf of new pricing document
  7. Provide Merchant Acceptance via API to us. The API response will provide the following:
    • Document ID
    • Document type (Fee Disclosure)
    • Timestamp (Create time for doc upload)

Onboarding and Re-Pricing Requirements:

  • Provide a fee disclosure to all merchants the first time they are onboarding to the Merchant IC+ pricing model
  • Fee disclosure must include all fees that your platform will charge, including non-IC fees (like ACH fees)
  • Fee disclosures must accurately reflect all the platform fees listed below in “Platform Fee” and include all the interchange and assessment fees in the “Pass through Fee” section
  • Provide, collect acceptance of, and upload a new fee disclosure every time any platform fee is updated
  • Provide this resource to merchants so that they can track updates to interchange and assessment fees independently
  • Notify merchants of updates to interchange and assessment fees (your WePay relationship executive will provide quarterly updates to you)
  • Any deviations from the below template require approval from us
Note
Special attention must be given to the Debit Failure Fee (found nested in other fees). You must clearly explain how this fee will be charged, and what it will look like on a merchant's statement (i.e. included with the next month's billing). We recommend providing an example, as shown below.

Example Debit Failure Fee order of events with $25.00 fee:

EventMayJune
Billing statement is readyMerchant Fees For April: $250Merchant Fees For May: $250
Merchant is billed for feesMerchant does not have sufficient fees and billing failsMerchant is billed fees for May + Debit Failure Fee for April ($250 + $25)
Fallback billingWepay will recover $250 fee the next day from merchant's gross payout amount
Debit Failure Fee AppliedWePay will add Debit Failure Fees e.g. $25 for the month of May

Recommended Implementation


Markup Fees

An example of interchange fee disclosure based on WePay's implementation
An example of interchange fee disclosure based on WePay's implementation

The merchant can scroll down on the above page to find passthrough fees

An example of passthrough fee disclosure based on WePay's implementation
An example of passthrough fee disclosure based on WePay's implementation

Fee Disclosure Template

Once agreed to by a merchant, store the agreement as one of the file types listed in the Document Upload guide.
Important
All Merchant IC+ partners (and merchants on Merchant IC+ pricing) are legally obligated to implement our refund policy below, even if refund fees are not being used.

Implement Refund Policy

Implement the below refund policy:

  1. IC+ fees for credit card payments will only be credited back to the merchant if they are credited back by the network
  • Payers will receive a full refund, but the merchant will need to cover fees if the network does not credit them back
  • This varies by network; some do refund their fees while others do not
  1. IC+ fees are not applicable to ACH/eCheck payments, so the entire fee charged will not be credited back to the merchant
  2. Platform markup fees will not be refunded to the merchant
  • Merchants pay the platform markup fees at the end of the billing cycle, discussed here
  • Similarly, our fees debited from the platform do not get credited back to the platform
  1. If a platform charges merchants a fee for refunds, this fee must be disclosed to merchants
  • Refund fees will be applied regardless of the refund amount (full vs. partial)
  1. IC+ fees for credit card payments will be charged to the merchant if they are charged by the network

The following examples will help conceptualize how this policy plays out in real terms with different variables at play.

Example 1

  • Payment method: credit card
  • Refund amount: $100.00 (full)
  • IC+ credit: yes
  • Platform refund fee: none
DescriptionPayment (payer to merchant)Refund (merchant to payer)Refund Notes
Gross$100.00$100.00
Merchant's Net$98.00$100.00Gross refund is debited from merchant and fees are credited as applicable
IC+ Fees$1.50$1.50Credited to merchant: ✓
Total Markup Fee$0.50$0.50Credited to merchant: ✘
Refund FeeNot Applicable

Example 2

  • Payment method: credit card
  • Refund amount: $100.00 (full)
  • IC+ credit: no
  • Platform refund fee: $0.10
DescriptionPayment (payer to merchant)Refund (merchant to payer)Refund Notes
Gross$100.00$100.00
Merchant's Net$98.00
(after billing has been applied)
$100.00Gross refund is debited from the merchant and fees are credited as applicable.
IC+ Fees$1.50$1.50Credited to merchant: ✘
Total Markup Fee$0.50$0.50Credited to merchant: ✘
Refund FeeA $0.10 debit is applied to the merchant's next billing statement.

Example 3

  • Payment method: credit card
  • Refund amount: $40.00 (partial)
  • IC+ credit: no
  • Platform refund fee: $0.10
DescriptionPayment (payer to merchant)Refund (merchant to payer)Refund Notes
Gross$100.00$40.00
Merchant's Net$98.00
(after billing has been applied)
$40.00Gross refund is debited from the merchant and fees are credited as applicable.
IC+ Fees$1.50$1.50Credited to merchant: ✘
Total Markup Fee$0.50$0.50Credited to merchant: ✘
Refund FeeA $0.10 debit is applied to the merchant's next billing statement.

Example 4

  • Payment method: bank account
  • Refund amount: $100.00 (full)
  • IC+ credit: N/A
  • Platform refund fee: $0.10
DescriptionPayment (payer to merchant)Refund (merchant to payer)Refund Notes
Gross$100.00$100.00
Merchant's Net$98.00
(after billing has been applied)
$100.00Gross refund is debited from the merchant and fees are credited as applicable.
IC+ FeesN/AN/ACredited to merchant: N/A
Total Markup Fee$2.00$2.00Credited to merchant: ✘
Refund FeeA $0.10 debit is applied to the merchant's next billing statement.

Upload Fee Disclosures

Use the Document Upload JS with the account_id param and "type": "fee_disclosure". The JS response will provide the document ID.Next, send a POST /accounts/{id} request with the document ID in the documents array. The API response will contain the ID, type, and create time, and will look like this:
Copy
Copied
{
  "name": "Foo Bar Shop",
  "description": "The Foo Bar Shop on 5th ave.",
  "documents": [
    {
      "id": "{id}",
      "type": "fee_disclosure",
      "create_time": 987389472347,
      "resource": "documents",
      "path": "/documents/{id}"
    }
  ]
}

Once a document ID has been added to an account, it cannot be removed. Any subsequent requests with fee disclosure document IDs will append the array, and the most recently added fee disclosure document will be considered the current fee disclosure for that merchant.


Consume Billing Statements

First, we will create a Billing Statement on the 5th of the month following each billing cycle (defined as a calendar month), and will send a Notification when it is ready. A Billing Statement will describe the amount in fees owed by the merchant by providing aggregate information about the merchant's fees over the billing cycle. The aggregate information will be present in the payload block of the billing_statements.created Notification.
Note

Be sure to account for any Delayed Capture payments, especially if the authorization occurs at the end of one month and the capture occurs at the beginning of the next month. When this happens, fees for authorization and capture will be applied separately.

A Billing Statement Notification will look like this:

Copy
Copied
{
	"id": "ccdbd4f6-a409-42b8-abdb-3451ff40501e",
	"resource": "notifications",
	"path": "/notifications/ccdbd4f6-a409-42b8-abdb-3451ff40501e",
	"owner": {
		"id": "121212",
		"resource": "applications",
		"path": null
	},
	"topic": "billing_statements.created",
	"event_time": 1568922341,
	"payload": {
		"resource": "billing_statements",
		"id": "c4a1abf1-34ac-40e8-bdba-5649f0665421",
		"path": "/billing_statements/c4a1abf1-34ac-40e8-bdba-5649f0665421",
		"owner": {
			"resource": "accounts",
			"id": "c4a1abf1-34ac-40e8-bdba-5649f0643043",
			"path": "/accounts/c4a1abf1-34ac-40e8-bdba-5649f0643043"
		},
		"create_time": 1510080177,
		"amount": 2300000,
		"currency": "USD",
		"month": 1,
		"year": 2019,
		"api_version": "3.0"
	}
}
Amount describes the amount owed by the merchant to us for processing fees, and will match the amount in the Adjustment.

Next, fetch the billing statement fee summary and transaction summary by sending GET /billing_statements/{id}/fees_summary & GET /billing_statements/{id}/transactions_summary requests respectively. Use the response data in combination with the billing statement data to compile the billing statement for the merchant.

A GET /billing_statements/{id}/fees_summary response might look something like this:
Copy
Copied
{
  "previous":"/billing_statements/{id}/fees_summary?page=aaabc123def456",
  "next":"/billing_statements/{id}/fees_summary?page=cccde123fgh456",
  "results":[
    {
      "fee_type":"VISA",
      "fee_category":" VISA BUSINESS TIER 3 - STANDARD",
      "currency":"USD",
      "total_amount":56594,
      "item_count":1,
      "variable_fee_bps":295,
      "fixed_fee_amount":20,
      "fixed_fee_markup_amount":0,
      "variable_fee_markup_bps":15,
      "total_interchange_fee":1690,
      "total_markup":8489,
      "total_fees":10179,
      "api_version":"3.0"
    },
    {
      "fee_type":"ECHECK",
      "fee_category":"eCheck fees",
      "currency":"USD",
      "total_amount":20290,
      "item_count":6,
      "variable_fee_bps":null,
      "fixed_fee_amount":null,
      "fixed_fee_markup_amount":0,
      "variable_fee_markup_bps":15,
      "total_markup":5417,
      "total_fees":5417,
      "total_interchange_fee":null,
      "api_version":"3.0"
    },
    {
      "fee_type":"CHARGEBACK",
      "fee_category":"Chargeback fees",
      "currency":"USD",
      "total_amount":20290,
      "item_count":4,
      "variable_fee_bps":0,
      "fixed_fee_amount":1500,
      "fixed_fee_markup_amount":null,
      "variable_fee_markup_bps":null,
      "total_markup":null,
      "total_fees":6000,
      "total_interchange_fee":null,
      "api_version":"3.0"
    },
    {
      "fee_type":"OTHER",
      "fee_category":"MC ACQUIRING FEE",
      "currency":"USD",
      "total_amount":8807781,
      "item_count":49,
      "variable_fee_bps":4,
      "fixed_fee_amount":0,
      "fixed_fee_markup_amount":null,
      "variable_fee_markup_bps":null,
      "total_markup":null,
      "total_fees":352,
      "total_interchange_fee":352,
      "api_version":"3.0"
    },
    {
      "fee_type":"RECURRING FEES",
      "fee_category":"Monthly",
      "currency":"USD",
      "total_amount":null,
      "item_count":null,
      "variable_fee_bps":null,
      "fixed_fee_amount":null,
      "fixed_fee_markup_amount":2500,
      "variable_fee_markup_bps":null,
      "total_markup":2500,
      "total_fees":2500,
      "total_interchange_fee":null,
      "api_version":"3.0"
    },
    {
      "fee_type":"VISA",
      "fee_category":"Auth Fees",
      "currency":"USD",
      "total_amount":null,
      "item_count":100,
      "variable_fee_bps":null,
      "fixed_fee_amount":null,
      "fixed_fee_markup_amount":30,
      "variable_fee_markup_bps":null,
      "total_markup":30,
      "total_fees":30,
      "total_interchange_fee":null,
      "api_version":"3.0"
    },
    {
      "fee_type":"MASTERCARD",
      "fee_category":"Auth Fees",
      "currency":"USD",
      "total_amount":null,
      "item_count":50,
      "variable_fee_bps":null,
      "fixed_fee_amount":null,
      "fixed_fee_markup_amount":30,
      "variable_fee_markup_bps":null,
      "total_markup":1500,
      "total_fees":1500,
      "total_interchange_fee":null,
      "api_version":"3.0"
    }
  ],
  "api_version":"3.0"
}
Note
When an adjustment occurs, there will be two possibilities for the fee_category value:
  • Financial Adjustment - This describes money movement (either credited to or debited from).
  • Reporting Adjustment - This describes an error in money movement reporting (where the money movement itself was correct), and a subsequent Adjustment to correct reporting.

Reporting Adjustments are expected to be rare.

A GET /billing_statements/{id}/transactions_summary response for a merchant who only received payments on the 1st of the month might look something like this:
Copy
Copied
{
  "previous":"/billing_statements/{id}/transactions_summary?page=aaabc123def456",
  "next":"/billing_statements/{id}/transactions_summary?page=cccde123fgh456",
  "results":[
    {
      "year":2019,
      "month":9,
      "day":1,
      "total_amount":511246,
      "currency":"USD",
      "item_count":94,
      "summaries":[
        {
          "fee_type":"AMEX",
          "currency":"USD",
          "total_amount":23658,
          "item_count":5
        },
        {
          "fee_type":"DISCOVER",
          "currency":"USD",
          "total_amount":30934,
          "item_count":7
        },
        {
          "fee_type":"MASTERCARD",
          "currency":"USD",
          "total_amount":54187,
          "item_count":9
        },
        {
          "fee_type":"VISA",
          "currency":"USD",
          "total_amount":402467,
          "item_count":73
        }
      ],
      "api_version":"3.0"
    }
  ],
  "api_version":"3.0"
}

Once a Billing Statement is made available, your platform must compile a statement for merchants and deliver it before we begin processing the charge for fees.

Compile the merchant's statement using data from the Billing Statement, fees summary, and transactions summary. The statement must be compiled and sent to merchants within 24 hours of us sending the billing_statements.created Notification. When your platform sends the statement, include a notice that their Payout Method will be debited for the billing statement amount. When planning this process, provide merchants with sufficient time to review the statement you send them and reach out with any questions or concerns before we debit their Payout Method.

We will debit the merchant's Payout Method 24 hours after the Billing Statement is available.

In our systems, the debit will be an API Recovery. The merchant will be able to view the debit as a single line item on their bank statement. If the Recovery succeeds, then a billing_statements.charge_succeeded Notification will fire.If the Recovery fails, then a billing_statements.charge_failed Notification will fire. Additionally, we will debit for fees from the merchant's gross settlement the following day and apply a $25.00 debit failure fee.

Process Diagram

Payout MethodMerchantPartnerWePay5th of the Month:Send a billing_statements.createdNotificationPOST /billing_statements_callback_uri5th of the Month:Fetch billing statement fee & transaction summaries5th of the Month:Billing statement fee &transaction summariessynchronously returned5th of the Month: Compile billingstatement for merchant, and notify merchant ofupcoming debit.6th of the Month:Attempt to debitmerchant's PayoutMethodPOST /recoveries.created_callback_uri6th of the Month:Notify merchant ofdebit attemptSuccessful debit:Send abilling_statements.charge_succeededNotificationPOST /billing_statements_callback_uriFailed debit:Send abilling_statements.charge_failedNotificationPOST /billing_statements_callback_uriFailed debit:Debit merchant'sWePay Account balancePOST /adjustments.created_callback_uriPayout MethodMerchantPartnerWePay

Bill Merchants

To bill merchants, we will initiate a Recovery from the merchant's active Payout Method for fees owed (the amount value in the Billing Statement). This will occur 24 hours after the Billing Statement was created (so the 6th of the month). If the recovery for fees fails, we will make an Adjustment to the merchant's Account balance to collect the fees owed. Take note that these Recoveries and Adjustments fall outside of the merchant's normal transactions which are included in Billing Statements and reconciliation.

It is recommended to disclose this process to merchants before they begin processing, and again once each Billing Statement is made available.

First, listen for a recoveries.created API Notification, and notify the merchant that a debit from their active Payout Method is currently being processed. Please note that currently, there is no specific reason code to distinguish between a recovery debit vs. processing fees (i.e. Merchant IC+ monthly fees) debit. To identify Merchant IC+ debits from the merchant's Payout Method, match the amount value from the recoveries.created Notification to the amount value from the billing_statements.created Notification.

Next, listen for either the billing_statements.succeeded or the billing_statements.failed API Notification. Recoveries take 2-3 days to complete, which will typically be on the 8th of the month following the Billing Statement in question. If billing succeeded, a receipt or confirmation of successfully paid processing fees should be provided to the merchant.

If billing failed, then we will make an Adjustment to the Account for the amount owed. Notify the merchant that billing failed, and include information from the failure_reason structure explaining why. Let the merchant know that the amount owed will be debited from their current Account balance. If their balance is $0, then future payments will cover the amount owed.

After a recovery failure, listen for the adjustments.created Notification. Specifically note the reason JSON block containing the details identifying the Adjustment as a payment for Merchant IC+ fees.

Once an Adjustment is completed, a receipt or confirmation of successfully paid processing fees should be provided to the merchant.

Process Diagram

PartnerWePaySend a recoveries.created Notification[POST]: /recoveries_callback_uri""Notify the merchantof the pendingrecovery"Failure:Send a recoveries.failed Notification[POST]: /recoveries_callback_uri"_callback_uri""Failure:Notify the merchantof the failedrecovery attempt""Failure:Send an adjustments.completed Notification[POST]: /adjustments_callback_uri""Failure:Send the merchant a confirmation ofsuccessfully paid fees""Success:Send a recoveries.completed Notification[POST]: /recoveries_callback_uri""Success:Send the merchant a confirmation of successfully paid fees"PartnerWePay

Reconcile Data

Many merchants will want a line-by-line breakdown of their fees which can be fetched by sending GET /billing_statements/{id}/transactions_summary and GET /billing_statements/{id}/fees_summary requests. The API response to GET /billing_statements/{id}/transactions_summary contains an array of Transaction Summaries and will look something like this:
Copy
Copied
{
	"previous": "/billing_statements/{id}/transactions_summary?page=aaabc123def456",
	"next": "/billing_statements/{id}/transactions_summary?page=cccde123fgh456",
	"results": [{
				"day": 1,
				"month": 1,
				"year": 2019,
				"total_amount": 672424,
				"currency": "USD",
				"item_count": 100,
				"summaries": [{
					"fee_type": "VISA",
					"currency": "USD",
					"total_amount": 652134,
					"item_count": 9
					}, 
					{
					"fee_type": "ECHECK",
					"currency": "USD",
					"total_amount": 20290,
					"item_count": 6
					}, 
					{...}, 
					{...}
				],
				"api_version": "3.0"
				},
				{"day": 2, ...},
				{"day": 3, ...}
  ]}
Each summary provides details organized by day of the month, fee type, and fee category. Fee types include the different card networks (i.e. Visa, Mastercard, etc.), and the different API Resources (i.e. Disputes (notated as chargebacks), Adjustments, etc). Fee categories drill down further to differentiate fees, and this is where you'll be able to identify recurring fees (set by your platform in the pricing API), and authorization fees (also set by your platform in the pricing API).

The GET /billing_statements/{id}/fees_summary response contains an array of Fees Summaries and will look something like this:
Copy
Copied
{
	"previous": "/billing_statements/{id}/fees_summary?page=aaabc123def456",
	"next": "/billing_statements/{id}/fees_summary?page=cccde123fgh456",
	"results": [{
		"fee_type": "VISA",
		"fee_category": " VISA BUSINESS TIER 3 - STANDARD",
		"currency": "USD",
		"total_amount": 56594,
		"item_count": 1,
		"variable_fee_bps": 295,
		"fixed_fee_amount": 20,
		"variable_fee_markup_bps": 15,
		"fixed_fee_markup_amount": 0,
		"total_interchange_fee": 1690,
		"total_markup": 8489,
		"total_fees": 10179,
		"api_version": "3.0"
	}, {
		"fee_type": "VISA",
		"fee_category": "VISA BUSINESS TIER 4 - STANDARD",
		"currency": "USD",
		"total_amount": 652134,
		"item_count": 9,
		"variable_fee_bps": 295,
		"fixed_fee_amount": 25,
		"variable_fee_markup_bps": 15,
		"fixed_fee_markup_amount": 0,
		"total_interchange_fee": 19463,
		"total_markup": 97820,
		"total_fees": 117823,
		"api_version": "3.0"
	}, {
		"fee_type": "VISA",
		"fee_category": "Auth Fees",
		"currency": "USD",
		"total_amount": 202903,
		"item_count": 4,
		"variable_fee_bps": 265,
		"fixed_fee_amount": 10,
		"variable_fee_markup_bps": 15,
		"fixed_fee_markup_amount": 0,
		"total_interchange_fee": 5417,
		"total_markup": 30435,
		"total_fees": 35852,
		"api_version": "3.0"
	}, {
		"fee_type": "ECHECK",
		"fee_category": "ECHECK FEES",
		"currency": "USD",
		"total_amount": 20290,
		"item_count": 6,
		"variable_fee_bps": null,
		"fixed_fee_amount": null,
		"variable_fee_markup_bps": 15,
		"fixed_fee_markup_amount": 0,
		"total_interchange_fee": null,
		"total_markup": 5417,
		"total_fees": 5417,
		"api_version": "3.0"
	}, {
		"fee_type": "CHARGEBACK",
		"fee_category": "CHARGEBACK FEES",
		"currency": "USD",
		"total_amount": null,
		"item_count": 4,
		"variable_fee_bps": 0,
		"fixed_fee_amount": 1500,
		"variable_fee_markup_bps": null,
		"fixed_fee_markup_amount": null,
		"total_interchange_fee": null,
		"total_markup": null,
		"total_fees": 6000,
		"api_version": "3.0"
	}, {
		"fee_type": "OTHER",
		"fee_category": "MC ACQUIRING FEE",
		"currency": "USD",
		"total_amount": 8807781,
		"item_count": 49,
		"variable_fee_bps": 0.4,
		"fixed_fee_amount": 0,
		"variable_fee_markup_bps": null,
		"fixed_fee_markup_amount": null,
		"total_interchange_fee": 352,
		"total_markup": null,
		"total_fees": 352,
		"api_version": "3.0"
	}, {
	  "fee_type": "RECURRING FEES",
      "fee_category": "Monthly",
      "currency":"USD",   	
      "total_amount": null,
      "item_count": null,
      "variable_fee_bps": null,
      "fixed_fee_amount": null,
      "fixed_fee_markup_amount":2500,
      "variable_fee_markup_bps":null,
      "total_markup": 2500,
      "total_fees": 2500,
      "total_interchange_fee": null,
      "api_version": "3.0"
	},
	{...}
	],
	"api_version": "3.0"
}
The Transaction Summaries and Fees Summaries can be used in conjunction with reporting to provide holistic reconciliation for merchants.

Additionally, you can get a list of specific transactions (Payments, Adjustments, Recoveries, Disputes, etc.) included in the merchant's processing for a given billing cycle. To do so, send a GET request for each resource with the start_time parameter matching the beginning of the billing cycle:
Copy
Copied
curl -X GET -G \
  --url 'https://stage-api.wepay.com/adjustments?create_time_start=1546329600'
  -H 'Accept: application/json'\
  -H 'App-Id: {your_app_id}'\
  -H 'App-Token: {your_app_token}'\
  -H 'Api-Version: 3.0' \
The create_time_start will be the unix timestamp for the 1st of a given month at 0:00:00 UTC.

Process Diagram

PartnerWePaySend a billing_statements.created NotificationPOST /billing_statements_callback_uriFetch the merchant's transactions summary for that billing statementGET /billing_statements/{id}/transactions_summaryFetch the merchant's fees summary for that billing statementGET /billing_statements/{id}/fees_summary*Recommended* Fetch a collection of all transactional resources for an Account in a given billing cycle. GET /{resources}?create_time_start={billing_cycle_start_time}*Recommended* Incorporate Transaction Records and guidelines from WePay's Reporting article into the next step:Compile the data pointscollected above into areport for the merchant.Merchants should be able to use the report toreconcile fees owed againsttheir processingfor thebilling cyclePartnerWePay

Test Merchant IC+

For testing Merchant IC+, we've created the following magic header values for the WePay-Magic-Behavior header key:
EndpointHeader Value
GET /billing_statements/{id}get_billing_statements_id
GET /billing_statements?account_id=account-idget_billing_statements
GET /billing_statements/{id}/transactions_summaryget_billing_statements_id_transactions_summary
GET /billing_statements/{id}/fees_summaryget_billing_statements_id_fees_summary
Find more information in the testing article.

Migrate Merchants To Blended Pricing

A merchant who is currently on Merchant IC+ pricing can move back to standard blended rate pricing. To do so, the following must be completed:

  1. An updated pricing disclosure must be accepted by the merchant
  2. Any fields nested in the pricing structure on the Account resource which have non-null values must be set to null with a POST /accounts/{id} request.
Once step 2 has succeeded, the new pricing will take effect. This means that if a fee_amount value is not provided with any POST /payments requests for that merchant, then your platform will not collect fees. Likewise, if a fee_amount value is provided with any POST /payments request before the merchant is on blended pricing, the request will fail with a 500 HTTP response.