Setting up your platform

Payvision accepts companies and legal entities (single owner businesses) as Recipients. All sellers on your platform are managed within the Recipient Database. Here’s a step-by-step look at setting up SlicePay:

  1. Create your Recipients (which represent sellers or suppliers)
  2. Create bank accounts and assign them to each Recipient
    a. Bank account webhooks (allowing you to be updated when a bank account has been verified by our KYC process)
  3. Setting up the platform
  4. Slicing (splitting the funds between you, the platform owner, and the sellers)
    a. You can slice transactions from the Paymentgroup and ReturnGroups, which represent the credits and debits, respectively.
    c. Create Slicegroups, which represent a single order, that can be assigned any amount of debits or credits
    d. Slicing to recipients and the platform allows you to divide the funds between yourself and the sellers
    e. Payouts allow you to move the funds from our Trust account to the respective bank accounts linked to your platform's sellers and suppliers
  5. Reconciliation through the API regarding mutations done per order or for each recipient can be achieved with their respective ledgers:
    a. SlicegroupLedger shows all mutations done on the Slicegroup, the order (debits and credits)
    b. RecipientLedger shows all mutations done on the Recipient's virtual account (for examples, their earnings or fees that have been deducted by you, the platform owner)

Onboarding

SlicePay – The onboarding process:

Creating a Recipient

You can use our POST Recipients call to add new recipients to your platform within seconds:

https://stagslicepay.acehubpaymentservices.com/gateway/v1/recipients

{
  "header" : {
    "businessId" : "{businessId}"
  },
  "body" : {
    "recipientCode": "CGZNUFPGEEPQBAZXHFRR",
    "name": "ShoeShop Inc.",
    "city": "Madrid",
    "countryCode": "ES"
  }
}

📘

As we’re giving you control over incoming earnings from your recipients, including any fees your platform requires, we’ll ask you to create a Recipient dedicated to your own business first. You can then determine the frequency at which you intend to pay yourself out with your earnings.
You can also choose to maintain a virtual balance of PlatformSlices within our trust account, in case you ever want to provide your Recipients with funding, discounts or cashbacks (see Coupons) or other types of compensation. See PlatformSlice for more information.

A Recipient that has been successfully onboarded can immediately start receiving payouts. Recipients can also build up a balance within their individual virtual accounts (jump ahead to 3.0 Slicing for more information).

Use the GET recipients list call to get a full overview of the assigned recipients in your account, or the GET Recipients/{id} to get the details of individual recipients.
To ensure you can pay Recipients in an external bank account, you’ll need to create a BankAccount which you then assign to the RecipientID.

Creating a bank account

To pay Recipients in external bank accounts, create a BankAccount that is assigned to the Recipient ID:

https://stagslicepay.acehubpaymentservices.com/gateway/v1/recipients/{recipientId}/accounts

{
  "header" : {
    "businessId" : "{businessId}"
  },
  "body": {
    "currencyCode": "EUR",
    "accountCode": "ZAQ12WSXCDE34RFVBGT5",
    "bank": {
      "iban": "NL91PAY0417164300",
      "bic": "PAYNL2RXXX",
      "name": "Pay Test Bank",
      "city": "Amsterdam",
      "countryCode": "NL",
      "accountHolderName": "John Doe",
      "accountHolderBirthDate": "1970-05-01",
      "accountHolderNationality": "NL"
    }
  }
}

A bank account is specific to a currency. All balances will be shown separately per currency in the Recipient’s balance, and you can choose to pay out each balance separately or flush all of the Recipient’s balances to their respective bank accounts if they have been activated.

Bank account status

Creating a bank account will automatically trigger the KYC process for Recipients, as this indicates you intend to start making payments to them. You can choose to create a bank account at the same time you create any Recipients, but it is not required – once a Recipient exists in SlicePay you can start slicing funds to their virtual account, and they can start using your platform to sell.

Once created, bank accounts will show a ‘Pending’ status, indicating the Recipient is being reviewed by Payvision’s automated KYC process.

📘

Payvision may agree to use your KYC process if it’s deemed compliant with anti-money laundering (AML) regulations and the Dutch National Bank. If you have a KYC process in place, contact your account manager to discuss your options.

A Recipient's bank account can have any one of the following statuses assigned to it:

Once the status has been updated you can receive a webhook to understand if the respective bank account is active (or blocked), so you can inform your platform’s users. Contact Payvision's tech support to have a webhook address configured for activated bank accounts.

Setting up your platform in Slicepay

Within SlicePay, “the platform” refers to your online business system. Each Recipient should be set up individually within your platform. The platform can attach multiple bank accounts to each Recipient, for multiple currencies.If the platform has multiple entities that need to receive payments, create separate Recipients with respective bank accounts.

Slicing - moving the funds

SlicePay - FlowSlicePay - Flow

SlicePay - Flow

Components

Here’s a list of components you’ll come across when using SlicePay, and what they mean:

Component

Description

PaymentGroup

Includes all processed payments in a list format

ReturnGroup

Includes all processed debits, including refunds and chargebacks

SliceGroup

Represents an order, including all its corresponding incoming payments and returns. You can pay out from this SliceGroup towards the platform account or to Recipients, for example sellers or suppliers whose products or services are represented within the SliceGroup

Recipient (+ balance)

Refers to the recipient of a “Slice”; this represents the balance a supplier or seller has on your marketplace

Slice + PlatformSlice

Slice is the fee that is intended for a seller or supplier on the platform, while PlatformSlice is a fee you collect for owning the platform

Payout

The actual remittance towards an external bank account

PlatformAccount

Refers to the virtual balance of platform slices. This can be maintained to fund recipients or SliceGroups, or provide coupons and discounts. Otherwise, you can slice to a recipient intended to represent the platform, and subsequently perform a payout to an external bank account

Coupon

A coupon instructs the system to debit the platform account and credit a SliceGroup for a certain amount.

Kickback fee

A kickback fee instructs the system to debit the platform account and credit the Recipient for a certain amount.

PaymentGroups and ReturnGroups

Once processed, all transactions will appear in the PaymentGroup. All chargebacks, refunds and credit transfers, once processed, will appear in ReturnGroup.

SliceGroups

Each Slicegroup represents the balance of an order in its entirety. For example, a holiday trip could include payments for flights, hotel, transport, but also one chargeback and one refund because of a complaint. You can create a SliceGroup using the following POST call:

https://stagslicepay.acehubpaymentservices.com/gateway/v1/slicegroups

{
  "header" : {
    "businessId" : "{businessId}"
  },
  "body": {
    "trackingCode": "CB355E98-FE70-4BE9-A38C-64A8808EEBEC",
    "currencyCode": "EUR",
    "fundingAmount": 150    
  }
}

Easily add transactions from a PaymentGroup or ReturnGroup to their respective orders to represent debits and credits belonging to a single order.

📘

You can track transactions all the way from PaymentGroups or ReturnGroups using tracking codes.

Slicing to Recipients and the platform account

From the total balance of the SliceGroup, you can slice amounts to a Recipient’s balance. Use a PlatformSlice to collect a platform fee from a particular order. Before paying yourself, move funds to the Recipient dedicated to the platform.

Payout

To payout a Recipient’s balance, you must POST a payout request for the Recipient ID:

https://stagslicepay.acehubpaymentservices.com/gateway/v1/recipients/{recipientId}/payouts

{
  "header" : {
    "businessId" : "{businessId}"
  },
  "body": {
    "trackingCode" : "03965943-A205-4CD0-82E5-5A60942D43E6",
    "description": "Description of the payout"  
  }
}

Upon triggering a payout, SlicePay automatically checks if the Recipient has a positive balance, and if all required KYC information is available and validated.

Payvision may block, pause or limit payouts to Recipients if the provided information is not valid, or if the Recipient fails the required KYC checks at any time.

Reconciliation

You can perform reconciliations within SlicePay in the following ways:
● Use the SliceGroup ledger to reconcile all mutations belonging to a single order.
● Use the Recipient Ledger to reconcile all mutations done on the account of a Recipient.

SliceGroup Ledger

Each mutation that happens on each SliceGroup can be retrieved using the SliceGroup Ledger. Use GET request to retrieve the SliceGroup Ledger. Below is a sample response:

{
    "result": 0,
    "description": "Ok",
    "header": {
        "requestTimestamp": "2019-07-03T09:01:09Z"
    },
    "body": {
        "page": 1,
        "pageSize": 10,
        "total": 1,
        "operations": [
            {
                "type": "Payment",
                "operationId": "30b29efe-82e7-4e82-b8a2-7c1a7c5b2f2a",
                "source": {
                    "type": "Payment",
                    "id": "30b29efe-82e7-4e82-b8a2-7c1a7c5b2f2a"
                },
                "destination": {
                    "type": "SliceGroup",
                    "id": "3a858dda-c2a4-4469-8a05-08d6ff93f75e"
                },
                "trackingCode": "2bc4a7fd-54e8-4dea-810b-886251ab69f5",
                "amount": 100,
                "currencyCode": "EUR",
                "created": "2019-07-03T08:59:52Z",
                "balance": {
                    "before": {
                        "amount": 100,
                        "currencyCode": "EUR"
                    },
                    "after": {
                        "amount": 200,
                        "currencyCode": "EUR"
                    }
                }
            }
        ]
    }
}

Recipient Ledger

Each mutation that happens on the balance of a recipient can be retrieved using the Recipient ledger. Use GET request to retrieve the Recipient ledger. Below is a sample response:

{
  "result": 0,
  "description": "Ok",
  "header": {
    "requestTimestamp": "2019-05-22T09:12:34Z"
  },
  "body": {
    "page": 1,
    "pageSize": 10,
    "total": 2,
    "operations": [
      {
        "type": "Payout",
        "operationId": "60368a39-f7ee-48da-e4b5-08d6ddfef0fa",
        "source": {
          "type": "Recipient",
          "id": "7f4d26c9-e447-4b44-dc1a-08d6dddae609"
        },
        "destination": {
          "type": "Account",
          "id": "596563c2-361b-4114-c0c4-08d6ddea1c77"
        },
        "trackingCode": "AG0OX2GTA661GPIVZ12C",
        "amount": 10,
        "currencyCode": "GBP",
        "created": "2019-05-21T15:13:55Z",
        "balance": {
          "before": {
            "amount": 20000,
            "currencyCode": "GBP"
          },
          "after": {
            "amount": 19990,
            "currencyCode": "GBP"
          }
        }
      },
      {
        "type": "Payout",
        "operationId": "fcf35e8c-cf44-4f35-2f05-08d6ddf8cd33",
        "source": {
          "type": "Recipient",
          "id": "7f4d26c9-e447-4b44-dc1a-08d6dddae609"
        },
        "destination": {
          "type": "Account",
          "id": "596563c2-361b-4114-c0c4-08d6ddea1c77"
        },
        "trackingCode": "84G1MVZMVXUM7TTJQ836",
        "amount": 20000,
        "currencyCode": "GBP",
        "created": "2019-05-21T14:29:58Z",
        "balance": {
          "before": {
            "amount": 20000,
            "currencyCode": "GBP"
          },
          "after": {
            "amount": 0,
            "currencyCode": "GBP"
          }
        }
      }
    ]
  }
}

System Address

These are the SlicePay API's system base addresses for staging and live environments:

1. Staging

https://stagslicepay.acehubpaymentservices.com

2. Live

https://slicepay.acehubpaymentservices.com

Service Endpoint Address

The following REST service endpoints can be used:

Path
Description
/gateway/v1/recipients
The endpoint for the recipient operations.
/gateway/v1/slicegroups
The endpoint for the slice group operations.
/gateway/v1/paymentgroup
The endpoint for the payment group operations.