v1

latestOpenAPI 3.1.02026-07-2469193340.0 KB
Agreements

Add a KYC Agreement

Create an Agreement against a KYC-trusted account holder's bank account.

The calling account must be flagged as kyc_trusted. If it is not, a 400 Bad Request will be returned with must_be_kyc_trusted.

When the optional bank connection attributes (basiq_user_id, basiq_connection_id, proviso_reference, credit_sense_app_id) are provided, the Agreement is created in the unverified state and bank connection verification is queued asynchronously. When verification succeeds the Agreement transitions to accepted; when it fails the Agreement transitions to declined and the failure reason is recorded on status_reason. The verification outcome is not reflected in this endpoint's response - listen for the corresponding agreement.accepted or agreement.declined webhook to observe the final state.

When no bank connection attributes are provided, the Agreement is auto-accepted before the response is returned.

post/agreements/kyc

Headers

Zepto-API-Versionstring
Example:20260101

API version in YYYYMMDD format. Defaults to 20250101 (legacy) when omitted.

Request body

metadataobject

Your custom keyed data attached to the Agreement.

Example request

{
  "authoriser": {
    "name": "Jane Doe",
    "email": "jane.doe@example.com",
    "bank_account": {
      "branch_code": "123458",
      "account_number": "77564441"
    }
  },
  "terms": {
    "per_payout": {
      "min_amount": null,
      "max_amount": null
    },
    "per_frequency": {
      "days": null,
      "max_amount": null
    }
  }
}

Response

OK

Example response

{
  "data": {
    "ref": "A.2",
    "initiator_id": "4e2728cc-b4ba-42c2-a6c3-26a7758de58d",
    "authoriser_id": "8df89c16-330f-462b-8891-808d7bdceb7f",
    "contact_id": "0d290763-bd5a-4b4d-a8ce-06c64c4a697b",
    "bank_account_id": "fb9381ec-22af-47fd-8998-804f947aaca3",
    "status": "accepted",
    "status_reason": null,
    "responded_at": "2026-05-11T02:13:11Z",
    "created_at": "2026-05-11T00:53:27Z",
    "terms": {
      "per_payout": {
        "max_amount": null,
        "min_amount": null
      },
      "per_frequency": {
        "days": null,
        "max_amount": null
      }
    },
    "open_agreement_id": null
  }
}