User Tools

Site Tools


udropship:umarketplace:statements-commissions-payouts

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
udropship:umarketplace:statements-commissions-payouts [2017/07/28 18:27]
wtsergo [Stripe Connect add-on for payments and payouts]
udropship:umarketplace:statements-commissions-payouts [2017/07/28 18:28] (current)
wtsergo [Stripe Connect add-on for payments and payouts]
Line 1: Line 1:
 +====== uMarketplace Statements/​Commissions/​Payouts ======
 +  ​
 +===== Introduction =====
  
 +uMarketPlace Suite manages payments in 2 ways:
 +  * site owner accepts payments from customers once orders are placed then pay vendors using statements
 +  * using PayPal Adaptive option where site owner receives ​ commission and vendor payments are distributed at the point of sale when the order is placed
 +
 +Statement is a financial document (report) that accomodate vendor orders for a period of time calculated according to configuration options.
 +The idea is to include vendor orders that reach configured status in statements.
 +The required statuses can be setup in //​**Configuration > Drop Shipping > Vendor Statements Options > Default Statement on following shipment statuses**//​ \\
 +or for vendor specific in //**vendor edit > Preferences > Statement > Statement on following shipment statuses**//​ \\
 +in later ''​*** Default (global setting)**''​ can be selected, which will instruct the system to use global config option.\\
 +When vendor order reach one of the statuses selected in one of the 2 options, it's marked internally as applicable to be included in statement.
 +Once PO reaches the status then PO marked as ready to be paid, the date is recorded in ''​**Statement Ready At**''​ field and will be used for date from/to filter when statement generated.\\
 +Vendor order, in other words Magento shipment record, is served as PO in bare udropship or if ''​**Advanced PO**''​ add-on is used, separate record ''​**Purchase Order**''​.\\
 +**''​Advanced PO''​** add-on'​s shipment or purchase order are the 2 record payment options, e.g. when paying by shipment there is more precise control to pay only for shipped items. (Purchase Order could be created, but not shipped or shipped only partially), but if vendor sells virtual or downloadable products, it will not be included in shipment records, therefore paying by Purchase Order will be the better option. \\
 +Set global configuration ​ //​**Configuration > Drop Shipping > Vendor Statements Options > Default "​Statement calculation based on"​**//​ to control on which records to pay the vendor. \\
 +The configuration have 2 options ''​**Purchase Order**''​ and ''​**Shipment**''​ , select the option that better fit your workflow or agreement with vendor. \\
 +Per vendor configuration is set in **//vendor edit > Preferences > Statement > Statement calculation based on//**, which also have special **''​*Default (global setting)''​** option. In UDropship Extension, without Advanced PO add-on, payment is done only by shipment.
 +Depending on the selection in one of that preferences 2 multiselects will be available:
 +  * if "​Purchase Order" selected \\
 +//​**Configuration > Drop Shipping > Vendor Statements Options > Default Statement on following PO statuses**//​ \\
 +and per vendor \\
 +**//vendor edit > Preferences > Statement > Statement on following po statuses//​** \\
 +  * if "​Shipment"​ selected aforementioned \\
 +**//​Configuration > Drop Shipping > Vendor Statements Options > Default Statement on following shipment statuses//​** \\
 +and per vendor \\
 +**//vendor edit > Preferences > Statement > Statement on following shipment statuses//​**
 +
 +{{:​udropship:​umarketplace:​global_statement_on_status.png?​direct&​300|}}
 +{{:​udropship:​umarketplace:​vendor_def_statement_on_status.png?​direct&​300|}}
 +{{:​udropship:​umarketplace:​vendor_statement_on_status.png?​direct&​300|}}
 +
 +Almost all configuration options for statements and most of UMarketplace configurations have 2 counterparts:​ global option and per vendor option. If per vendor option have specific value, it will be used for that vendor, but if per vendor option selected to **''​use default''​**,​ global option will be used instead. It will simplify the configuration of the common parts for all vendors.
 +
 +===== How to create statements =====
 +
 +Once basic configurations for which records and status to pay are completed, statements can be created. \\
 +It's quite important to configure everything that relates to statements prior to  accepting customer orders, e.g. if proper statuses on which to pay is not seleced, but POs are already created, which possess applicable status, an indicator will not be seen (date when record is ready) in //**sales > shipments grid > Statement Ready At column**//
 +or in case paying per PO (Advanced PO add-on) in **//sales > dropship > Purchase Orders//**. Records will be included in the statement if status reaches selected one.\\
 +The main condition for PO to be included in statement is it's possession of one of the configured statuses. \\
 +Some configuration will have non-empty **''​Statement Ready At''​** column cells, but the records still not included in statement. The reason might be that in the past it did have configuration status, but no longer does. \\
 +Its practical to take into consideration PO's statuses transition in the workflow and include the one that comes last. In general it's Shipped and Delivered, but might be Canceled too (to cover returns/​refunds).
 +
 +To create statement go to //**sales > dropship > Vendor Statements**//​ and click **''​Generate Statements''​**
 +there  is**''​Vendor Selection''​** selectbox with options:
 +  * **All Active Vendors** - generate for all vendors regardless of selection in next multiselect
 +  * **Selected Vendors** - generate only for vendors, selected in the next multiselect **''​Vendors''​** ​
 +then the date range is setup **''​Orders From Date''​** and **''​Orders To Date''​**. ​
 +By default date range use UTC+00 timezone, to customize it, select "​Yes"​ in **''​Use Locale Timezone''​**.
 +
 +''​**Statement Period**''​ - this can be left empty, if payment is done once a month or only one statement per month is maintained. Otherwise, explicitly set some custom value there, e.g. start/end days for which statement is generated
 +or number of week etc.
 +
 +Here are some notes on how that field used and how **statement_id** generated:
 +value is entered in **''​Statement Period''​** field when create statement prefixed with <​vendor_id>​- \\
 +By default (when this field is empty) udropship generate statement id by following pattern: \\
 +<​vendor_id>​-YYMM or more precisely describing \\
 +<​vendor_id>​-<​statement date year part><​statement date month part> \\
 +for 2011-12-27 statement id will be 2-1112 and 1-1112 by default which already exists (for first 2 vendors).
 +
 +
 +{{:​udropship:​umarketplace:​statements_grid.png?​direct&​300}}
 +{{:​udropship:​umarketplace:​statement_generate.png?​direct&​300}}
 +
 +Once the form is done, generate statements new records will appear in //**sales > dropship > Vendor Statements**//​ grid. \\
 +In grid **''​Actions''​** box massactions can be performed on statements //​refresh//,​ //print// or //send emails// to vendor with statement PDF attached.
 +
 +Custom transactional email can be created in **''​Load default template''​** select **''​Statement Email Template''​**
 +and select it in\\
 +//​**Configuration > Drop Shipping > Vendor Statements Options > Statement Email Template**//​ \\
 +sender identity can be changed in\\
 +//​**Configuration > Drop Shipping > Vendor Statements Options > Statement Email Sender**//
 +
 +{{:​udropship:​umarketplace:​statement_trans_email.png?​direct&​300|}}
 +{{:​udropship:​umarketplace:​statement_trans_email_cfg.png?​direct&​300|}}
 +
 +===== How statements calculated =====
 +
 +There are 2 payment options to vendors: by price or by cost. \\
 +Global option is set in \\
 +//​**Configuration > Drop Shipping > Vendor Statements Options > Default "​Statement subtotal calculation based on"​**//​ \\
 +and per vendor if specific \\
 +//**vendor edit > Preferences > Statement > Statement subtotal calculation based on**// \\
 +When paying by price, the following formula is used, price customer payed minus commissions configured and transaction fee. \\
 +Paying by cost will require to setup costs per product and it will use cost minus commissions configured and transaction fee to pay the vendor . \\
 +In bare udropship, to properly setup costs, product attribute needs to be created with code **''​cost''​** (if not have one) and associate it with existing attribute sets. \\
 +In case Multivendor add-on is used, costs setup in \\
 +//**product edit > Drop Shipping Vendors tab > Cost column**// \\
 +or in \\
 +//**vendor edit > associated products grid > Vendor Cost column**// \\
 +
 +That is a base of configuration. The are also other configuration options that can affect calculation. Here is the list
 +
 +//​**Configuration > Drop Shipping > Vendor Statements Options > Default "​Shipping In Payout"​**//​ \\
 +and per vendor if specific \\
 +//**vendor edit > Preferences > Statement > Shipping In Payout**// \\
 +options are:
 +  * **Include** - vendor PO shipping amount will be added to statement total
 +  * **Exclude but Show** - shipping amount will be shown in statement but not added to total payout
 +  * **Exclude and Hide** - won't be shown in statement and not affect total
 +
 +//​**Configuration > Drop Shipping > Vendor Statements Options > Default "Tax In Payout"​**//​ \\
 +and per vendor if specific \\
 +//**vendor edit > Preferences > Statement > Tax In Payout**// \\
 +same list and meaning as in previos configuration
 +
 +//​**Configuration > Drop Shipping > Vendor Statements Options > Default "​Discount In Payout"​**//​ \\
 +and per vendor if specific \\
 +//**vendor edit > Preferences > Statement > Discount In Payout**// \\
 +same list but meaning is a bit different on how it affect total
 +  * **Include** - reduce total by discount amount
 +
 +//​**Configuration > Drop Shipping > Vendor Statements Options > Default "Apply commission on Tax"​**//​ \\
 +and per vendor if specific \\
 +//**vendor edit > Preferences > Statement > Apply commission on Tax**// \\
 +commission can be applied on tax (if include tax in payout) and total will be reduced by by tax commission. ​
 +Commission on price is calculated on price without tax. To calculate commission on price including tax, select that option to **''​Yes''​** and include tax in statement. ​
 +
 +//​**Configuration > Drop Shipping > Vendor Statements Options > Default "Apply commission on Discount"​**//​ \\
 +and per vendor if specific \\
 +//**vendor edit > Preferences > Statement > Apply commission on Discount**//​ \\
 +it's similar to previous option, but will increase statement total by discount commission.
 +
 +{{:​udropship:​umarketplace:​statement_global_calc_opt.png?​direct&​300|}}
 +{{:​udropship:​umarketplace:​statement_vendor_calc_opt.png?​direct&​300|}}
 +
 +Here is an example:\\
 +Customer bought a product for $100 and got $20 discount. \\
 +Vendor commission is 10%. By default you will pay vendor $90, i.e. $100-$10 commission , but you want to pay based on discounted price you selected to include discount and it will calculate $100 - $10 commission of full price - $20 discount = $70 .\\
 +That might not what you intend if you share discounts with vendors. When you select to **''​apply commission on discount''​** you will pay
 +$100 - $10 commission of full price - $20 discount + $2 discount you cover = $72
 +
 +As seen in the example, commission calculation is always performed on full price (excluding tax and discount), and then included or not tax (increase total), included discount (decrease total) and adjusted tax/​discount by commission (decrease/​increase total accordingly).
 +
 +===== How to setup commissions and transaction fee =====
 +
 +==== Commissions ====
 +
 +By using tier commissions,​ category and then subcategories created. That category is referenced in //​**configuration > drop shiping > Tier Commission > Parent category for tiered categories**//​ and the subcategories of it used for tiers. Rates are setup by subcategory in "​Tiered Rates"​. Product rate depends on category it's assigned to. It's possible to use existing categories.
 +  * **Match Subcategories**=yes - will search for match in subcategories recursively
 +  * **Match Subcategories**=no - will look for exact assignment in one of tiered subcategories
 +
 +When creating special parent category for tiered categories, set it's attribute **''​Include in Navigation Menu''​** to **''​No''​**,​ otherwise customer will see this system category.
 +
 +//​**Configuration > Drop shiping > Tier Commission > Product attribute code for "​Commission percent"​**//​ \\
 +Per product rates will be allowed to be specified. Custom product attribute needs to be created, assigned to attribute sets and it's code referenced in that setting.
 +
 +//​**Configuration > Drop shiping > Tier Commission > Commission fallback lookup method**// \\
 +and per vendor if specific \\
 +//**vendor edit > tier commissions > Commission fallback lookup method**// \\
 +this options will allow you to define how to find product'​s proper commission
 +  * **Vendor First** - per vendor settings will be looked first
 +  * **Tier First** - tier settings will be used as main priority
 +
 +Here are common use cases:\\
 +Product specific rate is always takes priority.
 +There is 3 tiered categories "​Furniture",​ "​Electronics",​ "​Apparel"​. Setup or  not setup rates global section and per vendor section.
 +
 +With **Vendor First** it will first look in product attribute, if empty look in
 +//**vendor edit > tier commissions > Rates**// row with category product assigned too \\
 +if empty look in\\
 +//**vendor edit > tier commissions > Default Commission Percent**// \\
 +then in \\
 +//​**Configuration > Drop shiping > Tier Commission > Tiered Rates**// \\
 +and finally in \\
 +//​**Configuration > Drop shiping > Tier Commission > Default Commission Percent**//
 +
 +with **Tier First** it will switch ​
 +//**vendor edit > tier commissions > Default Commission Percent**// \\
 +with //​**configuration > drop shiping > Tier Commission > Tiered Rates**// \\
 +in fallback lookup chain, i.e. global tier settings will take precedence over vendor default percent.
 +
 +As example, let say we have 3 vendors: vendor1 use specific tiers setup, vendor2 use global tiers, vendor3 10% for all his products. \\
 +In that case we setup tiers globally and change nothing in vendor2 //**Tier Commission**//​ section. \\
 +For vendor1 we setup all tiers in //​**Configuration > Drop shiping > Tier Commission > Tiered Rates**// \\
 +for vendor3 we change ​
 +//**vendor edit > tier commissions > Commission fallback lookup method**// = **Vendor First** \\
 +and set //**vendor edit > tier commissions > Default Commission Percent**// = 10
 +
 +{{:​udropship:​umarketplace:​statement_vendor1_comm.png?​direct&​300|}}
 +{{:​udropship:​umarketplace:​statement_vendor2_comm.png?​direct&​300|}}
 +{{:​udropship:​umarketplace:​statement_vendor3_comm.png?​direct&​300|}}
 +==== Transaction Fee ====
 +
 +The main option, that setup transaction fee calculation process or fixed amount commission/​fee,​ needs to be set in \\
 +//​**configuration > drop shipping > Tier Commission > Fixed Rates Calculation Type**// \\
 +and per vendor \\
 +//**vendor edit > tier commissions > Fixed Rates Calculation Type**// \\
 +  * **Flat (per PO)** - fixed amount you change per PO. \\
 +For each vendor PO, the statement total is reduced by amount set in \\
 +//​**configuration > drop shipping > Tier Commission > Fixed Flat Rate (per po) [old transaction fee]**// \\
 +or per vendor \\
 +//**vendor edit > tier commissions > Fixed Flat Rate (per PO) [old transaction fee]**//
 +
 +  * **Tier (per item)** - fixed amount per item can be charged in addition to commission percent amounts set in the same table as tier commission \\
 +//​**Configuration > Drop shipping > Tier Commission > Tiered Rates**// \\
 +or per vendor \\
 +**vendor edit > tier commissions > Rates** \\
 +Additionally,​ tier table can be set per product fixed amount to use as more priority then tier. Same as for tier commissions,​ create product attribute, associate with attribute sets and reference it's code in \\
 +//​**configuration > drop shipping > Tier Commission > Product attribute code for "Tier Fixed Rate (per item)"​**//​ \\
 +If product have non-empty value in that attribute, it will be used instead of tiered table setup globally or per vendor.
 +
 +  * **Rule Based (per item)** - rule can be set (cart line property) by which to determine proper fixed amount \\
 +//​**configuration > drop shipping > Tier Commission > Rule for Fixed Rates**// \\
 +at the moment there is one option "Item price" and depending on that rule value  fixed amount in table is defined \\
 +//​**configuration > drop shipping > Tier Commission > Rule Based Fixed Rates**// \\
 +or per vendor \\
 +//**vendor edit > tier commissions > Rule Based Fixed Rates**// (in case per vendor **''​Rule for Fixed Rates''​** != **''​* Use Global Config''​**) \\
 +in that table rows are added for each **''​If Up To''​** value of selected rule (again ''​**Item price**''​ at the moment if the only option)
 +once item price match one of the rows **''​Use Value''​** cell used as rule based fixed amount.
 +
 +  * **"​Flat + Rule Based",​ "Flat + Tier", "Flat + Tier + Rule Based"​** - are combination of respective amounts, i.e can charge vendor per PO transaction fee plus some tier fee and/or rule based fee. All values will be accommodated in **''​Transaction Fee''​** column of vendor statement
 +
 +
 +===== Adjustments/​Refunds =====
 +
 +There are 2 options to adjust statements and payouts:
 +  * add comment in special format to Shipment records (or Purchase Order record if Advanced PO add-on is used and pay per PO). \\
 +The format is configured in \\
 +//​**Configuration > Drop Shipping > Vendor Statements Options > Adjustment Comment Trigger Word**// \\
 +Once statement or payout generated, each PO comments will be scanned by the system. Once it finds something like \\
 +''​ADJUSTMENT:​ -120\\
 +Comment here''​ \\
 +or in general \\
 +''<​adjustment trigger word>: <​amount>​\\
 +<​adjustment comment>''​ \\
 +It will take into the account the adjustment in statement or payout and increase/​reduce total.
 +As it stated in the configuration field note, ''//​adjustment trigger word to be used as the first word of PO comment//''​
 +The adjustments can be created in existing statements or once create/​verify payout in "​Adjustment"​ table. Amounts and related comments will be added and visible in statement PDF and increase/​reduce statement/​payout total.
 +
 +The latest version of udropship does supports the refunds. To turn it on, set to "​**''​Yes''​**"​ in\\
 +//​**Configuration > Drop Shipping > Vendor Statements Options > Enable Refunds**// \\
 +The system will automatically try to determine refunded vendor PO items and reduce statement total accordingly. Refunds automatically work with statements only. \\
 +As opposed to POs, refunds included in statement by refund "​created at" date (not status change date of PO). Here is one common scenario: \\
 +customer placed order in May, vendor sent an order in May too, vendor got paid for that PO. Then in June customer returned product and refund is created. There are 2 options to accommodate that (PO status change won't help since vendor was   ​already paid for) \\
 +1) create adjustment in new statement directly, which will reduce vendor'​s further payout ​
 +2) or using refunds enabled, that refund will be included in new statement automatically and reduce total accordingly. \\
 +That might solve the problem when PO paid in one statement, but refunded in next statement.
 +
 +
 +===== Payouts (Payout add-on is required) =====
 +
 +Payouts calculations works similar to statement calculations. In addition ​ automatic payout or payout by schedule can be configured \\
 +//**vendor preferences > Payout > Payout Type**// = **Auto** \\
 +To make instant payout, once PO hit one of **//​Statement on following PO statuses//​** status or if **//Payout PO statuses source//** = **''​Custom''​** is used, once hit one of **//Payout on following po statuses//​** \\
 +The better option is to use same settings as statement. Setup **//Payout Schedule//​** for scheduled payouts and set **//Payout Type//** = **''​Scheduled''​** ​
 +//**Payout Schedule**//​ - use general crontab format.
 +
 +The  payouts it's not automated, except automatic payments to vendor, e.g. when offline method ​ is used. \\
 +The benefit of it its clearly tracks all payments done to vendor and that is reflected in statement total due. Discrepancy can be easily revealed, when partial payments or some adjustments come into play. In case automatic or scheduled payouts are done, by generating a statement that cover date range, the amount paid can be determent. Payouts will be included in statement as final summary financial document or doing final review before payout (maybe adding some adjustments) pay can be done by statement. One statement can be maintained for month and pay vendor weekly. For that option create statement that cover future date (e.g. end of month) and each following week, refresh it and click "save and pay", which will create new Payout record and once the payment is confirmed, click "save and pay" on the new payout page. It will record payout as paid and reduce statement total due.
 +
 +==== Paypal integration in Payout add-on ====
 +
 +PayPal as a payout method is integrated in two ways:
 +  *using MassPay API
 +    * Mass Payments can be made from and to any county, which have sending and receiving PayPal capabilities using currencies supported by PayPal.
 +    * Premier or Business PayPal accounts must be whitelisted for the MassPay API by emailing or calling PayPal support before MassPay calls can be made in the live environment. ​
 +     Here are few links for addtional information:​
 +            * [[https://​developer.paypal.com/​webapps/​developer/​docs/​classic/​mass-pay/​gs_MassPay/​]]
 +            * [[https://​developer.paypal.com/​webapps/​developer/​docs/​classic/​products/​mass-pay/​]]
 +    ​
 +  *using Adaptive Payments API
 +           * The Adaptive Payments API is available in any country where PayPal is accepted.
 +     Here are few links for addtional information:​
 +           * [[https://​developer.paypal.com/​webapps/​developer/​docs/​classic/​adaptive-payments/​gs_AdaptivePayments/​]]
 +           * [[https://​developer.paypal.com/​webapps/​developer/​docs/​classic/​products/​adaptive-payments/​]]
 +    ​
 +Enter Paypal API details in //​**Configuration > Drop Shipping > Payout Paypal Options**//​. It's used in both Mass Pay and Adaptive payments APIs.
 +To enable the vendor to receive PayPal payouts set //**vendor edit > preferences > payout > Payout Method**// either ''​Paypal''​ option or ''​Paypal Adaptive'' ​ option. Vendor PayPal account email should be entered in //**vendor edit > preferences > payout > Paypal Email**//
 +
 +{{:​udropship:​umarketplace:​payout_paypal_global.png?​direct&​300|}}
 +{{:​udropship:​umarketplace:​payout_paypal_vendor.png?​direct&​300|}}
 +
 +==== Paypal Adaptive as Magento payment method ====
 +
 +Paypal Adaptive payments also integrated as Magento payment method. This integration use either chained or parallel payments model [[https://​www.paypalobjects.com/​webstatic/​en_US/​developer/​docs/​pdf/​pp_dev_Datasheet_APC_R3.pdf]]\\
 +To turn on parallel payments set Yes in\\
 +//​**Configuration > Payment Methods > Paypal > Adaptive Payments > Use Parallel Payments**//​
 +
 +To enable the payment method go to //​**Configuration > Payment Methods > Paypal**//. Click **Configure** button in **Adaptive Payments** section, setup API credentials,​ Application ID and other optional parameter. Then Select **Yes** in **Enable this Solution**.
 +
 +Test mode does not require the Application ID, however, it will be need for the live environment [[https://​developer.paypal.com/​webapps/​developer/​docs/​classic/​lifecycle/​goingLive/#​credentials]]
 +
 +To enable the vendor to accept the chained or the parallel payments set //**vendor edit > preferences > payout > Payout Method**// = ''​Paypal Adaptive''​
 +
 +=== Notice for Advanced PO add-on users ===
 +
 +When you have advanced po installed make sure to set //Purchase Orders// in \\
 +//​**Configuration > Drop Shipping > Vendor Statements Options > Default "​Statement calculation based on"​**//​
 +
 +{{:​udropship:​umarketplace:​paypal_adaptive_global.png?​direct&​300|}}
 +
 +==== Stripe Connect add-on for payments and payouts ====
 +
 +We've integrated Stripe Connect service as customer payment method and vendor payout method.
 +
 +1) First of all you need to register your platform. Follow instructions from here 
 +[[https://​stripe.com/​docs/​connect/​quickstart#​register-platform]]
 +
 +2) Then setup API credentials in //​**Configuration > Payment Methods > uMarketplace Stripe Connect**// (platform client id, publishable key and secret key). Once done you are ready to accept customer credit card payments. For that just enable the payment method.
 +
 +3) For vendor payouts we integrated stripe connect transfers. [[https://​stripe.com/​docs/​connect/​charges-transfers]]
 +For that to work you need to change vendor'​s payout method to be stripe in //**vendor edit > preferences > payout > payout method **//
 +
 +4) After vendor payout method set to stripe vendor need to link his account with your stripe platform. He will be prompted after login to vendor portal. We use standard account connection [[https://​stripe.com/​docs/​connect/​standard-accounts]].
 +
 +5) Once vendor connected his stripe account with your platform he is ready to accept payouts.
 +Stripe payouts configuration is same as general payouts configuration. You can either do it manually or configure scheduled payouts or automatic (for each PO separately)
udropship/umarketplace/statements-commissions-payouts.txt · Last modified: 2017/07/28 18:28 by wtsergo