Payments

The trustshare system is intent-based, therefore the primary way of getting money into the platform is to create a Payment Intent for your buyer to confirm. Confirmation of a payment intent can be seen as an acceptance of terms associated with funding a Project.

A payment intent is comprised of a collection of settlements which are used to describe terms that the buyer must adhere to. Settlements describe a payment from a single buyer Participant to a single seller. However, you can use a payment intent to contain multiple settlements, essentially allowing a buyer to pay multiple sellers in one process.


The checkout UI

When your buyer confirms a checkout or payment_link intent they will be displayed a checkout UI that you can customise from your branding settings page on the dashboard.

The UI will display supported payment methods inferred from the value of the intent and your organisation's configuration. Payment instruments such as cards, and trade accounts can be created and saved for future use in the UI.

Alternatively, you can use invoice intents to take control of the UI yourself. However, we only support manual bank transfer methods for invoice intents.


Payment methods

We currently offer a few different methods of payment into Project accounts, starting with simple manual payments via international and local routes. Each individual project has a unique set of banking credentials, however you will not be able to see the collection credentials for projects that are not "controlled".

When using manual bank transfer, it is the user's responsibility to make the payment from their bank by any means available to them (online portal, bank branch etc.) to the nominated bank account we provide via the UI or Invoice. As this action is outside of our control, we cannot guarantee the settlement timeline and in reality can be any length. The associated Settlements will enter a settled state only when the funds have physically arrived into the nominated project account.

Payments via the checkout UI can also use Cards, Open Banking, Direct Debit and Trade Account credit. Each individual method has requirements that must be met for a specific intent in order to be displayed to the user. If you would like to avoid presenting users with one or more of these payment methods for your use case, just let us know! We can adjust your configuration to hide them from users.

Cards can be enabled for low-value payments, and can be stored by the buyer for later use. Card payments take around 2 working days to settle into project accounts.

For payment intents based in GBP or EUR, Open Banking provides a streamlined payment initiation mechanism where the user instructs their bank via their online banking application. Open Banking payments can take anywhere from 5 seconds to a couple of minutes to settle into projects.

Using Direct Debits, if enabled, is currently limited to EUR payment intents that defined scheduled future payments. Direct Debits take around 2 days to settle from their scheduled date.

Credit payments

Trade Account credit can give your business buyers the ability to pay on net terms ranging from 30-90 days. Users can apply for their Trade Account in the UI receiving an instant decision. If approved, they can use the credit line for the current checkout and any future payments.

For the trade account payment method to appear in the checkout UI, the buyer participant of the intent must be defined as a business from one of our "instant decision" supported countries.

Credits from a trade account work with immediate, escrow, and funding Settlements where the credit is only fulfilled at the point of release from a project or settlement via an Outbound. Credit will usually take around 1 day to settle into projects and be automatically assigned to the correct outbounds.

Creating a trade credit account via API

For countries where we do not support "instant decision", as well as those we do, you can alternatively create a trade_account Payment Instrument on the API. You can use webhooks to keep up-to-date with the asynchronous decision associated with the credit application.

Payment instruments created via the API will show up in the checkout UI for the associated buyer when enabled. Below is an example of creating a new instrument.

Creating a payment instrument

const instrument = await trustshare.api.v1.createPaymentInstrument({
  type: 'trade_account',
  owner: {
    type: 'business',
    email: 'sink+buyer@trustshare.co',
    name: 'ACME Limited',
    business: {
      type: 'limited',
      company_number: '12345678',
      phone_number: '+447773452345',
      registered_address: {
        address_line_1: '23 The Road',
        town_city: 'London',
        region: 'Greater London',
        postal_code: 'N22 6TY',
        country: 'GB',
      },
    },
  },
});

The resulting payment instrument identifier can be stored in your database for future usage in the event you want to confirm an invoice payment intent...

Confirming an invoice payment intent with a trade account

Once a payment instrument has been created and enabled, it can also be used to confirm an invoice payment intent directly via the API with no-user interaction. However, you will need to complete a Setup Intent to retrieve a session_id that can be used.

The following example shows how to create a setup intent for this purpose.

Creating a setup intent

const setup = await trustshare.api.v1.createSetupIntent({
  type: 'session',
  participant: {
    id: instrument.api.v1.createPaymentInstrument.owner.id,
  },
});

The resulting client_secret should be passed down to your frontend, where you can use the client SDK to confirm it. This can happen transparently for the user as it requires no direct interaction via UI.

Confirming a setup intent

const result = await trustshare.sdk.v1.confirmSetupIntent('<client_secret>');

By storing the resulting session_id in your database, it can be used for future invoice payments by confirming the intent via the API. You can also provide the required terms at this point to dictate the repayment requirements.

Confirming an invoice payment intent

const confirmation = await trustshare.api.v1.confirmPaymentIntent({
  id: intent.id,
  session_id,
  type: 'credit',
  credit: {
    payment_instrument_id: instrument.api.v1.createPaymentInstrument.id,
    terms: 'thirty_days',
  },
});

The resulting confirmation will include a checkout_id and invoice_id that can be used along with our webhooks to be notified of a change in status.


Supported countries & industries

We can support payments to and from 224 countries across the world:

Åland Islands, Albania, Algeria, American Samoa, Andorra, Angola, Anguilla, Antarctica, Antigua and Barbuda, Argentina, Armenia, Aruba, Australia, Austria, Azerbaijan, Bahamas, Bahrain, Bangladesh, Barbados, Belgium, Belize, Benin, Bermuda, Bhutan, Bolivia, Bosnia and Herzegovina, Botswana, Bouvet Island, Brazil, British Indian Ocean Territory, British Virgin Islands, Brunei Darussalam, Bulgaria, Cabo Verde, Cambodia, Cameroon, Canada, Caribbean Netherlands, Cayman Islands, Central African Rep, Chad, Chile, China, Christmas Island, Cocos (Keeling) Islands, Columbia, Comoros, Congo, Cook Islands, Costa Rica, Côte d'Ivoire, Croatia, Curaçao, Cyprus, Czech Republic, Denmark, Djibouti, Dominica, Ecuador, Egypt, Equatorial Guinea, Eritrea, Estonia, Eswatini, Ethiopia, Falkland Islands, Faroe Islands, Fiji, Finland, France, French Guiana, French Polynesia, French Southern Territories, Gabon, Gambia, Georgia, Germany, Ghana, Gibraltar, Greece, Grenada, Guadeloupe, Guam, Guernsey, Guinea, Heard Island and McDonald Islands, Hong Kong, Hungary, Iceland, India, Indonesia, Ireland, Isle of Man, Israel, Italy, Jamaica, Japan, Jersey, Jordan, Kazakhstan, Kenya, Kiribati, Kosovo, Kuwait, Kyrgyzstan, Laos, Latvia, Lebanon, Lesotho, Liberia, Liechtenstein, Lithuania, Luxembourg, Macao, Madagascar, Malawi, Malaysia, Maldives, Mali, Malta, Marshall Islands, Martinique, Mauritania, Mauritania, Mayotte, Mexico, Micronesia, Monaco, Mongolia, Montenegro, Montserrat, Morocco, Mozambique, Namibia, Nauru, Nepal, Netherlands, Netherlands Antilles, New Caledonia, New Zealand, Nicaragua, Niger, Nigeria, Niue, Norfolk Island, North Macedonia, North Mariana Islands, North Mariana Islands, Norway, Oman, Pakistan, Palau, Panama, Papua New Guinea, Paraguay, Peru, Philippines, Pitcairn, Poland, Portugal, Puerto Rico, Qatar, Reunion, Romania, Rwanda, Saint Barthélemy, Saint Helena, Saint Kitts and Nevis, Saint Lucia, Saint Martin, Saint Pierre and Miquelon, Samoa, San Marino, Sao Tome and Principe, Saudi Arabia, Serbia, Seychelles, Sierra Leone, Singapore, Sint Maarten, Slovakia, Slovenia, Solomon Islands, Somalia, South Africa, South Georgia and the South Sandwich Islands, South Korea, Spain, Sri Lanka, St. Vincent & Grenadines, Suriname, Svalbard and Mayen, Sweden, Switzerland, Taiwan, Tajikistan, Tanzania, Thailand, the Democratic Republic, Timor-Leste, Togo, Tokelau, Tonga, Trinidad & Tobago, Tunisia, Turkey, Turks and Caicos Islands, Tuvalu, Uganda, Ukraine, United Arab Emirates, United Kingdom, United States, United States Minor Outlying Islands, United States Virgin Islands, Uruguay, Uzbekistan, Vanuatu, Vatican City State (Holy See), Vietnam, Wallis & Futuna, Yemen, Zambia, and Zimbabwe.

Countries we can pay through local routes

We payout locally through local payout methods whenever possible in the following 49 countries:

Andorra, Australia, Austria, Belgium, Bulgaria, Canada, Croatia, Cyprus, Czech Republic, Denmark, Estonia, Faroe Islands, Finland, France, Germany, Gibraltar, Greece, Guernsey, Hong Kong, Hungary, India, Indonesia, Ireland, Isle of Man, Italy, Jersey, Latvia, Liechtenstein, Lithuania, Luxembourg, Malaysia, Malta, Monaco, Netherlands, Norway, Philippines, Poland, Portugal, Romania, Saint Barthélemy, San Marino, Singapore, Slovakia, Slovenia, Spain, Sweden, Switzerland, United Kingdom, and United States.

Currencies we can payout via local and international routes

We can payout in the following currencies, with any required foreign-exchange happening automatically:

AED (United Arab Emirates), AUD (Australia), BGN (Bulgaria), BHD (Bahrain), CAD (Canada), CHF (Switzerland), CNY (China), CZK (Czech Republic), DKK (Denmark), EUR (Europe), GBP (United Kingdom), HKD (Hong Kong), HRK (Croatia), HUF (Hungary), ILS (Israel), JPY (Japan), KES (Kenya), KWD (Kuwait), MXN (Mexico), NOK (Norway), NZD (New Zealand), PLN (Poland), QAR (Qatar), RON (Romania), SAR (Saudi Arabia), SEK (Sweden), SGD (Singapore), THB (Thailand), TRY (Turkey), USD (United States), and ZAR (South Africa).

Countries we cannot support

We cannot support payments to and from the following 17 countries/regions:

Afghanistan, Belarus, Crimea, Donetsk, Luhansk, Cuba, Iran (Islamic Republic of), Iraq, Libya, Myanmar, North Korea, Russian Federation, South Sudan, Sudan, Syria, and Venezuela.

Industries we cannot support

Before starting your integration, it’s important to check our prohibited industries policy carefully. Please speak to our team if you are unsure and to complete your onboarding.