Overview

Learn how to update your users' direct deposit information through Argyle's pay distribution solution.

Pay distribution allows users to update their direct deposit information and include your bank account in their pay distribution. You can perform Deposit Switch with cards as well.

You can set up a process where users distribute their pay to bank accounts in percentages (for example, a 60%-40% split) or dollar amounts (for example, $2,000 to one account and the remainder to another). Minimum, maximum, and suggested values can be defined to accommodate your business goals.

You cannot associate an allocation value to a card. If your configuration contains both cards and bank accounts, allocation fields represent the amount of money that is allocated to the bank account. See the Configuration section to learn more.

Users can also allocate their pay to a platform-specific card issued by a platform such as Uber or Lyft, together with their banking partner. This forms an additional tranche in a user's pay distribution.

From your application, users are prompted to add:

  • Bank accounts
  • Cards
  • Cards and bank accounts

Argyle is PCI DSS Level 2 compliant. Learn more about security and compliance at Argyle here.

👍

Pay distribution to cards is a feature that is subject to change as the Argyle team keeps improving this solution.

❗️

When a card and bank account are added simultaneously, they are treated as one unit. The user must confirm these details together to add the two payout options. If the user does not want to confirm one of the options, neither can be added through this workflow.

If users have an existing payout card through their employer but would like to direct pay to your card instead, instruct the user to disable the original card.

Argyle Link flow when a Link item doesn't support pay distributions, and there is a single 100% allocation.Argyle Link flow when a Link item doesn't support pay distributions, and there is a single 100% allocation.


Process overview

  1. Argyle Link (with pay distribution configuration) is initiated in your application on a button click allowing users to change their pay distribution information.
  2. In the pay distribution configuration, you can determine the percentage and/or dollar amount values of the user's pay to be allocated to your bank account. You can also add a card option, but any allocation value you input does not apply to the card—allocation values apply to bank accounts only.
  3. Pay distribution configuration is encrypted to ensure your bank account details are never exposed on the front-end. Your full routing and account numbers always appear encrypted on the end user's device.
  4. You can read direct deposit accounts and the pay distribution set up on your end user's platform via the /v1/pay-allocations endpoint.
  5. After subscribing to pay distribution webhooks, your back-end systems will be notified when allocations are added, changed, or removed.

Please refer to this diagram for an explanation of how the relevant endpoints are related:

undefinedundefined

This is the complete pay distribution life cycle, featuring the associated account statuses and webhooks.

Pay distribution process overviewPay distribution process overview


Pay distribution configuration

Argyle Link initiates a pay distribution update process if a pay distribution configuration is provided. The Pay distribution configuration describes the desired outcome of that update.

🚧

Pay distribution update functionality is currently limited to U.S. employment accounts only. Pay distribution update is not yet supported for users with Canadian, or a combination of Canadian and American bank accounts.

If pay distribution update gets initiated and a Canadian bank account is observed in the user’s employment platform, the update fails with the unsupported_bank_accounts error code.

See these sample configurations for bank accounts, cards, and cards and bank accounts to understand how to set up your configuration.

Bank account configuration

You can configure pay distribution to allow users to only add bank accounts.

// Argyle Link will request 20% of user's pay
// to be transferred to the account specified.
{
    "bank_account": {
        "bank_name": "New Bank",
        "routing_number": "084101234",
        "account_number": "9483746361234",
        "account_type": "checking"
    },
    "percent_allocation": {
        "value": "20"
    }
}
// Argyle Link will request 200 of user's pay
// to be transferred to the account specified.
{
    "bank_account": {
        "bank_name": "New Bank",
        "routing_number": "084101234",
        "account_number": "9483746361234",
        "account_type": "checking"
 },
    "amount_allocation": {
            "value": "200"
    }
}

Allocations shown in the example pay distribution configuration are just recommendations. Users can modify the amounts or percentage of their pay to go to your account.

If you want to prevent the user from modifying the allocation value, set min_value equal to max_value, as shown in the amount_allocation example below. In this case, the user is not allowed to change the value of $200, only accept or reject it:

// Argyle Link will default to the amount view, but it will
// let the user chose if they want to transfer 20 percent or 200 dollars.
// Percent value will be 20 by default, 
// but the user will be able to change it with a value 
// in the range from 10 to 30.
// Amount value will be fixed to 200.
{
    "bank_account": {
        "bank_name": "New Bank",
        "routing_number": "084101234",
        "account_number": "9483746361234",
        "account_type": "checking"
 },
    "default_allocation_type": "amount",
    "percent_allocation": {
            "value": "20",
            "min_value": "10",
            "max_value": "30"
    },
    "amount_allocation": {
            "value": "200",
            "min_value": "200",
            "max_value": "200"
    }
}

If the config contains only a percent allocation, Argyle restricts the options to percent only for the user. In the same way, if only the amount allocation is configured, the user will not be able to transfer you a percentage of their pay.

Pay distribution allocation typesPay distribution allocation types

If you want to assign the entire user's net pay to a single allocation, set entire_allocation to true.

In this case, no specific allocation (percent or amount) is accepted in pd_config.

{
    "bank_account": {
        "bank_name": "New Bank",
        "routing_number": "084101234",
        "account_number": "9483746361234",
        "account_type": "checking"
    },
    "default_allocation_type": "amount",
  "entire_allocation": true
}

❗️

Setting entire_allocation to true has implications on other pay distribution config parameters. For more details, refer to the entire_allocation parameter in the API Reference.

Card configuration

You can configure pay distribution to allow users to only add a card. Use feature.pay_distribution_card_update to learn which Link items support cards.

👍

Argyle recommends populating every field in the card object when creating a pay distribution configuration for cards, including the optional fields. Doing so enables compatibility with all platforms that support card pay distribution.

{
    "card": {
        "card_number": "4253177385403456",
        "cardholder_title": "Mr",
        "cardholder_first_name": "John",
        "cardholder_last_name": "Doe",
        "card_name": "Viza",
        "expiration_year": 2030,
        "expiration_month": 10,
        "card_cvc_cvv": "900",
        "address_line1": "759 Victoria Plaza",
        "address_line2": "Unit 12",
        "city": "Los Angeles",
        "state": "CA",
        "postal_code": "90210",
        "country": "US"
    }
}

PD cardPD card

Card and bank account configuration

You can also add a bank account and card simultaneously, though this approach is not recommended as your user must accept both card and bank allocation options to use either.

👍

Argyle recommends populating every field in the card object when creating a pay distribution configuration for cards, including the optional fields. Doing so enables compatibility with all platforms that support card pay distribution.

{
  "bank_account": {
    "bank_name": "New Bank",
    "account_type": "checking",
    "routing_number": "123451678",
    "account_number": "1234567890"
  },
  "percent_allocation": {
      "value":"100"
  },
  "card": {
        "card_number": "4253177385403456",
        "cardholder_title": "Mr",
        "cardholder_first_name": "John",
        "cardholder_last_name": "Doe",
        "card_name": "Viza",
        "expiration_year": 2030,
        "expiration_month": 10,
        "card_cvc_cvv": "900",
        "address_line1": "759 Victoria Plaza",
        "address_line2": "Unit 12",
        "city": "Los Angeles",
        "state": "CA",
        "postal_code": "90210",
        "country": "US"
    }
}

📘

You cannot associate an allocation value to a card. If the pd_config contains both cards and bank accounts, allocation fields (amount_allocation, percent_allocation, and entire_allocation) represent the amount of money that is allocated to the bank account. Allocation fields do not apply to cards.

Pay distribution card bankPay distribution card bank


Pay distribution configuration parameters

For detailed descriptions of each pay distribution configuration parameter, refer to the Pay Distribution configs in the API Reference.

For visual examples of all customizable UI elements on the Pay Distribution screen in Link, refer to the Link customization guide.


Use Cases

You can use these sample pay distribution configs in Console’s Link Emulator and instantly see the resulting Link flows the way your users would see them. Enable Sandbox mode in Console and paste the encrypted configs into the Encrypted PD Config optional field to try them out.

Pay distribution use casesPay distribution use cases

Argyle recommends that you select a Link customization with Link items that support pay distribution.

Adding a $200 allocation

Argyle Link requests $200 of the user's pay be transferred to the bank account specified. The user is allowed to change the allocation to have other amount values.

Configurations
CiQAB/5leRC6iGLxikbAYI6BBM8/T03SG2Iq2Vp1A6eC0QFjLmES9gEAfV+QlfdxQv7FWp85YYwblaV9gnxxe2q4mBhsXf0ou+THzRzpTtUbP6wJ/JTlCF/KoEs/7PfRqurvZ3TAZZqjtBRXWT27/I0gaOZjZtk5rp02/gFvnaoUwAg3GBiNZj9UuZPzkrz08O60Gy2reOg2N8wUwX4LzlhCGUU/gr3rjrjHW87WQlYxLzYGa3s9Tl6k5OACJCugBG8CtDjsD3X1QZfX2iSAqPOZAiah4Zat5JumIwIah6mGbY+wpaMjDqzGflYmP0NqNXM6+rtPklRLn/g7+D+fWdoF2jXvK4izVkur6780b7bV6JFHoDfahaDnR8aLUzM=
{
    "bank_account": {
        "bank_name": "New Bank",
        "routing_number": "084101234",
        "account_number": "9483746361234",
        "account_type": "checking"
    },
    "amount_allocation": {
        "value": "200"
    }
}

Adding an amount allocation which cannot be changed by the user

Argyle Link requests $54.53 of the user's pay be transferred to the bank account specified. The user is not allowed to change the value of the newly added allocation.

Configurations
CiQAB/5leXgFotFYMF/3SoQb1w1uO5jqHSX6a2bXZ8EPG2WBhY0SpAIAfV+Qlf9BH0tpooe9jW3W8Vm5wmO8Balpkb7l9ElU+cz6DMvjC5bu3MgPOX6Kfxz02946ATvj042d2bFFRv05G9tmMWLg3YQXdR7aVtxpi899VFLxIWzR4teKCYifu7Utceih/c28q87Ykn0n9MOSCJMTKPn+X1ErYszrJPbkbEGoilqYXnpMJNowI2cYvUUtCCBnQi1zI9RoCSQfSNRS9G2Kdcu9L5g6dYeZCN7qTX6V6rw5NrY8ZhplnKSUw0eMlEq/7Lf7YWn2PbFfKHJ2ai1T34FVwB02OSlRxlemzD9FqjFRJFQwj4c9jHqyPPoXZkZD+wSP9pWLRfWxso1WLYz8KASD6CewJo21XyDsOrU+yDORy+ptdD/JvpJ6qLIWTkam
{
    "bank_account": {
        "bank_name": "New Bank",
        "routing_number": "084101234",
        "account_number": "9483746361234",
        "account_type": "checking"
    },
    "amount_allocation": {
        "value": "54.53",
        "min_value": "54.53",
        "max_value": "54.53"
    }
}

Letting the user choose between a fixed percent allocation and a variable amount allocation

Argyle Link defaults to the percent allocation view and lets the user choose if they want to transfer 20% or $150 of their pay to the bank account specified. The percent value is fixed at 20%. The amount value is $150 by default, but the user is able to change it to a value in the range of $100 to $200.

Configurations
CiQAB/5leVczIYGCzRsVsDWaq04av06rTNitmqEYnLyW67wl2FsSkQMAfV+Qlfcwa+9yTG4iJnXY8vaWZB4zUMZuP4BSGoRH/x9y878obUCrcu0NnyJP2pMbUY03V5TD+GUrccN7it+5wSp2/j9LxlT7SrK1v//jbZFpXYIzU9OM6QPSdVkjXV3l9VlI+nicFMMcs+LWa+vFiVGsqC5vdvwMuQQY2ZGS4QzRuKGQb89n09FvyyAmMgz39PDk4ycWu3Z+AcTFx6+cKiSKb6AJ5PnFPQpuDtgBNAHm4l3XADHijOlwa/07tIYs2oqPK5Cx2gPbUI5t3wDFX0RgyjbpPtvV6NEEXXWRK2VJZ+f69OVmCKuRX/i/0q9N02E9kZY1Mfaky7TiQDUIJyp1mF0K7NysLEcKvjcEdcW9n8AnFAvNH0vzlrn0wSQPuezomsLPfsyDl1jBPd2HF540AfOETt3Kzaxfo9PPyfIyBCtKjDITeNN017DkzBP6L1HEmwvUFKJv9o8+VtGUMnwWYLq/AB1ojbW5If4b6h9Mp04EAGgPeW6XG1HELancflCusDdtMv94QGzGjYAedw==
{
    "bank_account": {
        "bank_name": "New Bank",
        "routing_number": "084101234",
        "account_number": "9483746361234",
        "account_type": "checking"
    },
    "default_allocation_type": "percent",
    "amount_allocation": {
        "value": "150",
        "min_value": "100",
        "max_value": "200"
    },
    "percent_allocation": {
        "value": "20",
        "min_value": "20",
        "max_value": "20"
    }
}

Letting the user choose between a fixed amount allocation and a variable percent allocation

Argyle Link defaults to the amount allocation view and lets the user choose if they want to transfer 20% or $200 of their pay to the bank account specified. The percent value is 20% by default, and the user is able to change it to a value in the range of 10% to 30%. The amount value is fixed to $200.

Configurations
CiQAB/5leWvq2Ln32VVbtOf0NfoHpOe7cyZncuTjD2veodFiXPQSkAMAfV+Qla8yeSWC0HOGMgSzv6igNruPYKwhnVvmv+W8nwvZolyAn1cjWsaRsBibEkTwcNx/MIYb+iHPAdnFFW1dWW8LRzPiGsn/1T0sqJ/70zcZ9s1eoOnZXy6D+h7SP3Ee+v90abXqvI2GG9ZGRxAGUKFyDqYfYHuTEYzoOxoAx9oARUI/GpVxwX0a8h1F+g+nIvbA7iCKWQOce3WyZLciVj04QE6f8iGMMgtETFtICdogcDtXoo8F2d9sOxOLINQnNz2Y94e0YhOznCUjOhTeY8SbnwyuJmQB4UthHG1zfAenhXXuhUVV/55WNXLURlfl4zyYsrvgKrA3yMkmE9ShIF2sy1nd5URfRoLigNxdO/L84Z+wPJ4NERLwq8s+S2AssBjpf1pnPDs8qLHJtvHNrQw/UkvRyzzeJ2kx0iuoS55imnwcXkZ4MNkOiMa5/ivkbMBv1rCLn4+ILtQxoth+CHDzpKzlNKk42EY3lzPzopi4PYh9kCch4kn7kPickkVpKlp3jIBCO59XBrVfnVqx
{
    "bank_account": {
        "bank_name": "New Bank",
        "routing_number": "084101234",
        "account_number": "9483746361234",
        "account_type": "checking"
    },
    "default_allocation_type": "amount",
    "percent_allocation": {
        "value": "20",
        "min_value": "10",
        "max_value": "30"
    },
    "amount_allocation": {
        "value": "200",
        "min_value": "200",
        "max_value": "200"
    }
}

Allocating the user's entire pay

Argyle Link requests the user's entire net pay to be transferred to the account specified. The user only sees this newly added allocation on the screen and is not allowed to modify its value.

Configurations
CiQAB/5lefKMWuhbPYgudwmr0qAC3tyQLjlpktXdjAXLo9Aem4YSjwIAfV+Qld5gO0AXj3Tsy6MYOsimBx9kxfudREELXAT8sYnsOGiZVe08PrQbdiwkDRsvsDEN1bh7PpC7rjDtk/wS9K4Rh3hxcCu1SpwFfxOWU+V8L2BbfXq4pICj97CiAaos5AgRtJzj7LMVw9LtiCfIM4Jxib/VvRqtmEZZQycbZQjHTpnx2TPL3jUU3Cz7Wxb9nN0HkXycsoWH7s7ZRIQRqhIg3jUYt0uECQzoU5q1edXwh7CenSVo2MC4IXz7V1PogcWB6GU6fu/nkTjFHyVOqLfv1a8snbiR4U6+pGi5VKFqJ4udN8zZFjIxAT46hhkNTc97/7MfZliJZq4TIuNsLkYZduSOc73JYLiUoTxx
{
    "bank_account": {
        "bank_name": "New Bank",
        "routing_number": "084101234",
        "account_number": "9483746361234",
        "account_type": "checking"
    },
    "default_allocation_type": "amount",
    "entire_allocation": true
}

Adding a payout card

The specified payout card is displayed to the user as being added to their employment account.

Configurations
CiQAB/5leejFD7BabWgeI5Ec57f3v1fmHxPqsjgfNPrPYgD4Ue0SvAMAL2UHl1skfcsHQQqnOA1FaT9YINKrYOuEG59ayu88VKAwnRmyElu7xxcJWYGwLKDlKwFM+ICaKmN34SZnhY14pyn3Pf/y3u5x/qEmc2tbwjWNqE0Qof+2FvojoBJ/C9Ue7qiJTPVjfPbY/A5kxTmaGne1GSlYicW7UOrMc3YamYuUGjgWGJL+IenTWpHc5a/bgrkwwqG6sIZEywWYCAPWauLV3mx8SS4XoLCLVfh2AvMHpPKDpTcXa7U9n8MTtyfZVuCewg5QBnQtioJ/FZ+zOFnRIPvGIt95hDLLfhAgivgpkTG5kJ5aO23VGHLdpOprmb2/v69nOJpiW1kZDJmjhGAz14pQ4pi2mOupY+fILlnOWhCo6l/hnjv55bwnyV0FG1Sz9RvFNo8oqmb7lqKQCPEhXkHivGs+sjAWP+bYirWVdmfdNksLeOHnJ/HjIhXkN3+dKAnqVKRX6JjFvJCGQ/k1G/BeLOohY6qVAzFnpkej2s+1wOFv4TnxNR2ME0S872POnZj5mHoxJMk3WDDwtCZIha5O0LwH9SwgBklNGqihBvZvQ5Iw/kGI53ri3leI0l3uTDUg9tO+TxE=
{
    "card": {
        "card_number": "4253177385403456",
        "cardholder_title": "Mr",
        "cardholder_first_name": "John",
        "cardholder_last_name": "Doe",
        "card_name": "Viza",
        "expiration_year": 2030,
        "expiration_month": 10,
        "card_cvc_cvv": "900",
        "address_line1": "759 Victoria Plaza",
        "address_line2": "Unit 12",
        "city": "Los Angeles",
        "state": "CA",
        "postal_code": "90210",
        "country": "US"
    }
}

Adding a $200 allocation, and a payout card

Argyle Link requests $200 of the user's pay be transferred to the bank account specified. The user is allowed to change the allocation to have other amount values. The specified payout card is displayed to the user as being added to their employment account.

Configurations
CiQAB/5leepwEn0jP4ZI9WpApv8aAldh6/sD8kcoe18811fPurMS7AQAL2UHlzkRkNm4pMP/r8+hA0ejpWB806suAB+7LCXshwSXmt3T0kFuEvGVlTktXM0jF2Iy7XRh5arvkbAgfmHiAAklGcCW2plHB/KClOAFqWJiswNjyuFeQD6SUeLvdxr2XXpzenpCzyM3EK8+/GIkv/iv6aSElBWt5lJEgpUCvcJ6GAHTtgPrjU9Qe3JAUv9Jasx4hyWrcqTUfol2SmbpdqGnef5OqUWD2MvTzcWBXOrz3/V5WFZ2YsMEXzKBpL5Uim1zA1Rg4bAYmnNyCPYvX0o2dLLv9ME2vuRORolD1nKr9FJLJKThZDLgAoK+Ur6AunredcfQeoiGsPSdd+reiXwyJ9TkV/2acokAe/rydVajHLLEUNTDrWU2k71nSULwjAFfu8BUNtoMVRcZRrFGAR5HywI6Mcqp+J767ZOC4qgSA+/Rm8pia/hjrGrIAYkva68BCHOsVw/Q/HkWH/y0z6c8lDjliObCDdoY1/bWeE6xBXeawz+Gy1BX1SYX1csKRktB3YpBBR4fN6AJh0D0XSmABfSkpqYBqiRMzhKRRAixcBeNh1naRO+R96cve3qu45M/l41x8Fm0AdsV59rHOuQr/r3QCro9JgNyrCQiue+pTEYg4/qTThZ99Vnxeb0cDVj67OZtq1MT+HZZ16DBeh5Lp9f91zZeavN5CVYSE2wY3qJf7QdgJJiogVn6xSO8LHbSM2F5LAqgEOTgdyCuEkN+a+RhqZmpAgTI6yGUaG/mGC4OIqVLvySZb8OKWaDm+aCLmeZNttl0/Yvho0nLq3kAGUQbFslapWCHLbqZb3XEfxChQf1SjAO+UQ==
{
    "bank_account": {
        "bank_name": "New Bank",
        "routing_number": "084101234",
        "account_number": "9483746361234",
        "account_type": "checking"
    },
    "card": {
        "card_number": "4253177385403456",
        "cardholder_title": "Mr",
        "cardholder_first_name": "John",
        "cardholder_last_name": "Doe",
        "card_name": "Viza",
        "expiration_year": 2030,
        "expiration_month": 10,
        "card_cvc_cvv": "900",
        "address_line1": "759 Victoria Plaza",
        "address_line2": "Unit 12",
        "city": "Los Angeles",
        "state": "CA",
        "postal_code": "90210",
        "country": "US"
    },
    "amount_allocation": {
        "value": "200"
    }
}

Adding a 20% allocation, and a payout card

Argyle Link requests 20% of the user's pay be transferred to the bank account specified. The user is allowed to change the allocation to have other percent values. The specified payout card is displayed to the user as being added to their employment account.

Configurations
CiQAB/5leQgcglFavRCp0w4HKxEsd+C8fSk3u0eQvJn4Q6r05/kS7AQAL2UHl4BkKFllK1Hxv6VtGdA6a9VOLNvBXRI56ppkqipJpMkNX4PJ/Weh30Z6oyaZQUOMxY+ZpJHP5ezEheRZlgitschbPoJRWkLjzKKy3X2IQ3f/34r+Uk3ad2oosuPgbku0HmP4ACG3FQhIUNeA8TTc1XzRSMx+lFsryrzmv+SpuKAJYn6ULseB4c26tqaD5LcKEIoDmitJUjMQtDdMR+z5fpfKlQXCmkDHHef9XUcpzkY5LKqiZlQy2Tn7iWQTn9CNSPXukVRZGaYWpdPa7bYa+cowd0M6yq4N1ML5eRdrU2WmHzWoMpViRtTjrtbU4zb7fUsFOGJfinq1fz4xSeOhJUg4RsTCZifVhVQ53ESBKnl/Rw2qqaf4tPREVG/oaC/v6Vr4P2rUbfJ/NiV84wVh1Und+6F60TLwjPTEePzmrUD0/GweC/pvRMbBYypHd17vljLd/YypymNU0rVVwAc/HGpdm0kSzPv59E6sT0WMQaVD+qKcqb9RvKNcZubWgfstn5y0ivw38DECj8TZQNaY00tzNfNJqJf8FsSbompt1oFMItEwi5cg5Nei1wpDB+1c4d09Y99sf3Eghbwu6yYtm102MsNluNtZdaggCIbNdrs72qaUi1tSqNXCZ/uaq+kvxr6B4Ncvwuj02hjB9e+mnMWqOs3fa0oTs05BvREl0vJejmPDq2loxWjAUh1It1HB0jgRB7dFlA9h/wrvD7PKJdP1dNO/J84iXL8DlrLDYycHKL30JuplAfLcZaT1kFdmmRTMPdBxN2nwWqvu6VOcBUiCrIdK1xzYtwfPYe0GWC86pyZQYVXVmQ==
{
    "bank_account": {
        "bank_name": "New Bank",
        "routing_number": "084101234",
        "account_number": "9483746361234",
        "account_type": "checking"
    },
    "card": {
        "card_number": "4253177385403456",
        "cardholder_title": "Mr",
        "cardholder_first_name": "John",
        "cardholder_last_name": "Doe",
        "card_name": "Viza",
        "expiration_year": 2030,
        "expiration_month": 10,
        "card_cvc_cvv": "900",
        "address_line1": "759 Victoria Plaza",
        "address_line2": "Unit 12",
        "city": "Los Angeles",
        "state": "CA",
        "postal_code": "90210",
        "country": "US"
    },
    "percent_allocation": {
        "value": "20"
    }
}

Allocating the user's entire pay, and adding a payout card

Argyle Link requests the user's entire net pay to be transferred to the account specified. The user only sees this newly added allocation on the screen and is not allowed to modify its value. The specified payout card is displayed to the user as being added to their employment account.

Configurations
CiQAB/5leT7O7tuqZTNRlvgzuORNFdZu0tYaImtc7v5uTy5vBc0S4AQAL2UHl11enTB971I0t8Tx0U729+vnVIIX8splHDJijiiDEtcScd3W8b52FmFpg/IL3eHs7umRmd6JO8mvORDhBGQqF+x0XrZhzaZC4qB+ZiEs2rztEYGLMPgoYKegh7oKauNc9ZDf43l/KFDCYlYgW2Zd7LbB4M+PN39E8+GgMqHYTOKgpXFMYVBAniV8r58eu2PI9FV8sZ0JXRlOX2YTXAkEFC3XeX174olNQU4Eu1xlu+EPf61yCF1/UBvetVB7rSXMW/IcFrYkZCFVw+1YlDtGgk7uksStCB6ePuyWeu0/erjOitZidL5FwCx90OS0AEoMDqsXVQq+nyB+rCe2IAX9YFEL/xiWCB5gGXxzE+Y814WinVKq3YsSzsaMOhpKOpLfFuOb8YhQDzsq+OTlMx6W6RjOPSaqk29yQYWTDOaH37/iOABqnM8YWwbdz434KbuH02vo9gpS5Ny4MEyYTk5Uy0l8Z9rCce+/hUIRjqGNPQgim+kNwBp204V3tGX96fI/3JLwTeTUcmk4JrSK3G/LfDWQrxz+UYvxKO3BV56I6lvJcXMPrAlDGTzlxHOO9jUhSpBun0mU/gdbUXr9wunufZrb/Zc+4th+YCeVoBuwJ/TReBP8+fCfo0WQGXCX3wKGB5kl+PaoxRmTSrj24iSJLRCFTCygEeyW3/IFNK6/lCbYCLitJgLeOlz+oh+//1IDIrwj7f0h61ZQ15UdHqXBua0dJ/INxUjlUKyfmG8tMY5fCJaLLQkfhe/E0StQ8JdzYTbq2YGQIBfDuWCJpRbXYHQ40L7mQGXPDF+ocA==
{
    "bank_account": {
        "bank_name": "New Bank",
        "routing_number": "084101234",
        "account_number": "9483746361234",
        "account_type": "checking"
    },
    "card": {
        "card_number": "4253177385403456",
        "cardholder_title": "Mr",
        "cardholder_first_name": "John",
        "cardholder_last_name": "Doe",
        "card_name": "Viza",
        "expiration_year": 2030,
        "expiration_month": 10,
        "card_cvc_cvv": "900",
        "address_line1": "759 Victoria Plaza",
        "address_line2": "Unit 12",
        "city": "Los Angeles",
        "state": "CA",
        "postal_code": "90210",
        "country": "US"
    },
    "entire_allocation": true
}

Link integration

To start the pay distribution update process in Link you must initialize it with the payDistributionConfig parameter set to an encrypted version of your pay distribution configuration.

The encryption is necessary to ensure your bank account details are never exposed on the front-end. Your full routing and account numbers always appear encrypted on the end user's device.

To encrypt your pay distribution config make a POST request into pay-distribution-configs/encrypt with your pay distribution config in the payload.

POST /v1/pay-distribution-configs/encrypt
{
    "bank_account": {
        "bank_name": "New Bank",
        "account_type": "checking",
        "routing_number": "123456789",
        "account_number": "1234567890"
    },
    "percent_allocation": {
            "value": "60"
    }
}

You get a response that contains the encrypted version of your config:

{
    "encrypted_config": "CiQAB/5leUoeFUzgHsoDLSjZqnh4pk+S4dMkrXIi/MORRH2nLRYS8wEAfV+QlRZrPnvXdWJOQ4pKzBoJzJicJUIa4y7q3RSUVi2s8pRiG15i1SwdTeJ++imc+tInpDk5G69EZj4HCef2BBhctysILGdi3nYMRoNv8dVSS5wUJUbod7oG1PMBi7CeObu73A91nmxL6edSumWQMMqmd/4nWHOHHNtb4fttgnKwCf1E7ZBLKRCYnIe/+EopIF3D470qi20fCDL9zvY0a1N9uKg9nnFueIzo04haEY9ujh9ErL+HLdve1ExV5VvTkZkH4mAulqKcTpS8VHCAM3sqFTLExSJhbqRUzeS5DLnsVReFfUaKHR/7I/7sloyy+cU="
}

Initializing Link with the payDistributionConfig parameter with the encrypted pay distribution configuration value will set up Link to run the pay distribution update process.

Link initialization with pay distribution config

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
  </head>
  <body>
    <script src="https://plugin.argyle.com/argyle.web.v3.js"></script>
    <script type="text/javascript">
      const argyle = Argyle.create({
        linkKey: 'YOUR_LINK_KEY',
        apiHost: 'https://api-sandbox.argyle.com/v1',
        payDistributionItemsOnly: true,
        payDistributionUpdateFlow: true,
          payDistributionConfig: "CiQAB/5leUoeFUzgHsoDLSjZqnh4pk+S4dMkrXIi/MORRH2nLRYS8wEAfV+QlRZrPnvXdWJOQ4pKzBoJzJicJUIa4y7q3RSUVi2s8pRiG15i1SwdTeJ++imc+tInpDk5G69EZj4HCef2BBhctysILGdi3nYMRoNv8dVSS5wUJUbod7oG1PMBi7CeObu73A91nmxL6edSumWQMMqmd/4nWHOHHNtb4fttgnKwCf1E7ZBLKRCYnIe/+EopIF3D470qi20fCDL9zvY0a1N9uKg9nnFueIzo04haEY9ujh9ErL+HLdve1ExV5VvTkZkH4mAulqKcTpS8VHCAM3sqFTLExSJhbqRUzeS5DLnsVReFfUaKHR/7I/7sloyy+cU="
      })
      argyle.open()
    </script>
  </body>
</html>
let PD_CONFIG = "CiQAB/5leUoeFUzgHsoDLSjZqnh4pk+S4dMkrXIi/MORRH2nLRYS8wEAfV+QlRZrPnvXdWJOQ4pKzBoJzJicJUIa4y7q3RSUVi2s8pRiG15i1SwdTeJ++imc+tInpDk5G69EZj4HCef2BBhctysILGdi3nYMRoNv8dVSS5wUJUbod7oG1PMBi7CeObu73A91nmxL6edSumWQMMqmd/4nWHOHHNtb4fttgnKwCf1E7ZBLKRCYnIe/+EopIF3D470qi20fCDL9zvY0a1N9uKg9nnFueIzo04haEY9ujh9ErL+HLdve1ExV5VvTkZkH4mAulqKcTpS8VHCAM3sqFTLExSJhbqRUzeS5DLnsVReFfUaKHR/7I/7sloyy+cU=" // your encrypted pay distribution config

_ = Argyle.shared
    .loginWith(linkKey: "YOUR_LINK_KEY", apiHost: "https://api-sandbox.argyle.com/v1")
    .payDistributionUpdateFlow(true) 
    .payDistributionConfig(PD_CONFIG) 
    .payDistributionItemsOnly(true) // only Link items that support pay distribution update will be shown to users.
    .resultListener(self)

let argyle = Argyle.shared.controller
argyle.modalPresentationStyle = .fullScreen
self.present(argyle, animated: true, completion: nil)
val PD_CONFIG = "CiQAB/5leUoeFUzgHsoDLSjZqnh4pk+S4dMkrXIi/MORRH2nLRYS8wEAfV+QlRZrPnvXdWJOQ4pKzBoJzJicJUIa4y7q3RSUVi2s8pRiG15i1SwdTeJ++imc+tInpDk5G69EZj4HCef2BBhctysILGdi3nYMRoNv8dVSS5wUJUbod7oG1PMBi7CeObu73A91nmxL6edSumWQMMqmd/4nWHOHHNtb4fttgnKwCf1E7ZBLKRCYnIe/+EopIF3D470qi20fCDL9zvY0a1N9uKg9nnFueIzo04haEY9ujh9ErL+HLdve1ExV5VvTkZkH4mAulqKcTpS8VHCAM3sqFTLExSJhbqRUzeS5DLnsVReFfUaKHR/7I/7sloyy+cU=" // your encrypted pay distribution config

val config = ArgyleConfig.Builder()
    .loginWith("YOUR_LINK_KEY", "https://api-sandbox.argyle.com/v1", "")
    .payDistributionConfig(PD_CONFIG)
    .payDistributionItemsOnly(true)  // only Link items that support pay distribution update will be shown to users.
    .payDistributionUpdateFlow(true) 
    .setCallbackListener(object : Argyle.ArgyleResultListener {
        // callbacks 
    })
    .build()

Argyle.instance.init(config)
Argyle.instance.startSDK(this)
import ArgyleSdk from '@argyleio/argyle-plugin-react-native'

const PD_CONFIG = 'CiQAB/5leUoeFUzgHsoDLSjZqnh4pk+S4dMkrXIi/MORRH2nLRYS8wEAfV+QlRZrPnvXdWJOQ4pKzBoJzJicJUIa4y7q3RSUVi2s8pRiG15i1SwdTeJ++imc+tInpDk5G69EZj4HCef2BBhctysILGdi3nYMRoNv8dVSS5wUJUbod7oG1PMBi7CeObu73A91nmxL6edSumWQMMqmd/4nWHOHHNtb4fttgnKwCf1E7ZBLKRCYnIe/+EopIF3D470qi20fCDL9zvY0a1N9uKg9nnFueIzo04haEY9ujh9ErL+HLdve1ExV5VvTkZkH4mAulqKcTpS8VHCAM3sqFTLExSJhbqRUzeS5DLnsVReFfUaKHR/7I/7sloyy+cU=' // your encrypted pay distribution config

// Configure the SDK before hand, once. only call ArgyleSdk.start() when the UI is needed
ArgyleSdk.loginWith("YOUR_LINK_KEY", "https://api-sandbox.argyle.com/v1", "")
ArgyleSdk.payDistributionConfig(PD_CONFIG)
ArgyleSdk.payDistributionUpdateFlow(true)
ArgyleSdk.payDistributionItemsOnly(true)  // only Link items that support pay distribution update will be shown to users.

// Launch the SDK
ArgyleSdk.start()

Limiting the number of Link items in the company selection screen

You can limit the number of companies or platforms that are shown to users in Link during the company selection step:

  • If the payDistributionItemsOnly is set to true, Link will only show Link items that support direct deposit update functionality.
  • Additionally, if you define only the amount_allocation or percent_allocation values in the pay distribution config, then only the Link items that support amount or percent allocations will be shown to the user. To find out which Link items support which types of allocations, please refer to the features.pay_distribution_update object in the /link-items endpoint.

Account statuses

The account object retrieved from accounts will have the pay_distribution object containing status, error_code, error_message, and updated_at fields.

👍

The account object refers to the pay distribution process as a whole, which can consist of multiple pay allocations.

The pay distribution object represents the status of the pay distribution update process.
Here is an example of an account after a successful pay distribution update:

{
    "id": "7c21d391-a7df-4ad5-b7d3-d2d7a6b3e740",
    "user": "9a498925-2766-41d4-a094-5fb1ce22afd7",
    ...,
    "pay_distribution": {
        "status": "success",
        "error_code": null",
        "error_message": null,
        "updated_at": "2020-09-27T15:56:20.734617"
    }
}

Attributes


pay_distribution.status string

Denotes the point in the process of the pay distribution update process. Possible values:

idle - pay distribution update process has not been initiated.

awaiting_confirmation - waiting for the user to confirm updated pay distribution.

awaiting_connection - waiting to establish connection to the user's employment account.

scanning - scanning existing pay allocations prior to update process.

updating - updating the user's pay distribution.

success - pay distribution update successful.

error – pay distribution update unsuccessful. See the pay_distribution.error_code below for details.


pay_distribution.error_code string

Provides information on why the pay distribution update was unsuccessful when pay_distribution.status is error.

Each error_code has a corresponding error_message.

For more information on possible values, common causes, and troubleshooting suggestions for these errors, see the Pay Distribution Errors reference page.


pay_distribution.error_message string

Provides additional information on why the pay distribution update error occurred. Each error_message corresponds to a particular error_code (see above). The list below is formatted as:

error_code - error_message

For more information on possible values and troubleshooting suggestions, see the Pay Distribution Errors reference page.


pay_distribution.updated_at string

Timestamp denoting the last time pay distribution was updated. Timestamps follow the ISO 8601 standard.


Reading pay allocations

You can read direct deposit accounts, and the pay distribution set up on your end user's platform via the pay allocations endpoint.

🚧

The Argyle API returns pay allocation details for users with U.S., Canadian, or even a combination of bank accounts, where a user might have pay allocations for a US bank account and a Canadian bank account simultaneously.

However, pay distribution update functionality is currently limited to U.S. employment accounts only. Pay distribution update is not yet supported for users with Canadian, or a combination of Canadian and American bank accounts.


Webhooks

You can get notified about the result of a pay distribution update by subscribing to these webhooks:

The Argyle API also provides dedicated webhooks to notify you when your users add, update, or remove pay allocations. Visit the Pay allocations webhooks reference for more details.

📘

Learn how to subscribe to notifications about changes in your users' data in the Webhooks reference.


Did this page help you?