Two Recourse API (1.0)

Download OpenAPI specification:Download

Our recourse fallback product allows you to fund orders with Two and get a payout from us, even if our risk engine would otherwise reject the order. If you decide to fulfil an order on recourse, that means you are fully liable for any credit and / or fraud risk for the order, meaning in case the customer does not pay us back on time, we may deduct the total order value from your next payout.

In order for you to be eligible to fulfil orders on recourse, you will need 3 things:

  • Ask Two to configure you with a merchant recourse limit
  • Configure each customer that you want to allow to go on recourse with a customer recourse limit
  • Start listening to the approved_on_recourse field in the Create order or Create repayment plan response

You can then decide to fulfil any of these orders following the usual process.

Environments

Merchant Recourse Limit

Get merchant recourse limit

Once you have been successfully set up by Two with recourse, you will be assigned merchant_recourse_limits. This means the maximum exposure you may have on recourse across all your customers at a given moment. You will also get in the response the merchant_recourse_exposure which will inform you about your current recourse exposure. Hence the difference of these two amounts is your total remaining recourse limit.

Responses
200

OK

404

No merchant_recourse_limit found for provided merchant

default

Error response

get/v1/portal/merchant/recourse_limit
Request samples
Response samples
application/json
{
  • "merchant_recourse_limits": [
    ],
  • "merchant_recourse_exposure": [
    ],
  • "merchant_remaining_recourse_limit": [
    ]
}

Merchant Customer Recourse Limit

Add customer recourse limit

To set a customer up on recourse, you need to send us the max_amount, representing the maximum exposure you are comfortable to have towards this customer. This step is required before being able to create or fulfil orders for a customer beyond their Two credit limit. Remember that you take full liability for this amount in case the customer does not pay us back on time. You will have to set up a recourse limit for each currency separately.

Request
Request Body schema: application/json
buyer_organization_number
required
string (Buyer Organization Number)

Country-specific buyer organization number

buyer_country_code
required
string (CountryCodeEnum)

The buyer's country code (in ISO 3166 Alpha-2 format). E.g. 'GB'

Enum: "NO" "SE" "GB" "US" "NL" "ES" "DK" "FR" "DE" "AT" "BE" "CH" "FI" "GR" "PL" "RO"
max_amount
string <decimal> (Max Amount) ^-?[0-9]+(\.[0-9]{0,2})?

The maximum risk exposure you are comfortable to have towards this customer/buyer - we won't allow you to create new orders for this customer on recourse if it would bring their total value of unpaid orders above this limit

currency
required
string (CurrencyEnum)

Currency code in ISO 4217 format. E.g. 'NOK'

Enum: "NOK" "SEK" "GBP" "EUR" "USD" "DKK" "CHF" "RON"
Responses
201

Buyer company recourse limit added

default

Error response

post/v1/merchant/buyer_recourse_limit
Request samples
application/json
{
  • "buyer_organization_number": "string",
  • "buyer_country_code": "NO",
  • "max_amount": "string",
  • "currency": "NOK"
}
Response samples
application/json
{
  • "id": "string",
  • "merchant_id": "string",
  • "buyer_organization_number": "string",
  • "buyer_country_code": "NO",
  • "currency": "NOK"
}

Get customer recourse limit

Endpoint to retrieve a specific customer's recourse limits set up by you. Remember that a customer needs to be set up on recourse by you in the currency you are trading in prior to you being able to fulfil orders on recourse with them.

Request
path Parameters
buyer_country_code
required
string

country code of the buyer customer recourse to be retrieved in ISO 3166 Alpha-2 format

buyer_organization_number
required
string

country-specific organization number of the customer company

Responses
200

OK

default

Error response

get/v1/merchant/buyer_recourse_limit/{buyer_country_code}/{buyer_organization_number}
Request samples
Response samples
application/json
{
  • "id": "string",
  • "merchant_id": "string",
  • "buyer_organization_number": "string",
  • "buyer_country_code": "NO",
  • "currency": "NOK",
  • "merchant_buyer_recourse_limit": "string",
  • "merchant_buyer_recourse_exposure": "string",
  • "merchant_buyer_available_recourse_limit": "string",
  • "buyer_available_recourse_limit": "string"
}

Update or disable customer's recourse limit

This endpoint is to edit a previously added recourse limit for a specific customer or to disable it. Note: max_amount=0 will disable recourse for this customer.

Request
path Parameters
buyer_country_code
required
string

country code of the buyer customer recourse to be retrieved in ISO 3166 Alpha-2 format

buyer_organization_number
required
string

country-specific organization number of the customer company

Request Body schema: application/json
buyer_organization_number
required
string (Buyer Organization Number)

Country-specific buyer organization number

buyer_country_code
required
string (CountryCodeEnum)

The buyer's country code (in ISO 3166 Alpha-2 format). E.g. 'GB'

Enum: "NO" "SE" "GB" "US" "NL" "ES" "DK" "FR" "DE" "AT" "BE" "CH" "FI" "GR" "PL" "RO"
max_amount
string <decimal> (Max Amount) ^-?[0-9]+(\.[0-9]{0,2})?

The maximum risk exposure you are comfortable to have towards this customer/buyer - we won't allow you to create new orders for this customer on recourse if it would bring their total value of unpaid orders above this limit

currency
required
string (CurrencyEnum)

Currency code in ISO 4217 format. E.g. 'NOK'

Enum: "NOK" "SEK" "GBP" "EUR" "USD" "DKK" "CHF" "RON"
Responses
200
default

Error response

put/v1/merchant/buyer_recourse_limit/{buyer_country_code}/{buyer_organization_number}
Request samples
application/json
{
  • "buyer_organization_number": "string",
  • "buyer_country_code": "NO",
  • "max_amount": "string",
  • "currency": "NOK"
}
Response samples
application/json
{
  • "error_code": "string",
  • "error_details": "string",
  • "error_message": "string",
  • "error_json": [
    ],
  • "error_trace_id": "string"
}