Skip to main content
After a user connects a payroll account through Argyle Link, you can ask them to:
  • Redirect their pay, in whole or in part, to a new or existing bank account
  • Add a debit card for instant payouts on their gig platform
Gif of the direct deposit switching process in Argyle Link.

Set up

Our direct deposit switching (DDS) solution for website and application integrations is outlined below. For a no-code solution, visit our DDS through Console guide. Argyle Link is the front-end application through which users can connect their payroll accounts. Our embedding Link guides cover how to initialize this payroll connection process in your application. Add the following lines to your Argyle Link initialization to include an additional step for DDS after a user connects a payroll account:
payDistributionUpdateFlow: true,
payDistributionConfig: "<Your encrypted payDistributionConfig>"
  • Set payDistributionUpdateFlow to true to enable the DDS flow after a user connects a payroll account.
  • Set payDistributionConfig to an encrypted string representing your DDS configuration. This configuration determines the user’s DDS experience, and contains any relevant bank account or debit card information.
  • The DDS configuration must be encrypted using the API to ensure sensitive banking and card information is never exposed.
Argyle is PCI DSS Level 2 compliant. Learn more about security and compliance at Argyle here.

Example code:

{
    "bank_account": {
        "bank_name": "YellowHorizon",
        "account_type": "checking",
        "routing_number": "123456789",
        "account_number": "1234567890"
    },
    "entire_allocation": true,
    "allow_editing": false
}
"CiQAB/5lefxxuvf+DXqPvpHAaEb41ZPpLfmpyjHT8ZlWxuvw9W4ShAIA8Gmka+gDv12aUmQgX7bZVRxOLK1isfYWHRHXRUTB9uYAXT9MHGOenaKf5IiqnXeTqMrKS5/PVcpZ3o6iLkcbYKED3IFp0uwFsD9yhRPGQhrC19ihCynKeSLC7mtp18DvM3vDulpo8mbakKrTNstlWHqPNNnx1zhPr8thSOqLamEo5s0QDGV6XidYikQQaD43zjqQQbWypVedUknbB6t3jilazsn629BBM9+XyVqjI7MEpg+dImbgD7t6I+AR5YuJjXXWoxxeTepRqGCnXePR9Z+J+BagPHBD7ov7jpqBWB9GxO+BiojcaZtAw0aLe5RLr+iysrmE8p1E1iRjXoESGDjowQ=="

Structure DDS configuration

  1. Decide which DDS flow to perform. This determines what to include in your DDS configuration, which in turn determines which screens and settings are shown to the user after they connect a payroll account.
  2. Structure your DDS configuration as an object. Depending on your use case, this object can include:
  • bank_account - an object containing bank account and routing information.
  • <allocation settings> - listed key:value pairs or objects that determine what pay allocations are suggested to the user when redirecting payments to the provided bank_account.
  • card or card_source - objects included when adding debit cards to gig platforms. See our add a debit card section below for more information.
  1. Encrypt this DDS configuration object using the API.
  2. Use the encrypted string returned by the API in step 3 as your payDistributionConfig when initializing Argyle Link for DDS.

Customizations

The user’s DDS experience takes place within Argyle Link, the same front-end application they used to connect their payroll accounts. You can tailor Argyle Link’s appearance to your brand, or restrict which payroll accounts a user can connect to only those that support DDS. In Argyle Console:
  1. Create a new customization using Flows.
  2. Enable the setting “Only show Link items that support direct deposit switching”.
Once this setting is enabled, only payroll systems supporting the DDS configuration you provide will be shown to the user.
  1. Tailor Argyle Link’s appearance to your brand if needed.
  2. Save and apply your customization by including the following line in your Argyle Link initialization:
    customizationId: "<Your customization ID (e.g. P2R93PEL) found in Link Customizer>"
    

Sandbox testing

You can test your DDS configuration and customizations with Flows in Argyle Console. This allows you to simulate a user’s DDS experience and make any adjustments necessary.
  1. Enable Sandbox mode using the toggle in the upper-left.
  2. Select your customization from the “Select Link customization” dropdown.
  3. Enable “Simulate a direct deposit switch” using the toggle in the lower-right.
  4. Select “Custom” from the “Direct deposit scenario” dropdown.
  5. Copy and paste the encrypted payDistributionConfig you would like to test.
Add a customization from the dropdown in Link Emulator that appears when deposit switching is selected.

DDS flows

Which of the below DDS flows you would like the user to perform determines what to include in your DDS configuration. The DDS configuration is then encrypted via the API and used as the payDistributionConfig when initializing Argyle Link for DDS.

Add a bank account

Include a bank_account object and <allocation settings> in your DDS configuration.

Full paycheck

User cannot restore previous bank accounts or adjust their pay allocations:
{
    "bank_account": {
        "bank_name": "YellowHorizon",
        "routing_number": "084101234",
        "account_number": "9483746361234",
        "account_type": "checking"
    },
    "entire_allocation": true,
    "allow_editing": false
}
"CiQAB/5lecrbJVrkdodwk4sgqacFNCiaH638IgDAHa8/peRjEEoShwIA8Gmka0Ea+JAa75M5HxfTckMklvPVvRxPYV3ND+YisxMhcHk6Fig0bwUUJiotuw/L5YkbHysTMPU6PSvXnHs19lNDZfVO6qpo44U6eMRdqO65HC864QEEi5n/u7QQT3DcG43RiVoRCnDiBlcdGIOPxth+gX6JgygigFHLEFhfOKWaQdyOmHDuf9cZNxp3M26IBEEtgmznl4oSm1qFt6ZzMcvdvKd2nOMS5co3Nc4f6F67GlnCRHEjzszBUnkgpsj60KFKggQ0e/CRQWi5pM/wa7UCb80LAKKm8Tl07kDJVFZcb9rsGwcfPY8ZCxcD0MtV/Q+yflCbaLL4RYcKXCBZXv0yOJEhxw=="
Gif showing the full paycheck direct deposit switch process in Argyle Link. User is allowed to restore previous bank accounts and adjust their pay allocations:
{
    "bank_account": {
        "bank_name": "YellowHorizon",
        "routing_number": "084101234",
        "account_number": "9483746361234",
        "account_type": "checking"
    },
    "entire_allocation": true,
    "allow_editing": true
}
"CiQAB/5leYyoOyN3G5bVYap9kIGN3sExAqnDC0ZSZobxb9Zrew8ShgIA8Gmka+Kg8+ZmA9C1gqXEO9dW2n1SzPiMnfeOl4Az1dFFddnGOrPj9QNcNkG6g+Qummr2ebAaI27epVn0N2opzFU+EpL1XrYwMOmAEb1/iODTDZh52P7gxnzNu0mw9/3Q0rV+9aAiQfSqppn+XWIN3M3TdLr0A2c3LbZ3foEAOhNSVnvTcnDV8ZXuUjxPx6SL2DWpsZY8DrhA0xlfEisyVo9UVgqMRBAnYCLidVmj0iHqCQil/oGdwaW2NbfVuf3gFQN9g97wCBfD0kQV78J4KvxV99cMmJEVHjzATXwUKPqW+dNK0vKlPvDQ91WOvyXQaZ471s8iIjXlooBz8oySSObfYBJ2"
Image showing the adjustable full paycheck direct deposit switch process in Argyle Link.

Partial paycheck

We recommend including both percent_allocation and amount_allocation with whole number values in your DDS configuration for partial paychecks. Because some payroll systems only support one format, either amount values or percent values, this maximizes the number of payroll systems that will support your DDS configuration. If both percent_allocation and amount_allocation are included in your DDS configuration and the user’s payroll system supports both formats, the user will be shown an initial screen allowing them to select which format they prefer: Users can adjust between a specific amount or a percentage when allocating their paychecks. An exception to including both percent_allocation and amount_allocation would be if you are only interested in receiving a specific dollar amount, usually in connection with a loan repayment. In this case you would only include amount_allocation. You would like to receive an exact amount of the user’s paycheck:
{
    "bank_account": {
        "bank_name": "YellowHorizon",
        "routing_number": "084101234",
        "account_number": "9483746361234",
        "account_type": "checking"
    },
    "amount_allocation": {
        "value": "177",
        "min_value": "177",
        "max_value": "177"
    }
}
"CiQAB/5leftv/h7DdBqhJxkWPVkEv4xQw0eCqjEb184UeSlWCrESowIA8Gmka4AB+A07Ny5WYldfxP+rY00lThGucMZqOUDM5b1j7tte0aM8Fn6usa/Xwy6FMsT9dV+htKU04K1Z+r3uLBkWVgOw2G0K7SN+2wKz//NUOudTjzBYq80MsePDDLrDr2uYCGiUWHlciYkhEUB6jwQ7KN1/KpIQd5PfvjDk+Gbds3JTq1q2PbQIH87l46YZgdrdZkqPmaIbVYLdZLa1NHgK4joRvqKvYgaJ66i+m7C2v2W8St/K/6A3skq2yCPSMSawNXOVzGZQdp2EvWd61wvaMcZ/CHxnh6OhN+iwkGxO/PHxd63yD1z0+ic/N9ljsx0xZGpoIihFm5AQhcY7A6o5glVhT3/aP5uqvs+DvDduWTjprGLHqql2HvUd1lp+AZU="
Image showing an exact partial amount being suggested in Argyle Link for a direct deposit switch. You would like to receive an amount or percentage of the user’s paycheck within a certain range:
{
    "bank_account": {
        "bank_name": "YellowHorizon",
        "routing_number": "084101234",
        "account_number": "9483746361234",
        "account_type": "checking"
    },
    "percent_allocation": {
        "value": "21",
        "min_value": "10",
        "max_value": "30"
    },
    "amount_allocation": {
        "value": "177",
        "min_value": "50",
        "max_value": "250"
    }
}
"CiQAB/5leYjHBRtCDh3aadVwSYxQA6GlbzMgOtifkK/PxvWUoxgS7wIA8Gmka9zAluMIDbNzeLkw788DAn5JHBd+Y1upW7HnlmwMwU6XUa/NwRh1B0aUJoRletrmvR/hNcCqw93rQuvlu/JZ8JEP8rCNKAUMYU0OrYbP7+3JP0x5hhJD6HwQruN0edhOixMq/mzsJYiBllJcPBb214PkqTJ7wNczJpPY8H1P8pJOVAuYHTUqhj2WGI/2mg8ZxyOhllX00QTCSWWXmy9OtIvl0dEtPAqpcTk22AXhWPFWcS9t35tLH/xH5Y8T7BC48s/bkpWmQWjUS1rxnJVdTMuqyxwcnuzhw4MF3K1GMAqE3AycT30t0TZ7EV1r3I/4IPmg5zorppbsRClCqMSdVsIMIqIhginZxjFhClsDA0UZHg/VSX6LEFwU1ZzF6PK7TyoinO3iE6zx5oFKZ/GBLAbeoNarwlGl/bCt8GsUtIDcfj6htvfuL7helfwNN3X8xcoiZ0PVMu8WJRr1ITX+dMnOKkYPEiyIEwNA"
Image showing an allowed range being accepted for a partial paycheck deposit switch in Argyle Link. You would like to receive a minimum amount or percentage of the user’s paycheck, but do not have a maximum limit:
{
    "bank_account": {
        "bank_name": "YellowHorizon",
        "routing_number": "084101234",
        "account_number": "9483746361234",
        "account_type": "checking"
    },
    "percent_allocation": {
        "value": "21",
        "min_value": "10"
    },
    "amount_allocation": {
        "value": "177",
        "min_value": "50"
    }
}
"CiQAB/5lebHgXF4fFRTlsfzX431xvwAaNShjFmrpH0EcPhOYdgUSyAIA8Gmka4fEfFZMVmujjTv/38EGkU2bIqlhqOxB1wQpd49m/orKuzG+hDVnBxsP5f4LIkmahwWa/2ODm9KUCQw/DtFMuY2zRK1cSy2CqyzpWa1Gh8ecaOlqaatt2dcGnq8hmzM6uyrJfPTqt3J6VcLyEZ2jhz8nyDwHJAYnR+Xb6hGzJlWSCNJLc46cp0x4158U4tMWnBj3IiUhHs9/1x0IjLxcyLoNpRctHsdC7XGULDFstuv2axxNL6YLiN8R+0XCN75zEnaTIPBKrd7bkzCYuD+HX5JzzThWdPWAxwmqT2cdubIG2JbKcYKu8lYOSe+SHMYud2NZEt97i6qbkRqPGRWTz46+OLzoaUj8WKOn1QDnaaXpMoYUndy8of1QXiRlpXA8S7Djuge5o/SVCicn4puqlZiGMDGmgkVlHAC6I0kAAqsUsOgg"

Add a debit card

The process of adding a debit payout card to a gig platform in Argyle Link. Many gig economy platforms support instant payouts to debit cards for earned wages. You can check which employers support this feature using the /link-items API endpoint. Your DDS configuration for adding debit cards will depend on whether you have PCI DSS compliance, which is required for managing sensitive data like card numbers and CVV2 security codes.
Argyle is PCI DSS Level 2 compliant. Learn more about security and compliance at Argyle here.

You are PCI DSS compliant

If you have PCI DSS compliance and are certified to handle sensitive card data, include the card object in your DDS configuration. We recommend populating every field in the card object to maximize compatibility with gig economy platforms that support this feature.
{
    "card": {
        "card_number": "4253177385403456",
        "cardholder_title": "Mr",
        "cardholder_first_name": "John",
        "cardholder_last_name": "Doe",
        "card_name": "Master Visa",
        "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"
    }
}
"CiQAB/5leV7MffL4GqGFq40LfKq6ob9lP5OzPzN9789O/KCiOUcSwwMA8Gmka3lF/mm6j9k3i+PyTKVeE4UJiIXe/YbEw5FTvfflEqXBj/R70xDqjv93jvms9VzRSy8/8zbcjMKhVLptH5NCbvHHeYKt7HzJhg2aeUWY9Y2pUT9SGrr/qWbkXbPtMawrajITfXvIfQEoHXZselpnwbwT0yqiP0j8I6k+1YXSl2x1aEzlUiDbY0kH5Phn2sAxyOxn6vs51ofy2wV/mTX60U9ZMIaOmHUzzImvpDqy1dTc9qxVc0SIoIEuD3l8dOWSjQGIMqXJvM0Zy1R7rDYmZzIKRrWH2uFUlybOIDSsu9AA7VuwyDbKUhGVZb8ekjiPMRUucoQ+ERhYtrJPBYojKx0TQsBhcm3/XzRdAujxwYpxK3EW+WesSt6ZG330wMNGkv6Q2NrxZT8olEfPDTC1lT3/08cLwDJSv2EQKOO1lpZ65c/7lrebAOdlgqI/sK0XiOV+jbjs14CH6lgRSnqGShkyreiGmhyfjM2ccA6K11h8ZZie0BNaKI27EzWJRn94RByzMZPPZejmH5YpYD06ujwTfn5wsUqDWC8HmiuTQivPHsNXIWFK6hSeDpK0Vy6Piv4fiCtDfvyQMUV8Tp06"

You are not PCI DSS compliant

Argyle has partnered with Unit to support adding debit cards to gig economy platforms for instant payouts if you are not PCI DSS compliant. Unit is PCI DSS compliant and can serve as a third party for handling sensitive card data.
Reach out to your Customer Success Manager if you are implementing this functionality with Unit, or are interested in using another preferred third party.
Include the card_source object in your DDS configuration.
{
    "card_source": {
        "partner": "unit",
        "card_name": "My Unit payout card",
        "details": {
            "id": "ymp000f9",
            "org_id": "lj93cqt2"
        }
    }
}
Argyle sends the encrypted card details to Unit, who then handles adding the payout card to the gig platform.

Add a bank account and card

Adding a bank account and debit card at the same time to a user’s payroll system is only supported if you are PCI DSS compliant. Include a bank_account object, <allocation settings> for the bank account, and card object in your DDS configuration. You would like to receive the user’s entire paycheck, and add a debit card:
{
    "bank_account": {
        "bank_name": "YellowHorizon",
        "routing_number": "084101234",
        "account_number": "9483746361234",
        "account_type": "checking"
    },
    "entire_allocation": true,
    "allow_editing": false,
    "card": {
        "card_number": "4253177385403456",
        "cardholder_title": "Mr",
        "cardholder_first_name": "John",
        "cardholder_last_name": "Doe",
        "card_name": "Master Visa",
        "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"
    }
}
How performing both a direct deposit switch and adding a payout card at the same time appears in Argyle Link. You would like to receive an exact amount or percentage of the user’s paycheck, and add a debit card:
{
    "bank_account": {
        "bank_name": "YellowHorizon",
        "routing_number": "084101234",
        "account_number": "9483746361234",
        "account_type": "checking"
    },
    "percent_allocation": {
        "value": "21",
        "min_value": "21",
        "max_value": "21"
    },
    "amount_allocation": {
        "value": "177",
        "min_value": "177",
        "max_value": "177"
    },
    "card": {
        "card_number": "4253177385403456",
        "cardholder_title": "Mr",
        "cardholder_first_name": "John",
        "cardholder_last_name": "Doe",
        "card_name": "Master Visa",
        "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 would like to receive an amount or percentage of the user’s paycheck within a certain range, and add a debit card:
{
    "bank_account": {
        "bank_name": "YellowHorizon",
        "routing_number": "084101234",
        "account_number": "9483746361234",
        "account_type": "checking"
    },
    "percent_allocation": {
        "value": "21",
        "min_value": "10",
        "max_value": "30"
    },
    "amount_allocation": {
        "value": "177",
        "min_value": "50",
        "max_value": "250"
    },
    "card": {
        "card_number": "4253177385403456",
        "cardholder_title": "Mr",
        "cardholder_first_name": "John",
        "cardholder_last_name": "Doe",
        "card_name": "Master Visa",
        "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 both a payout card and making a direct deposit switch for an amount within a certain range in Argyle Link.

Adjust existing pay allocations

Adjust how the user is allocating their paycheck and have the user confirm in Argyle Link the new allocation settings. In some situations, such as when a user’s final loan payment is lower than the previous payments, you may want to adjust the pay allocations for the bank accounts that have already been added to the user’s payroll system. Include a bank_account object in your DDS configuration in the same way as if you were adding a new bank account, with the new <allocation settings> you would like the user to accept.

Remove a bank account

After a bank account is removed, it is indicated to the user in Argyle Link. Users can confirm through Argyle Link that they would like to remove a bank account from one of their connected payroll accounts. This allows the user to adjust the payout settings of their remaining bank accounts, as well as handle any multi-factor authentication (MFA) requests their payroll system requires. Allow users to remove a bank account with these steps:
  1. We recommend deep linking the user directly to the payroll account containing the bank account to be removed.
  2. Encrypt only the following JSON and set it as your payDistributionConfig when initializing Argyle Link for DDS:
    {
        "action": "remove-allocation",
        "allocation_id": "0181d8c4-31ed-3338-1859-05fc7f1ca501"
    }
    
You can find the allocation_id by using the /pay-allocations endpoint. List pay allocations by account and use the id representing the bank account you would like to remove as the allocation_id. You can also save the allocation_id returned in the payload of the accounts.pay_distribution_updated webhook after adding a bank account if you plan on removing the bank account later.

Status updates

Webhooks

Webhooks are automatic notifications that let you know in real-time when changes occur. If you are asking the user to add or remove a bank account, add a debit card, or adjust their existing pay allocations, you can monitor the status of these changes using accounts webhooks: If a user independently adds, updates, or removes a bank account or debit card, you can monitor these changes as well by subscribing to pay allocations webhooks. You can subscribe to webhooks using Argyle Console or via the API.

Manual monitoring

You can view the status of any bank account or debit card updates to payroll accounts manually:
  • via the API — use the /accounts API endpoint and check the attributes within the pay_distribution object.
  • in Argyle Console — navigate to Connections, select a user, click the JSON toggle button, and check the pay_distribution object within the Account object that is listed at the top of the JSON view:
    {
        "pay_distribution": {
            "status": "...",
            "error_code": "...",
            "error_message": "...",
            "updated_at": "..."
        }
    }
    
The status will progress from scanning -> updating -> success/error.

DDS through Console

You can invite users to Link with a deposit switch included using Console. You can invite new users to switch their direct deposit using Argyle Console. The invites can be sent via email, SMS, or both and will include a link the user can click to enter the DDS flow in their browser. From there the user can review and confirm they would like to add the bank account whose details you provided in Argyle Console to their payroll system. From the Your users tab, select Invite new users and then enable direct deposit switch. If you customized Argyle Link by tailoring its appearance to your brand, or restricted payroll connections to only those that support DDS, you can select your Link customization from the dropdown menu in the Argyle Link tab within the same Invite users page.

FAQ

After a user confirms DDS changes in Argyle Link, the update process typically takes fifteen to thirty seconds on most payroll systems, and up to two minutes on the slowest payroll systems.
If the user’s income is not enough to satisfy all pay allocations, how the available income is distributed varies from platform to platform. Whenever possible, Argyles prioritize your allocation in the platform’s payout queue.
Argyle only passes bank account, payment settings, and/or card information to the user’s payroll platform. If there is an issue with future payments, the user must contact their payroll provider directly.
No, the pay allocations will not automatically be removed from the payroll system because of account disconnection or revoked access. Argyle cannot update pay allocations on payroll systems that have become disconnected or where the user revoked access, and Argyle does not communicate with banks regarding these pay allocations. Please contact the user directly to update the pay allocations or re-connect the disconnected account.