Two webhooks (0.0.1)

Download OpenAPI specification:Download

Overview and usage

Two provides webhooks via a portal that allows you to self-manage your application's webhook subscriptions and related configuration options when receiving these webhooks. Please refer to the portal's Receiving webhooks documentation for more details about using the portal and how to consume webhook events.

Getting started

  1. Login to the Two Merchant Portal.
  2. Within the Two Merchant Portal, go to the "Integrations" page and press the "Manage webhook subscriptions" button. You should be directed to the webhooks portal.
  3. Once you are logged in to the webhooks portal, please refer to the webhook portal documentation for details on how to configure your subscriptions.
  4. In the webhooks portal, once you have configured an endpoint to receive webhooks, you can send test/example payloads to the endpoint by going to Endpoints, selecting one of your configured endpoints, selecting the Testing tab, choosing which event type to send and then hitting the Send Example button.
  5. Alternatively, you can use one of our simulation endpoints to emit webhooks matching one of the event type schemas. See details under schemas for each webhook.

Webhooks Postman Collection

To get started using the simulation endpoints and events that trigger webhooks, we have a downloadable Postman collection.

#¤ Environments

Testing

https://api.sandbox.two.inc

Production

TBC

Pre-requisites

  1. An API key to access our checkout API. You can get an API key (which you should keep protected) for your application from the Two Merchant Portal.
  2. An email address to receive invoices and similar notifications, such as credit notes (optional).

The simulation endpoints we provide to trigger certain webhooks are made for testing purposes only and are only available in our sandbox environment. There are some limitations with these and may not always provide fully accurate data in some edge cases.

Interpreting order reconciliation events

Order reconciliation events (event types with prefix order.reconciliation.) describe financial events related to orders that are relevant to the buyer. All order reconciliation events have an amount field in the payload, which can be summed over multiple events to calculate the amount owed by buyers (a.k.a. the outstanding amount). The outstanding amount can be calculated on different levels by grouping/filtering on other IDs carried in the order reconciliation events, for instance:

  • Grouping the sum by order ID yields outstanding amount for that order.
  • Grouping by billing period ID yields the outstanding amount on a billing statement level.

Payment allocation events (order.reconciliation.payment_allocated.v1) describe the portion of a payment used to cover an invoice. The payment sub-structure of the payload contains information on the actual payment itself. It may be larger than a single allocation, and may show up on multiple allocation events if used to cover more than one invoice.

Event Reference

Order InvoicedWebhook

Type: order.reconciliation.invoiced.v1

Occurs when an order has been successfully fulfilled and the corresponding invoice has been created by Two.

Payload

The data object in the payload contains IDs that link the order and the invoice, along with the amount and currency of the invoice to be paid back by the buyer.

Example:

{
    "specversion": "1.0",
    "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
    "type": "order.reconciliation.invoiced.v1",
    "time": "2023-06-21T12:34:56.123456Z",
    "source": "https://api.two.inc",
    "subject": "order/a9f5d2d3-5d6d-4e2a-a4b4-6c7f8a9d0f1e",
    "twomerchantid":"b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
    "data": {
        "root_order_id": "a9f5d2d3-5d6d-4e2a-a4b4-6c7f8a9d0f1e",
        "order_id": "a9f5d2d3-5d6d-4e2a-a4b4-6c7f8a9d0f1e",
        "invoice_id": "7a5a7b9b-7d9e-4e9e-b9b1-2d7c658e1a4d",
        "merchant_id": "b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
        "billing_period_id": "175bda61-c6f2-4b9d-a429-5f31c83ecc10",
        "amount": "150.65",
        "currency": "GBP"
    }
}

Triggering in sandbox

  1. Create an order through the checkout API service in your sandbox environment. Capture the order ID from the resulting response.
  2. Fulfill the order. There may be a short delay while the fulfilment process completes asynchronously.
  3. Once the order state moves from FULFILLING to FULFILLED, the buyer representative email specified in the order request will receive an invoice. Simultaneously, the order.reconciliation.invoiced.v1 webhook will be sent by the webhook gateway to any endpoints you have configured to receive it.
Request
Request Body schema: application/json
required
required
object (OrderReconciliationDataBase)

Object describing details about the reconciliation event.

id
required
string (Id)

The event ID. Unique within the source. Can be used to deduplicate events.

Message (string) or Message (null) (Message)

Webhook notification human-friendly message.

source
required
string (Source)

A representation of the event's originating system.

specversion
string (Specversion)
Default: "1.0"

The version of the CloudEvents specification.

Subject (string) or Subject (null) (Subject)

Identifies the entity that the event relates to.

time
required
string <date-time> (Time)

The event timestamp.

Twomerchantid (string) or Twomerchantid (null) (Twomerchantid)

The ID of the merchant that this event relates to.

type
required
string (Type)
Value: "order.reconciliation.invoiced.v1"
Responses
200

Successful Response

422

Validation Error

Request samples
application/json
{
  • "data": {
    },
  • "datacontenttype": "application/json",
  • "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
  • "source": "https://api.two.inc",
  • "specversion": "1.0",
  • "subject": "order/a9f5d2d3-5d6d-4e2a-a4b4-6c7f8a9d0f1e",
  • "time": "2023-06-21T12:34:56.123456Z",
  • "twomerchantid": "b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
  • "type": "order.reconciliation.invoiced.v1"
}
Response samples
application/json
null

Payment AllocationWebhook

Type: order.reconciliation.payment_allocated.v1

Occurs when either:

  1. A payment is made and confirmed as allocated to a specific invoice or statement issued by Two.
  2. A previously matched payment is deallocated, for example when a credit note takes priority over the payment.

It is important to note these webhooks are sent only once the payment has been matched (or unmatched) in Two's system to a specific invoice or statement, so there may be a delay between the buyer making the payment and Two being able to match that payment to an invoice/statement.

As an example, the following sequence of events show when this webhook may be issued:

  • A buyer is issued with an invoice of 1000 GBP (Two issues an Order Invoiced webhook).
  • The buyer later pays 400 GBP to Two using the reference provided on the invoice.
  • Two will match that payment to the invoice: a Payment Allocation webhook is issued.
    • The webhook payload will contain the invoice or statement reference Two matched the buyer's payment with (in the matched_reference attribute) as well as some details of the original payment made by the buyer in the payment object.
  • The buyer later makes another payment of 600 GBP to Two with the same reference (600 being the remaining balance to pay for that invoice).
  • Two matches the second incoming payment of 600 GBP to the same invoice: another Payment Allocation webhook is issued.
    • This webhook will have the same matched_reference value, but the details in the payment object will be different because it is a distinct payment from the original 400 GBP payment.
  • A credit note is issued against the original invoice of 300 GBP (Two issues a Order Credited webhook).
    • One of the payments Two previously matched will be "unmatched" because the refund of 300 GBP against specific invoices has a higher priority than payments. Two issues another Payment Allocation webhook, but the amount will be negative.

Payload

The data object in the payload contains IDs that indicate the order and invoice the payment has been allocated to. Also note the following within the payload:

  • amount: The amount for this event represents the amount of the buyer's payment that has been used by this allocation. For payments to Two that are allocated to invoices, this amount will be negative. For deallocation events (for example, where a credit note has a higher priority than an already-reconciled payment and causes us to deallocate an existing allocation), the amount will be positive. A deallocation event would typically result in a later payment_allocated event where all or part of the same payment previously allocated is re-allocated against a different invoice; in this situation another payment allocation event will be sent.
  • payment: Contains data about the actual transaction Two received from the buyer that has been used in this payment allocation. See the schema description of this child object for details of each field.

Example

{
    "specversion": "1.0",
    "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
        "type": "order.reconciliation.payment_allocated.v1",
    "time": "2023-06-21T12:34:56.123456Z",
    "source": "https://api.two.inc",
    "subject": "order/a9f5d2d3-5d6d-4e2a-a4b4-6c7f8a9d0f1e",
    "twomerchantid":"b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
    "data": {
        "root_order_id": "652a57e2-c2de-437b-96a7-2eeac0a37814",
        "order_id": "a9f5d2d3-5d6d-4e2a-a4b4-6c7f8a9d0f1e",
        "invoice_id": "7a5a7b9b-7d9e-4e9e-b9b1-2d7c658e1a4d",
        "merchant_id": "b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
        "billing_period_id": "175bda61-c6f2-4b9d-a429-5f31c83ecc10",
        "amount": "-123.45",
        "currency": "GBP",
        "matched_reference": "ACB12345",
        "payment": {
            "payment_id": "1346ef4c-fae1-43a2-b637-24e0c756d4ce",
            "payment_reference": "ABC12345",
            "booked_at": "2023-06-21T12:30:12.012345Z",
            "payment_amount": "500.05",
            "currency": "GBP"
        }
    }
}

Triggering in sandbox

  1. Create and fulfil a new order (see the order.reconciliation.invoiced.v1 webhook description for how to do this) or use an existing order ID for the following steps.
  2. Use the "Simulate pay in" endpoint provided in the Two webhooks Postman collection.
  3. Once the simulated payment to us has been received the payment allocation webhook will be sent to any endpoints subscribed to this event.

Alternatively:

  1. Refund an order either fully or partially.
  2. A payment allocation webhook will be sent indicating an existing payment has been deallocated for this order to any endpoints subscribed to this event.
Request
Request Body schema: application/json
required
required
object (OrderReconciliationPaymentAllocatedData)

Object describing details about the payment allocation/deallocation.

id
required
string (Id)

The event ID. Unique within the source. Can be used to deduplicate events.

Message (string) or Message (null) (Message)

Webhook notification human-friendly message.

source
required
string (Source)

A representation of the event's originating system.

specversion
string (Specversion)
Default: "1.0"

The version of the CloudEvents specification.

Subject (string) or Subject (null) (Subject)

Identifies the entity that the event relates to.

time
required
string <date-time> (Time)

The event timestamp.

Twomerchantid (string) or Twomerchantid (null) (Twomerchantid)

The ID of the merchant that this event relates to.

type
required
string (Type)
Value: "order.reconciliation.payment_allocated.v1"
Responses
200

Successful Response

422

Validation Error

Request samples
application/json
{
  • "data": {
    },
  • "datacontenttype": "application/json",
  • "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
  • "source": "https://api.two.inc",
  • "specversion": "1.0",
  • "subject": "order/a9f5d2d3-5d6d-4e2a-a4b4-6c7f8a9d0f1e",
  • "time": "2023-06-21T12:34:56.123456Z",
  • "twomerchantid": "b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
  • "type": "order.reconciliation.payment_allocated.v1"
}
Response samples
application/json
null

Order CreditedWebhook

Type: order.reconciliation.credited.v1

Occurs when a credit note is applied against an invoice.

Payload

The data object in the payload contains IDs that indicate the order and invoice the credit note has been applied to. Also note the following within the payload:

  • credit_note: Contains information about the credit note itself, including its ID, the amount on the credit note and when the credit note was applied.

Example

{
    "specversion": "1.0",
    "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
    "type": "order.reconciliation.credited.v1",
    "time": "2023-06-21T12:34:56.123456Z",
    "source": "https://api.two.inc",
    "subject": "order/a9f5d2d3-5d6d-4e2a-a4b4-6c7f8a9d0f1e",
    "twomerchantid":"b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
    "data": {
        "root_order_id": "652a57e2-c2de-437b-96a7-2eeac0a37814",
        "order_id": "a9f5d2d3-5d6d-4e2a-a4b4-6c7f8a9d0f1e",
        "invoice_id": "7a5a7b9b-7d9e-4e9e-b9b1-2d7c658e1a4d",
        "merchant_id": "b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
        "billing_period_id": "175bda61-c6f2-4b9d-a429-5f31c83ecc10",
        "amount": "-101.65",
        "currency": "GBP",
        "credit_note": {
            "refund_id": "433401fe-76ae-4e10-b091-59788c90a5df",
            "credited_at": "2023-06-21T12:30:12.012345Z",
            "credit_note_amount": "101.65"
        }
    }
}

Triggering in sandbox

  1. Create and fulfil an order (see the order.reconciliation.invoiced.v1 webhook for details).
  2. Refund the order by using the "Refund order" endpoint from the Two webhooks Postman collection.
  3. Once the refund process is completed, the order.reconciliation.credited.v1 webhook will be sent to any endpoints subscribed to this event.
Request
Request Body schema: application/json
required
required
object (OrderReconciliationCreditedData)

Object describing details about a credit note reconciliation event.

id
required
string (Id)

The event ID. Unique within the source. Can be used to deduplicate events.

Message (string) or Message (null) (Message)

Webhook notification human-friendly message.

source
required
string (Source)

A representation of the event's originating system.

specversion
string (Specversion)
Default: "1.0"

The version of the CloudEvents specification.

Subject (string) or Subject (null) (Subject)

Identifies the entity that the event relates to.

time
required
string <date-time> (Time)

The event timestamp.

Twomerchantid (string) or Twomerchantid (null) (Twomerchantid)

The ID of the merchant that this event relates to.

type
required
string (Type)
Value: "order.reconciliation.credited.v1"
Responses
200

Successful Response

422

Validation Error

Request samples
application/json
{
  • "data": {
    },
  • "datacontenttype": "application/json",
  • "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
  • "source": "https://api.two.inc",
  • "specversion": "1.0",
  • "subject": "order/a9f5d2d3-5d6d-4e2a-a4b4-6c7f8a9d0f1e",
  • "time": "2023-06-21T12:34:56.123456Z",
  • "twomerchantid": "b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
  • "type": "order.reconciliation.credited.v1"
}
Response samples
application/json
null

Order RecoursedWebhook

Type: order.reconciliation.recoursed.v1

Occurs when Two applies the option to recourse an invoice back to the merchant. This may not be applicable to your contract with Two so you may never see recourse events.

Payload

The data object in the payload contains IDs that indicate the order and invoice that have been recoursed. Also note the following child object within the payload:

  • recourse: Contains specific information about the recourse event as recorded in the Two system, including the specific amount that has been recoursed back to the merchant.

Example

{
    "specversion": "1.0",
    "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
    "type": "order.reconciliation.recoursed.v1",
    "time": "2023-06-21T12:34:56.123456Z",
    "source": "https://api.two.inc",
    "subject": "order/a9f5d2d3-5d6d-4e2a-a4b4-6c7f8a9d0f1e",
    "twomerchantid":"b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
    "data": {
        "root_order_id": "652a57e2-c2de-437b-96a7-2eeac0a37814",
        "order_id": "a9f5d2d3-5d6d-4e2a-a4b4-6c7f8a9d0f1e",
        "invoice_id": "7a5a7b9b-7d9e-4e9e-b9b1-2d7c658e1a4d",
        "merchant_id": "b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
        "billing_period_id": "175bda61-c6f2-4b9d-a429-5f31c83ecc10",
        "amount": "-101.65",
        "currency": "GBP",
        "recourse": {
            "recourse_id": "4228e51d-45ba-4a7f-a279-0f332bfead9c",
            "recoursed_at": "2023-06-31T12:34:56.123456",
            "recourse_amount": "101.65"
        }
    }
}

Triggering in sandbox

  1. Create and fulfil an order (see the order.reconciliation.invoiced.v1 webhook for details).
  2. Recourse the order by using "Recourse order" endpoint from the Two webhooks Postman collection.
  3. Once the recourse simulation is completed, the order.reconciliation.recoursed.v1 webhook will be sent to any endpoints subscribed to this event.
Request
Request Body schema: application/json
required
required
object (OrderReconciliationRecoursedData)

Object describing details about a recourse reconciliation event.

id
required
string (Id)

The event ID. Unique within the source. Can be used to deduplicate events.

Message (string) or Message (null) (Message)

Webhook notification human-friendly message.

source
required
string (Source)

A representation of the event's originating system.

specversion
string (Specversion)
Default: "1.0"

The version of the CloudEvents specification.

Subject (string) or Subject (null) (Subject)

Identifies the entity that the event relates to.

time
required
string <date-time> (Time)

The event timestamp.

Twomerchantid (string) or Twomerchantid (null) (Twomerchantid)

The ID of the merchant that this event relates to.

type
required
string (Type)
Value: "order.reconciliation.recoursed.v1"
Responses
200

Successful Response

422

Validation Error

Request samples
application/json
{
  • "data": {
    },
  • "datacontenttype": "application/json",
  • "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
  • "source": "https://api.two.inc",
  • "specversion": "1.0",
  • "subject": "order/a9f5d2d3-5d6d-4e2a-a4b4-6c7f8a9d0f1e",
  • "time": "2023-06-21T12:34:56.123456Z",
  • "twomerchantid": "b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
  • "type": "order.reconciliation.recoursed.v1"
}
Response samples
application/json
null

Order CollectedWebhook

Type: order.reconciliation.collected.v1

Occurs when Two reverts to using a collection agency for recovering any outstanding amounts owed by a buyer for an invoice.

Payload

The data object in the payload contains IDs that indicate the order and invoice that have been sent to the collection agency. Also note the following child object within the payload:

  • collection: Contains specific information about the collection that caused this event, including the amount Two has asked the collection agency to recover.

Example

{
    "specversion": "1.0",
    "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
    "type": "order.reconciliation.collected.v1",
    "time": "2023-06-21T12:34:56.123456Z",
    "source": "https://api.two.inc",
    "subject": "order/a9f5d2d3-5d6d-4e2a-a4b4-6c7f8a9d0f1e",
    "twomerchantid":"b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
    "data": {
        "root_order_id": "652a57e2-c2de-437b-96a7-2eeac0a37814",
        "order_id": "a9f5d2d3-5d6d-4e2a-a4b4-6c7f8a9d0f1e",
        "invoice_id": "7a5a7b9b-7d9e-4e9e-b9b1-2d7c658e1a4d",
        "merchant_id": "b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
        "billing_period_id": "175bda61-c6f2-4b9d-a429-5f31c83ecc10",
        "amount": "-101.65",
        "currency": "GBP",
        "collection": {
            "collection_id": "8d5f0cf6-0aee-4cb3-9723-ee221cdfc681",
            "collected_at": "2023-06-30T12:34:56.123456",
            "collection_amount": "101.65"
        },
    }
}

Triggering in sandbox

  1. Create and fulfil an order (see the order.reconciliation.invoiced.v1 webhook for details).
  2. Send the invoice for this order to collections by using the "Collect order" endpoint from the Two webhooks Postman collection.
  3. Once the collection simulation process is completed, the order.reconciliation.collected.v1 webhook will be sent to any endpoint subscribed to this event.
Request
Request Body schema: application/json
required
required
object (OrderReconciliationCollectedData)

Object describing details about a collection reconciliation event.

id
required
string (Id)

The event ID. Unique within the source. Can be used to deduplicate events.

Message (string) or Message (null) (Message)

Webhook notification human-friendly message.

source
required
string (Source)

A representation of the event's originating system.

specversion
string (Specversion)
Default: "1.0"

The version of the CloudEvents specification.

Subject (string) or Subject (null) (Subject)

Identifies the entity that the event relates to.

time
required
string <date-time> (Time)

The event timestamp.

Twomerchantid (string) or Twomerchantid (null) (Twomerchantid)

The ID of the merchant that this event relates to.

type
required
string (Type)
Value: "order.reconciliation.collected.v1"
Responses
200

Successful Response

422

Validation Error

Request samples
application/json
{
  • "data": {
    },
  • "datacontenttype": "application/json",
  • "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
  • "source": "https://api.two.inc",
  • "specversion": "1.0",
  • "subject": "order/a9f5d2d3-5d6d-4e2a-a4b4-6c7f8a9d0f1e",
  • "time": "2023-06-21T12:34:56.123456Z",
  • "twomerchantid": "b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
  • "type": "order.reconciliation.collected.v1"
}
Response samples
application/json
null

Order VerifiedWebhook

Type: order.verified.v1

Occurs when an order has been successfully verified and is in a fulfillable state.

Payload

The data object in the payload contains order ID, along with the amount and currency.

Example:

{
    "specversion": "1.0",
    "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
    "type": "order.verified.v1",
    "time": "2023-06-21T12:34:56.123456Z",
    "source": "https://api.two.inc",
    "subject": "order/a9f5d2d3-5d6d-4e2a-a4b4-6c7f8a9d0f1e",
    "twomerchantid":"b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
    "data": {
        "order_id": "a9f5d2d3-5d6d-4e2a-a4b4-6c7f8a9d0f1e",
        "merchant_order_id": "999999",
        "merchant_id": "b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
        "gross_amount": "150.65",
        "currency": "GBP"
        "buyer_company_name": "TWO B2B LTD",
    }
}

Triggering in sandbox

  1. Create an order through the checkout API service in your sandbox environment. Capture the order ID from the resulting response.
  2. Open the payment_url in the response body and complete verification (in production, this step would be completed by the buyer).
  3. Once the order state moves from UNVERIFIED to VERIFIED, the order.state.verified.v1 webhook will be sent by the webhook gateway to any endpoints you have configured to receive it.
Request
Request Body schema: application/json
required
required
object (OrderDataBase)

Object describing details about order events.

id
required
string (Id)

The event ID. Unique within the source. Can be used to deduplicate events.

Message (string) or Message (null) (Message)

Webhook notification human-friendly message.

source
required
string (Source)

A representation of the event's originating system.

specversion
string (Specversion)
Default: "1.0"

The version of the CloudEvents specification.

Subject (string) or Subject (null) (Subject)

Identifies the entity that the event relates to.

time
required
string <date-time> (Time)

The event timestamp.

Twomerchantid (string) or Twomerchantid (null) (Twomerchantid)

The ID of the merchant that this event relates to.

type
required
string (Type)
Value: "order.verified.v1"
Responses
200

Successful Response

422

Validation Error

Request samples
application/json
{
  • "data": {
    },
  • "datacontenttype": "application/json",
  • "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
  • "source": "https://api.two.inc",
  • "specversion": "1.0",
  • "subject": "order/a9f5d2d3-5d6d-4e2a-a4b4-6c7f8a9d0f1e",
  • "time": "2023-06-21T12:34:56.123456Z",
  • "twomerchantid": "b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
  • "type": "order.verified.v1"
}
Response samples
application/json
null

Credit Limit UpdatedWebhook

Type: customer.credit_limit.updated.v1

Occurs when the available credit for a merchant's buyer changes.

Payload

The data object in the payload contains identifiers for the buyer organisation, as well as the new available credit limit information. If the credit limit changes such that Two no longer accepts the buyer, the payload may include a reason for the change.

Example

{
    "specversion":"1.0",
    "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
    "type": "customer.credit_limit.updated.v1",
    "time": "2023-06-21T12:34:56.123456Z",
    "source": "https://api.two.inc",
    "subject": "customer/GB/12345678",
    "twomerchantid":"b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
    "data": {
        "buyer_organization_number": "12345678",
        "country": "GB",
        "credit_limit": "1000.00",
        "credit_limit_balance": "800.00",
        "max_single_order_value": "100.00",
        "buyer_is_in_arrears": true,
        "currency": "GBP",
        "credit_approved": false,
        "decline_reason": "Buyer is late on existing active invoices that need to be cleared before they are able to place more orders."
    }
}

Triggering in sandbox

  1. Create and fulfil an order (see the order.reconciliation.invoiced.v1 webhook for details).
  2. Refund the order. You can use the example provided in the Two webhooks Postman collection.
  3. Once the refund is processed, the customer.credit_limit.updated.v1 webhook will be sent to any endpoints subscribed to this event.

Alternatively, you can trigger a simulated credit limit update for a given combination of buyer organisation number, country code and currency using the "Simulate credit limit update" endpoint in the Two webhooks Postman collection.

Request
Request Body schema: application/json
required
required
object (CustomerCreditLimitUpdateData)

Web schema for merchant customer credit limit response.

id
required
string (Id)

The event ID. Unique within the source. Can be used to deduplicate events.

Message (string) or Message (null) (Message)

Webhook notification human-friendly message.

source
required
string (Source)

A representation of the event's originating system.

specversion
string (Specversion)
Default: "1.0"

The version of the CloudEvents specification.

Subject (string) or Subject (null) (Subject)

Identifies the entity that the event relates to.

time
required
string <date-time> (Time)

The event timestamp.

Twomerchantid (string) or Twomerchantid (null) (Twomerchantid)

The ID of the merchant that this event relates to.

type
required
string (Type)
Value: "customer.credit_limit.updated.v1"
Responses
200

Successful Response

422

Validation Error

Request samples
application/json
{
  • "data": {
    },
  • "datacontenttype": "application/json",
  • "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
  • "message": "The credit limit for your customer Example Ltd (12345678) in GB remains at 1000.00 GBP. Their balance has decreased from 1000.00 GBP to 800.00 GBP.",
  • "source": "https://api.two.inc",
  • "specversion": "1.0",
  • "subject": "customer/GB/12345678",
  • "time": "2023-06-21T12:34:56.123456Z",
  • "twomerchantid": "b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
  • "type": "customer.credit_limit.updated.v1"
}
Response samples
application/json
null

Billing Statement IssuedWebhook

Type: billing_statement.created.v1

Occurs when a billing statement is issued.

Payload

The data object in the payload contains details of all invoices and credit notes related to the statement. These credit notes and invoices will all have the same billing_period_id in the credit note issued and invoice issued webhooks, respectively.

Example

{
    "specversion": "1.0",
    "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
    "type": "billing_statement.created.v1",
    "time": "2023-06-21T12:34:56.123456Z",
    "source": "https://api.two.inc",
    "subject": "billing_account/c8b27c7c-3362-4c10-b4e5-7d68c8b554be",
    "twomerchantid":"b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
    "data": {
        "invoices": [
            {
                "root_order_id": "a9f5d2d3-5d6d-4e2a-a4b4-6c7f8a9d0f1e",
                "order_id": "a9f5d2d3-5d6d-4e2a-a4b4-6c7f8a9d0f1e",
                "invoice_id": "7a5a7b9b-7d9e-4e9e-b9b1-2d7c658e1a4d",
                "amount": "190.65",
            },
        ]
        "credit_notes": [
            {
                "refund_id": "433401fe-76ae-4e10-b091-59788c90a5df",
                "credited_amount": "-40.00"
            },
        ]

        "merchant_id": "b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
        "billing_period_id": "175bda61-c6f2-4b9d-a429-5f31c83ecc10",
        "statement_number": "1004",
        "payment_reference": "234234234",
        "gross_amount": "150.65",
        "outstanding_amount": "120.65",
        "currency": "GBP"
        "due_date": "2023-06-21T12:34:56.123456Z",
        "issue_date": "2023-06-05T12:34:56.123456Z",
        "billing_account_id": "c8b27c7c-3362-4c10-b4e5-7d68c8b554be",
    }
}

Triggering in sandbox

  1. Create a billing account using the billing account API. This is also available in the Two webhooks Postman collection. Note the ID of the billing account returned in the response to use in the next step.
  2. Create an order and use the billing account ID returned in the response from step 1 in the "billing_account_id": "<id>" field in the body of the request.
  3. Fulfil the order (see the order.reconciliation.invoiced.v1 for details).
  4. (Optional) If you want to include multiple orders in the statement, repeat steps 2 and 3 to create multiple fulfilled orders for the same billing account.
  5. Create a statement by using the "Simulate close billing statement" endpoint from the Two webhooks Postman collection.
  6. One the billing statement has been issued, the billing_statement.created.v1 webhook will be sent to any endpoints subscribed to this event.
Request
Request Body schema: application/json
required
required
object (BillingStatementEventData)

Object describing the details of this billing statement.

id
required
string (Id)

The event ID. Unique within the source. Can be used to deduplicate events.

Message (string) or Message (null) (Message)

Webhook notification human-friendly message.

source
required
string (Source)

A representation of the event's originating system.

specversion
string (Specversion)
Default: "1.0"

The version of the CloudEvents specification.

Subject (string) or Subject (null) (Subject)

Identifies the entity that the event relates to.

time
required
string <date-time> (Time)

The event timestamp.

Twomerchantid (string) or Twomerchantid (null) (Twomerchantid)

The ID of the merchant that this event relates to.

type
required
string (Type)
Value: "billing_statement.created.v1"
Responses
200

Successful Response

422

Validation Error

Request samples
application/json
{
  • "data": {
    },
  • "datacontenttype": "application/json",
  • "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
  • "source": "https://api.two.inc",
  • "specversion": "1.0",
  • "subject": "billing_account/<billing_account_id>",
  • "time": "2023-06-21T12:34:56.123456Z",
  • "twomerchantid": "b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
  • "type": "billing_statement.created.v1"
}
Response samples
application/json
null

Business Registry ApprovedWebhook

Type: business_registry.approved.v1

Occurs when a proposal to enroll a new business (e.g. a sole trader) has been approved, the enrollment has been completed, and the new business is ready for ordering/trade account creation/etc.

Payload

The data object in the payload contains the following:

  • is your unique identifier within TWO's system
  • is the identifier of the proposal that has been approved. You may retrieve this proposal via the Business Registration API.
  • is the synthetic organization number generated by TWO for the newly enrolled business. Use this organization number when creating trade accounts, orders or other assets on behalf of the buyer.

Example

{
    "specversion": "1.0",
    "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
    "type": "business_registry.approved.v1",
    "time": "2023-06-21T12:34:56.123456Z",
    "source": "https://api.two.inc",
    "subject": "business_registry",
    "twomerchantid":"b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
    "data": {
        "proposal_id": "558f57b4-8161-4765-a73e-a67d73f9c245",
        "merchant_id": "1eb39178-c652-4784-9eee-af7e25b28a4c",
        "organization_number": "1234567",
    }
}

Triggering in sandbox

This webhook object is emitted whenever a proposal is approved. In the sandbox environment, proposals are automatically approved immediately on submission. To prompt Two to emit an example of this object, simply create and then submit a proposal.

Request
Request Body schema: application/json
required
required
object (EnrollmentApprovedEventData)
id
required
string (Id)

The event ID. Unique within the source. Can be used to deduplicate events.

Message (string) or Message (null) (Message)

Webhook notification human-friendly message.

source
required
string (Source)

A representation of the event's originating system.

specversion
string (Specversion)
Default: "1.0"

The version of the CloudEvents specification.

Subject (string) or Subject (null) (Subject)

Identifies the entity that the event relates to.

time
required
string <date-time> (Time)

The event timestamp.

Twomerchantid (string) or Twomerchantid (null) (Twomerchantid)

The ID of the merchant that this event relates to.

type
required
string (Type)
Value: "business_registry.approved.v1"
Responses
200

Successful Response

422

Validation Error

Request samples
application/json
{
  • "data": {
    },
  • "datacontenttype": "application/json",
  • "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
  • "source": "https://api.two.inc",
  • "specversion": "1.0",
  • "subject": "business_registry",
  • "time": "2023-06-21T12:34:56.123456Z",
  • "twomerchantid": "b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
  • "type": "business_registry.approved.v1"
}
Response samples
application/json
null

Business Registry RejectedWebhook

Type: business_registry.rejected.v1

Occurs when a proposal to enroll a new business (e.g. a sole trader) has been rejected or withdrawn.

Payload

The data object in the payload contains the following:

  • is your unique identifier within TWO's system
  • is the identifier of the proposal that has been rejected. You may retrieve this proposal via the Business Registration API.
  • is the detailed reason why this proposal was rejected.

Example

{
    "specversion": "1.0",
    "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
    "type": "business_registry.rejected.v1",
    "time": "2023-06-21T12:34:56.123456Z",
    "source": "https://api.two.inc",
    "subject": "business_registry",
    "twomerchantid":"b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
    "data": {
         "proposal_id": "558f57b4-8161-4765-a73e-a67d73f9c245",
         "rejection_reason": "Some reason",
         "merchant_id": "1eb39178-c652-4784-9eee-af7e25b28a4c",
    }
}

Triggering in sandbox

This webhook object is emitted whenever a proposal is rejected or withdrawn. To prompt Two to emit an example of this object, simply create and then withdraw a proposal.

Request
Request Body schema: application/json
required
required
object (EnrollmentRejectedEventData)
id
required
string (Id)

The event ID. Unique within the source. Can be used to deduplicate events.

Message (string) or Message (null) (Message)

Webhook notification human-friendly message.

source
required
string (Source)

A representation of the event's originating system.

specversion
string (Specversion)
Default: "1.0"

The version of the CloudEvents specification.

Subject (string) or Subject (null) (Subject)

Identifies the entity that the event relates to.

time
required
string <date-time> (Time)

The event timestamp.

Twomerchantid (string) or Twomerchantid (null) (Twomerchantid)

The ID of the merchant that this event relates to.

type
required
string (Type)
Value: "business_registry.rejected.v1"
Responses
200

Successful Response

422

Validation Error

Request samples
application/json
{
  • "data": {
    },
  • "datacontenttype": "application/json",
  • "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
  • "source": "https://api.two.inc",
  • "specversion": "1.0",
  • "subject": "business_registry",
  • "time": "2023-06-21T12:34:56.123456Z",
  • "twomerchantid": "b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
  • "type": "business_registry.rejected.v1"
}
Response samples
application/json
null

Instalments InvoicedWebhook

Type: instalments.invoiced.v1

Occurs when an invoice including one or more instalments is created.

Payload

The data object in the payload contains IDs that indicate the invoice that has been created and the associated merchant and instalment plan. Also note the following child objects within the payload:

  • tax_subtotals: Contains specific information about the tax subtotals of the invoice.
  • instalments: Contains specific information about the instalments comprising the invoice.

Example

{
    "specversion": "1.0",
    "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
    "type": "instalments.invoiced.v1",
    "time": "2023-06-21T12:34:56.123456",
    "source": "webhooks.two.inc",
    "subject": "instalment_account/044d6cf0-0f51-11ec-82a8-0242ac130003",
    "twomerchantid":"b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
    "data": {
        "invoice_id": "e39f3206-0f94-4b9d-9f8f-1b2bae1e2bc9",
        "merchant_id": "b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
        "issue_date": "2023-06-05T12:34:56.123456",
        "due_date": "2023-06-05T12:34:56.123456",
        "invoice_number": "90000001",
        "instalment_account_id": "044d6cf0-0f51-11ec-82a8-0242ac130003",
        "gross_amount": "1000.00",
        "tax_subtotals": [
            {
                "tax_rate": "0.250000",
                "taxable_amount": "500.00",
                "tax_amount": "125.00"
            },
            {
                "tax_rate": "0.000000",
                "taxable_amount": "500.00",
                "tax_amount": "0.00"
            }
        ],
        "instalments": [
            {
                "plan_id": "b6c9de3c-5d51-4a9d-89b1-63e1a9f7c5e5",
                "instalment_id": "a0f4bc40-8c5d-4b80-8c40-7d1f0b5a1f74"
            },
            {
                "plan_id": "ff6b6e3e-5e0e-4d27-bc62-4e5a3a80e7f4",
                "instalment_id": "d2f5f79b-1e5a-4fe3-9e53-0b3a4b2c1c1b"
            }
        ]
    }
}
Request
Request Body schema: application/json
required
required
object (InstalmentsInvoicedEventData)
id
required
string (Id)

The event ID. Unique within the source. Can be used to deduplicate events.

Message (string) or Message (null) (Message)

Webhook notification human-friendly message.

source
required
string (Source)

A representation of the event's originating system.

specversion
string (Specversion)
Default: "1.0"

The version of the CloudEvents specification.

Subject (string) or Subject (null) (Subject)

Identifies the entity that the event relates to.

time
required
string <date-time> (Time)

The event timestamp.

Twomerchantid (string) or Twomerchantid (null) (Twomerchantid)

The ID of the merchant that this event relates to.

type
required
string (Type)
Value: "instalments.invoiced.v1"
Responses
200

Successful Response

422

Validation Error

Request samples
application/json
{
  • "data": {
    },
  • "datacontenttype": "application/json",
  • "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
  • "source": "webhooks.two.inc",
  • "specversion": "1.0",
  • "subject": "instalment_acccount/044d6cf0-0f51-11ec-82a8-0242ac130003",
  • "time": "2023-06-21T12:34:56.123456",
  • "twomerchantid": "b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
  • "type": "instalments.invoiced.v1"
}
Response samples
application/json
null

Customer User VerifiedWebhook

Type: customer.user.verified.v1

Occurs when a customer user successfully completes verification

Payload

The data object in the payload contains IDs that indicate your merchant_user_id that has been verified and your associated merchant_customer_id

Example

{
    "specversion":"1.0",
    "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
    "type": "customer.user.verified.v1",
    "time": "2023-06-21T12:34:56.123456Z",
    "source": "https://api.two.inc",
    "subject": "customer/user/external-user-id-123",
    "twomerchantid":"b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
    "data": {
        "merchant_id": "12345678",
        "merchant_customer_id": "external-customer-123",
        "merchant_user_id": "external-user-id-123",
}

Triggering in sandbox

  1. Follow docs to create business customer and business customer user.
  2. Follow the user_verification_url returned from Create customer user record to verify user.
  3. Once the verification process is completed successfully, the customer.user.verified.v1 webhook will be sent to any endpoints subscribed to this event.
Request
Request Body schema: application/json
required
required
object (CustomerUserVerifiedData)

Web schema for merchant customer user verified response.

id
required
string (Id)

The event ID. Unique within the source. Can be used to deduplicate events.

Message (string) or Message (null) (Message)

Webhook notification human-friendly message.

source
required
string (Source)

A representation of the event's originating system.

specversion
string (Specversion)
Default: "1.0"

The version of the CloudEvents specification.

Subject (string) or Subject (null) (Subject)

Identifies the entity that the event relates to.

time
required
string <date-time> (Time)

The event timestamp.

Twomerchantid (string) or Twomerchantid (null) (Twomerchantid)

The ID of the merchant that this event relates to.

type
required
string (Type)
Value: "customer.user.verified.v1"
Responses
200

Successful Response

422

Validation Error

Request samples
application/json
{
  • "data": {
    },
  • "datacontenttype": "application/json",
  • "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
  • "source": "https://api.two.inc",
  • "specversion": "1.0",
  • "subject": "customer/614d1ba5-1b38-4203-b783-2e6a5ecb82d0/user/3fee121e-2f31-40de-97f6-613345fda4e2",
  • "time": "2023-06-21T12:34:56.123456Z",
  • "twomerchantid": "b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
  • "type": "customer.user.verified.v1"
}
Response samples
application/json
null

Merchant Payee Account ActivatedWebhook

Type: merchant.payee_account.activated.v1

Occurs when a payee account for a given country and invoice type for a merchant is activated

Payload

The data object in the payload contains data that indicates a merchant has been activated. Payload will include merchant_id, merchant_legal_name, merchant_country_code of merchant and country code and invoice type of activated payee account.

Example

{
    "specversion":"1.0",
    "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
    "type": "merchant.payee_account.activated.v1",
    "time": "2023-06-21T12:34:56.123456Z",
    "source": "https://api.two.inc",
    "subject": "merchant/b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
    "twomerchantid":"b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
    "data": {
        "merchant_id": "b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
        "merchant_legal_name": "Example Merchant Ltd",
        "merchant_country_code": "GB",
        "payee_account_country_code": "GB",
        "payee_account_invoice_type": "FUNDED_INVOICE",
}

Triggering in sandbox

This webhook object is emitted whenever a new active payee account for country code and invoice type for a merchant is activated and the country invoice type combination has no other active payee accounts. Use case is for merchants activating a new payee account for a country and invoice type to inform partner merchant of activation.

Request
Request Body schema: application/json
required
required
object (MerchantPayeeAccountActivatedEventData)

Web schema for merchant activation response.

id
required
string (Id)

The event ID. Unique within the source. Can be used to deduplicate events.

Message (string) or Message (null) (Message)

Webhook notification human-friendly message.

source
required
string (Source)

A representation of the event's originating system.

specversion
string (Specversion)
Default: "1.0"

The version of the CloudEvents specification.

Subject (string) or Subject (null) (Subject)

Identifies the entity that the event relates to.

time
required
string <date-time> (Time)

The event timestamp.

Twomerchantid (string) or Twomerchantid (null) (Twomerchantid)

The ID of the merchant that this event relates to.

type
required
string (Type)
Value: "merchant.payee_account.activated.v1"
Responses
200

Successful Response

422

Validation Error

Request samples
application/json
{
  • "data": {
    },
  • "datacontenttype": "application/json",
  • "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
  • "source": "https://api.two.inc",
  • "specversion": "1.0",
  • "subject": "merchant/614d1ba5-1b38-4203-b783-2e6a5ecb82d0",
  • "time": "2023-06-21T12:34:56.123456Z",
  • "twomerchantid": "614d1ba5-1b38-4203-b783-2e6a5ecb82d0",
  • "type": "merchant.payee_account.activated.v1"
}
Response samples
application/json
null

Customer In ArrearsWebhook

Type: customer.in_arrears_block.v1

Occurs for the first 7 days when a customer enters into arrears, meaning they have an unpaid invoice that is more than 28 days past due and are now unable to place orders until they repay their most overdue invoices that meet this past 28 days condition

Payload

The data object in the payload contains data that indicates the customer details who has entered into arrears, and further details on the invoices that are most overdue if they belong to this merchant

Example

{
    "specversion": "1.0",
    "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
    "type": "customer.in_arrears_block.v1",
    "time": "2023-06-21T12:34:56.123456Z",
    "source": "https://api.two.inc",
    "subject": "in_arrears_block",
    "twomerchantid": "b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
    "message": (
        "Two B2b LTD (13078389) is now in arrears."
        "Please see the details for the invoice that is due the earliest"
    ),
    "data": {
        "buyer_company_name": "Two B2b LTD",
        "buyer_organization_number": "13078389",
        "days_in_arrears": 5,
        "earliest_invoice_due_belongs_to_merchant": True,
        "earliest_invoice_number": "123123",
        "earliest_invoice_due_date": "2024-05-05",
        "earliest_invoice_gross_amount": 100.0,
        "earliest_invoice_currency": "GBP"
    }
}

Triggering in sandbox

There is no active trigger to send this webhook as it runs as a cronjob on a daily schedule if the arrears conditions are met for any customer from this merchant. The SVIX portal however allows for test events to be sent to a given endpoint

Request
Request Body schema: application/json
required
required
object (CustomerInArrearsEventData)

Data payload of a customer in arrears event.

id
required
string (Id)

The event ID. Unique within the source. Can be used to deduplicate events.

Message (string) or Message (null) (Message)

Webhook notification human-friendly message.

source
required
string (Source)

A representation of the event's originating system.

specversion
string (Specversion)
Default: "1.0"

The version of the CloudEvents specification.

Subject (string) or Subject (null) (Subject)

Identifies the entity that the event relates to.

time
required
string <date-time> (Time)

The event timestamp.

Twomerchantid (string) or Twomerchantid (null) (Twomerchantid)

The ID of the merchant that this event relates to.

type
required
string (Type)
Value: "customer.in_arrears_block.v1"
Responses
200

Successful Response

422

Validation Error

Request samples
application/json
{
  • "data": {
    },
  • "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
  • "message": "Two B2b LTD (13078389) is now in arrears. Please see the details for the invoice that is due the earliest",
  • "source": "https://api.two.inc",
  • "specversion": "1.0",
  • "subject": "in_arrears_block",
  • "time": "2023-06-21T12:34:56.123456Z",
  • "twomerchantid": "b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
  • "type": "customer.in_arrears_block.v1"
}
Response samples
application/json
null

Customer Approaching ArrearsWebhook

Type: customer.approaching_arrears_block.v1

Starts occurring 7 days before a customer enters into arrears, meaning they have an unpaid invoice that is than 21 days or more past due and are about to be unable to place orders until they repay their most overdue invoices that meet this past 28 days condition

Payload

The data object in the payload contains data that indicates the customer details who is about to enter into arrears, and further details on the invoices that are most overdue if they belong to this merchant

Example

{
    "specversion": "1.0",
    "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
    "type": "customer.approaching_arrears_block.v1",
    "time": "2023-06-21T12:34:56.123456Z",
    "source": "https://api.two.inc",
    "subject": "approaching_arrears_block",
    "twomerchantid": "b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
    "message": (
        "Two B2b LTD (13078389)  is approaching arrears with another "
        f"merchant in 5 days. Please encourage them to repay any severely "
        "overdue invoices they have to be able to place orders on your website again""
    ),
    "data": {
        "buyer_company_name": "Two B2b LTD",
        "buyer_organization_number": "13078389",
        "days_until_arrears": 5,
        "earliest_invoice_due_belongs_to_merchant": False,
        "earliest_invoice_number": None,
        "earliest_invoice_due_date": None,
        "earliest_invoice_gross_amount": None,
        "earliest_invoice_currency": None
    }
}

Triggering in sandbox

There is no active trigger to send this webhook as it runs as a cronjob on a daily schedule if the arrears conditions are met for any customer from this merchant. The SVIX portal however allows for test events to be sent to a given endpoint

Request
Request Body schema: application/json
required
required
object (CustomerApproachingArrearsEventData)

Data payload of a customer in arrears event.

id
required
string (Id)

The event ID. Unique within the source. Can be used to deduplicate events.

Message (string) or Message (null) (Message)

Webhook notification human-friendly message.

source
required
string (Source)

A representation of the event's originating system.

specversion
string (Specversion)
Default: "1.0"

The version of the CloudEvents specification.

Subject (string) or Subject (null) (Subject)

Identifies the entity that the event relates to.

time
required
string <date-time> (Time)

The event timestamp.

Twomerchantid (string) or Twomerchantid (null) (Twomerchantid)

The ID of the merchant that this event relates to.

type
required
string (Type)
Value: "customer.approaching_arrears_block.v1"
Responses
200

Successful Response

422

Validation Error

Request samples
application/json
{
  • "data": {
    },
  • "id": "01FBJ0PYJ7931K0CJ6GMP8N3WG",
  • "message": "TWO B2B AS (1307839) is approaching arrears with another merchant in 2 days. Please encourage them to repay any severely overdue invoices they have to be able to place orders on your website again",
  • "source": "https://api.two.inc",
  • "specversion": "1.0",
  • "subject": "approaching_arrears_block",
  • "time": "2023-06-21T12:34:56.123456Z",
  • "twomerchantid": "b6b9d5d1-f6b7-4e15-9703-9c32c6e5c1c2",
  • "type": "customer.approaching_arrears_block.v1"
}
Response samples
application/json
null