Every API here is available over the APIs.io API and to AI agents over MCP.
{
"openapi": "3.0.3",
"info": {
"title": "Buyer Management",
"description": "Management of buyers and their associated details. Provides additional fraud management capabilities around whitelisting and self cure. ",
"version": "2.0.0",
"contact": {
"email": "partnership-growth@getbread.com"
}
},
"servers": [
{
"url": "https://api-preview.platform.breadpayments.com/",
"description": "Preview environment"
},
{
"url": "https://api.platform.breadpayments.com/",
"description": "Production environment"
}
],
"paths": {
"/api/buyer": {
"post": {
"security": [
{
"bearerAuthBuyer": [
"c:buyer",
"c:buyer.unverified",
"u:buyer"
]
}
],
"description": "Allows a user to register a buyer, which may result in creating a new buyer (201 Created) or updating an existing buyer (200 OK), depending on identity matching.\n\nIf a new buyer is created:\n- Values for name, phone, and email found in the request payload will automatically create a contact and set that contactID as the primaryContactID. The address on this contact will not be populated and must be updated via the appropriate endpoint.\n- Status and substatus are both set to \"Active\".\n\nIf an existing buyer is updated:\n- See \"Update a buyer\" for additional details on updating.\n- Partial updates are not supported. The user of this API must supply all buyer fields in order to avoid omitted fields being deleted.\n\n**JWT Claim Authorization:**\n**TenantID**: Required (non-nil); scopes the created buyer to the caller's tenant.\n**MerchantID**: Read from token; included in the request context.\n**Response scoping**: `reportIIN` and `IIN` are redacted from the response unless the `r:buyer.confidential` scope is present.",
"x-operation-details": {
"summary": "Allows a user to register a buyer, which may result in creating a new buyer (201 Created) or updating an existing buyer (200 OK), depending on identity matching.",
"behavior": [
{
"when": "If a new buyer is created",
"details": [
"Values for name, phone, and email found in the request payload will automatically create a contact and set that contactID as the primaryContactID. The address on this contact will not be populated and must be updated via the appropriate endpoint.",
"Status and substatus are both set to \"Active\"."
]
},
{
"when": "If an existing buyer is updated",
"details": [
"See \"Update a buyer\" for additional details on updating.",
"Partial updates are not supported. The user of this API must supply all buyer fields in order to avoid omitted fields being deleted."
]
}
],
"authorization": [
{
"claim": "TenantID",
"description": "Required (non-nil); scopes the created buyer to the caller's tenant."
},
{
"claim": "MerchantID",
"description": "Read from token; included in the request context."
}
],
"scoping": [
"`reportIIN` and `IIN` are redacted from the response unless the `r:buyer.confidential` scope is present."
]
},
"tags": [
"Buyer"
],
"summary": "Register a buyer",
"operationId": "registerBuyer",
"requestBody": {
"content": {
"application/json": {
"schema": {
"description": "Buyer represents a buyer",
"type": "object",
"required": [
"contacts",
"createdAt",
"id",
"identity",
"languagePreference",
"primaryContactID",
"tenantID",
"updatedAt"
],
"properties": {
"activeAuthorizedThirdParties": {
"description": "Subresource of buyer and acted on with its own set of endpoints",
"type": "array",
"items": {
"description": "AuthorizedThirdParty represents a person who is allowed to perform\ncertain actions on behalf of the buyer",
"type": "object",
"required": [
"name",
"phone"
],
"properties": {
"buyerID": {
"description": "The ID of the buyer on whose behalf this authorized third party is allowed to act.",
"type": "string",
"format": "uuid",
"example": "ae487b2e-c4fc-48a6-8cd5-88507cba82bb",
"readOnly": true
},
"consentToCall": {
"description": "Whether this authorized third party has consented to receive calls.",
"type": "boolean",
"default": false
},
"consentToEmail": {
"description": "Whether this authorized third party has consented to receive emails.",
"type": "boolean",
"default": false
},
"consentToText": {
"description": "Whether this authorized third party has consented to receive text messages.",
"type": "boolean",
"default": false
},
"createdAt": {
"description": "Time this entity was created.",
"allOf": [
{
"type": "string",
"format": "date-time",
"description": "The timestamp value formatted per RFC3339. This does not allow nulls.",
"example": "2020-12-31T15:10:55Z",
"externalDocs": {
"description": "RFC3339",
"url": "https://datatracker.ietf.org/doc/html/rfc3339#section-5.6"
}
}
]
},
"email": {
"description": "Email address.",
"allOf": [
{
"type": "string",
"format": "email",
"description": "Email address",
"example": "john.doe@gmail.com"
}
]
},
"id": {
"description": "Unique ID associated with this authorized third party.",
"type": "string",
"format": "uuid",
"readOnly": true
},
"isActive": {
"description": "Indicates whether this authorized third party is active.",
"type": "boolean",
"default": false
},
"name": {
"description": "Full name.",
"allOf": [
{
"required": [
"familyName",
"givenName"
],
"type": "object",
"properties": {
"givenName": {
"type": "string",
"description": "Given name",
"example": "John"
},
"familyName": {
"type": "string",
"description": "Family name",
"example": "Doe"
},
"additionalName": {
"type": "string",
"description": "Additional name, if any"
}
},
"description": "Represents the full name"
}
]
},
"phone": {
"description": "Phone number.",
"allOf": [
{
"type": "string",
"description": "Telephone number including country code",
"example": "+14539842345"
}
]
},
"powerOfAttorney": {
"description": "Indicates whether this authorized third party has power of attorney for the associated buyer. Power of attorney legally grants a third party the ability to represent the buyer in private affairs.",
"type": "boolean",
"default": false
},
"attorneyRepresentation": {
"description": "Indicates whether this authorized third party is an attorney acting on behalf of the buyer.",
"type": "boolean",
"default": false
},
"type": {
"description": "AuthorizedThirdPartyType represents a authorized third party type as enum\nPossible values: `AUTHORIZED_THIRD_PARTY`, `POWER_OF_ATTORNEY`, `ATTORNEY_REPRESENTATION`, `GUARDIANSHIP`",
"type": "string"
},
"phoneType": {
"description": "PhoneType represents a phone type as enum\nPossible values: `MOBILE`, `WORK`, `HOME`, `OTHER`",
"type": "string"
},
"updatedAt": {
"description": "Time this entity was last updated.",
"allOf": [
{
"type": "string",
"format": "date-time",
"description": "The timestamp value formatted per RFC3339. This does not allow nulls.",
"example": "2020-12-31T15:10:55Z",
"externalDocs": {
"description": "RFC3339",
"url": "https://datatracker.ietf.org/doc/html/rfc3339#section-5.6"
}
}
]
}
}
}
},
"contacts": {
"description": "BuyerContactMap represents a mapping of buyer contact IDs to contacts",
"type": "object",
"additionalProperties": {
"description": "BuyerContact represents a set of contact information.",
"type": "object",
"required": [
"name",
"email",
"phone"
],
"properties": {
"address": {
"required": [
"address1",
"locality",
"postalCode",
"region",
"country"
],
"type": "object",
"properties": {
"address1": {
"type": "string",
"description": "First address line",
"example": "156 5th Avenue"
},
"address2": {
"type": "string",
"description": "Second address line"
},
"locality": {
"type": "string",
"description": "The locality (e.g. City) of the address.",
"example": "New York"
},
"postalCode": {
"type": "string",
"description": "The administrative postal code (e.g. Zip Code)",
"example": "10019"
},
"region": {
"type": "string",
"description": "The region or first-level administration division (e.g. State/Province) of the address.",
"example": "US-NY",
"minLength": 2,
"externalDocs": {
"description": "ISO-3166-2",
"url": "https://en.wikipedia.org/wiki/ISO_3166-2"
}
},
"country": {
"type": "string",
"description": "The two character ISO-3166-1 country code.",
"example": "US",
"minLength": 2,
"maxLength": 2,
"externalDocs": {
"description": "ISO-3166-1",
"url": "https://en.wikipedia.org/wiki/ISO_3166-1"
}
},
"addressType": {
"description": "Represents the type of address.",
"type": "string",
"readOnly": true,
"enum": [
"Firm",
"GeneralDelivery",
"HighRise",
"POBox",
"RuralRoute",
"Street",
"NoMatch",
"InternationalNone",
"InternationalAdministrativeArea",
"InternationalLocality",
"InternationalThoroughfare",
"InternationalPremise",
"InternationalDeliveryPoint",
"Other",
""
],
"example": "Firm"
}
},
"description": "Represents a fully defined address for an entity"
},
"buyerID": {
"description": "ID of the buyer associated with this contact.",
"type": "string",
"format": "uuid",
"example": "c3f8e97b-2d09-4cb8-a41e-c5b635b0f1e3",
"readOnly": true
},
"contactType": {
"description": "Optional. Represents the type of contact.",
"type": "string",
"enum": [
"PRIMARY",
"HOME",
"WORK",
"OTHER",
"BILLING",
"SHIPPING",
""
],
"example": "PRIMARY"
},
"createdAt": {
"description": "Time this entity was created.",
"allOf": [
{
"type": "string",
"format": "date-time",
"description": "The timestamp value formatted per RFC3339. This does not allow nulls.",
"example": "2020-12-31T15:10:55Z",
"externalDocs": {
"description": "RFC3339",
"url": "https://datatracker.ietf.org/doc/html/rfc3339#section-5.6"
}
}
],
"readOnly": true
},
"email": {
"description": "Email address.",
"allOf": [
{
"type": "string",
"format": "email",
"description": "Email address",
"example": "john.doe@gmail.com"
}
]
},
"id": {
"description": "Unique ID associated with this contact.",
"type": "string",
"format": "uuid",
"example": "f322210a-e814-4b1b-a8bf-007a3e765bb9",
"readOnly": true
},
"name": {
"description": "Full name.",
"allOf": [
{
"required": [
"familyName",
"givenName"
],
"type": "object",
"properties": {
"givenName": {
"type": "string",
"description": "Given name",
"example": "John"
},
"familyName": {
"type": "string",
"description": "Family name",
"example": "Doe"
},
"additionalName": {
"type": "string",
"description": "Additional name, if any"
}
},
"description": "Represents the full name"
}
]
},
"phone": {
"description": "Phone number.",
"allOf": [
{
"type": "string",
"description": "Telephone number including country code",
"example": "+14539842345"
}
]
},
"updatedAt": {
"description": "Time this entity was last updated.",
"allOf": [
{
"type": "string",
"format": "date-time",
"description": "The timestamp value formatted per RFC3339. This does not allow nulls.",
"example": "2020-12-31T15:10:55Z",
"externalDocs": {
"description": "RFC3339",
"url": "https://datatracker.ietf.org/doc/html/rfc3339#section-5.6"
}
}
],
"readOnly": true
}
}
}
},
"createdAt": {
"description": "Read-only. Time this entity was created.",
"allOf": [
{
"type": "string",
"format": "date-time",
"description": "The timestamp value formatted per RFC3339. This does not allow nulls.",
"example": "2020-12-31T15:10:55Z",
"externalDocs": {
"description": "RFC3339",
"url": "https://datatracker.ietf.org/doc/html/rfc3339#section-5.6"
}
}
],
"readOnly": true
},
"employment": {
"description": "Optional. Employment represents the buyer's employment.",
"type": "object",
"required": [
"type"
],
"properties": {
"annualIncome": {
"description": "Optional. The buyer's annual income in cents.",
"type": "integer",
"format": "int64",
"example": 10000
},
"companyAddress": {
"description": "Required if employment type is `EMPLOYED` or `SELF_EMPLOYED`",
"type": "string"
},
"companyName": {
"description": "Required if employment type is `EMPLOYED` or `SELF_EMPLOYED`",
"type": "string"
},
"currency": {
"description": "Required if annual income exists",
"allOf": [
{
"type": "string",
"description": "The three letter currency code as defined in ISO 4217.",
"example": "USD",
"minLength": 3,
"maxLength": 3,
"externalDocs": {
"description": "ISO 4217",
"url": "https://en.wikipedia.org/wiki/ISO_4217"
}
}
]
},
"description": {
"description": "Optional. Employment description.",
"type": "string"
},
"occupation": {
"description": "Required if employment type is `EMPLOYED` or `SELF_EMPLOYED`",
"type": "string"
},
"occupationDescription": {
"description": "Required if occupation is \"Other\"",
"type": "string"
},
"type": {
"description": "EmploymentType represents a buyer employment type as enum\nPossible values: `EMPLOYED`, `SELF_EMPLOYED`, `UNEMPLOYED`, `STUDENT`, `RETIRED`",
"type": "string"
}
}
},
"id": {
"description": "Unique ID associated with this buyer.",
"type": "string",
"format": "uuid",
"example": "c3f8e97b-2d09-4cb8-a41e-c5b635b0f1e3",
"readOnly": true
},
"identity": {
"description": "Identity represents the identity of a buyer",
"type": "object",
"required": [
"name",
"email",
"phone"
],
"properties": {
"birthDate": {
"description": "Optional - if provided, date must be within valid range\nEx. 1900-01-01",
"allOf": [
{
"type": "string",
"format": "date",
"description": "The date value formatted per RFC3339. This does not allow nulls.",
"example": "2020-12-31",
"externalDocs": {
"description": "RFC3339",
"url": "https://datatracker.ietf.org/doc/html/rfc3339#section-5.6"
}
}
]
},
"birthDateUpdatedAt": {
"description": "Time this birth-date was updated.",
"allOf": [
{
"type": "string",
"format": "date-time",
"description": "The timestamp value formatted per RFC3339. This does not allow nulls.",
"example": "2020-12-31T15:10:55Z",
"externalDocs": {
"description": "RFC3339",
"url": "https://datatracker.ietf.org/doc/html/rfc3339#section-5.6"
}
}
]
},
"email": {
"description": "Email address.",
"allOf": [
{
"type": "string",
"format": "email",
"description": "Email address",
"example": "john.doe@gmail.com"
}
]
},
"emailDuplicate": {
"description": "Indicates whether this email is verified on another buyer.",
"type": "boolean",
"readOnly": true
},
"emailVerified": {
"description": "Indicates whether this email has been verified as belonging to this buyer. Write access to this field is limited based on authorization.",
"type": "boolean"
},
"iin": {
"description": "Optional. The Individual Identification Number of this buyer.\nRead access limited based on authorization.\nWrite access limited based on authorization unless no value currently exists.",
"type": "string"
},
"hasIIN": {
"description": "Indicates whether a full IIN has been provided for this buyer.",
"type": "boolean",
"readOnly": true
},
"iinShort": {
"description": "Optional. The short form of the buyer's Individual Identification Number. Will always match full IIN if full IIN exists.\nWrite access limited based on authorization unless no value currently exists.",
"type": "string"
},
"iinUpdatedAt": {
"description": "Time this iin was updated.",
"allOf": [
{
"type": "string",
"format": "date-time",
"description": "The timestamp value formatted per RFC3339. This does not allow nulls.",
"example": "2020-12-31T15:10:55Z",
"externalDocs": {
"description": "RFC3339",
"url": "https://datatracker.ietf.org/doc/html/rfc3339#section-5.6"
}
}
]
},
"name": {
"description": "Full name.",
"allOf": [
{
"required": [
"familyName",
"givenName"
],
"type": "object",
"properties": {
"givenName": {
"type": "string",
"description": "Given name",
"example": "John"
},
"familyName": {
"type": "string",
"description": "Family name",
"example": "Doe"
},
"additionalName": {
"type": "string",
"description": "Additional name, if any"
}
},
"description": "Represents the full name"
}
]
},
"phone": {
"description": "Phone number.",
"allOf": [
{
"type": "string",
"description": "Telephone number including country code",
"example": "+14539842345"
}
]
},
"phoneDuplicate": {
"description": "Indicates whether this phone number is verified on another buyer.",
"type": "boolean",
"readOnly": true
},
"phoneVerified": {
"description": "Indicates whether this phone number has been verified as belonging to this buyer. Write access to this field is limited based on authorization.",
"type": "boolean"
}
}
},
"languagePreference": {
"description": "Buyer's preferred language.",
"allOf": [
{
"type": "string",
"description": "The two language code as defined in ISO 639-1 along with subtags tag if applicable.",
"minLength": 2,
"example": "en or en-US",
"externalDocs": {
"description": "ISO 639-1",
"url": "https://en.wikipedia.org/wiki/ISO_639-1"
}
}
]
},
"primaryContactID": {
"description": "Read-only. The ID of the primary contact information associated with this buyer; this is set on buyer creation.",
"type": "string",
"format": "uuid",
"example": "f322210a-e814-4b1b-a8bf-007a3e765bb9",
"readOnly": true
},
"status":
# --- truncated at 32 KB (1645 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/bread-financial/refs/heads/main/openapi/bread-buyer-management-openapi.json