Product Items and Shipping Data

You can enrich a payment intent with product-level details and shipping information. When passed, MoneyHash forwards this data to the payment provider if the provider supports it - enabling provider-side order tracking, fraud scoring, and BNPL eligibility checks that depend on knowing what was purchased.

Product items

Pass product_items as an array in the intent creation request. Each item in the array represents one product line in the order.

Product item fields

FieldRequiredTypeDescription
nameYesstringProduct name
descriptionNostringShort product description
amountYesnumberUnit price of the product
quantityYesintegerNumber of units
categoryYesstringMain product category - see supported categories below
subcategoryYesstringSubcategory within the main category
typeYesstringProduct type - Physical, Digital, or Service
discountNoobjectDiscount applied to this product item - see Discount below

Basic example

{
  "amount": 50,
  "amount_currency": "AED",
  "operation": "purchase",
  "billing_data": {
    "first_name": "Mustafa",
    "last_name": "Eid",
    "phone_number": "+201064610000",
    "email": "[email protected]"
  },
  "product_items": [
    {
      "name": "Wireless Headphones",
      "description": "Noise-cancelling over-ear headphones",
      "amount": 40,
      "quantity": 1,
      "category": "Electronics",
      "subcategory": "Audio",
      "type": "Physical"
    },
    {
      "name": "Extended Warranty",
      "description": "1-year extended warranty plan",
      "amount": 10,
      "quantity": 1,
      "category": "Business & Industrial",
      "subcategory": "Finance & Insurance",
      "type": "Service"
    }
  ],
  "webhook_url": "https://yourbackend.com/webhooks/moneyhash"
}

Fees

Pass additional fees - such as shipping or handling - using the top-level fees array alongside product_items. Each fee object contains a multilingual title and a numeric value.

Fee fields

FieldRequiredTypeDescription
titleYesobjectMultilingual fee label - supports en, ar, fr keys
valueYesnumberFee amount - cannot be negative
Note

The sum of all product_items amounts plus all fees values must equal the intent's top-level amount. Some providers validate this and may reject the request if they don't match.

Example with fees

{
  "amount": 50,
  "amount_currency": "AED",
  "operation": "purchase",
  "product_items": [
    {
      "name": "First Product",
      "description": "Product description",
      "amount": 20,
      "quantity": 1,
      "category": "Electronics",
      "subcategory": "Audio",
      "type": "Digital"
    },
    {
      "name": "Second Product",
      "description": "Product description",
      "amount": 10,
      "quantity": 1,
      "category": "Electronics",
      "subcategory": "Audio",
      "type": "Digital"
    }
  ],
  "fees": [
    {
      "title": {
        "en": "Shipping fees",
        "ar": "رسوم الشحن",
        "fr": "Frais de livraison"
      },
      "value": 10
    },
    {
      "title": {
        "en": "Handling fees",
        "ar": "رسوم المناولة",
        "fr": "Frais de manutention"
      },
      "value": 10
    }
  ],
  "webhook_url": "https://yourbackend.com/webhooks/moneyhash"
}

Discount

Discounts can be applied at the product item level via the discount field inside each item in product_items.

Discount fields

FieldRequiredTypeDescription
titleYesobjectMultilingual discount label - supports en, ar, fr keys
typeYesstringDiscount calculation type - amount for a fixed deduction
valueYesnumberDiscount value

Example with discounts and fees

{
  "amount": 50,
  "amount_currency": "AED",
  "operation": "purchase",
  "product_items": [
    {
      "name": "First Product",
      "description": "Product description",
      "amount": 30,
      "quantity": 1,
      "category": "Electronics",
      "subcategory": "Audio",
      "type": "Digital",
      "discount": {
        "title": {
          "en": "Loyalty discount",
          "ar": "خصم الولاء",
          "fr": "Remise fidélité"
        },
        "type": "amount",
        "value": 5
      }
    },
    {
      "name": "Second Product",
      "description": "Product description",
      "amount": 20,
      "quantity": 1,
      "category": "Electronics",
      "subcategory": "Audio",
      "type": "Digital",
      "discount": {
        "title": {
          "en": "Promo discount",
          "ar": "خصم ترويجي",
          "fr": "Remise promotionnelle"
        },
        "type": "amount",
        "value": 5
      }
    }
  ],
  "fees": [
    {
      "title": {
        "en": "Shipping fees",
        "ar": "رسوم الشحن",
        "fr": "Frais de livraison"
      },
      "value": 10
    },
    {
      "title": {
        "en": "Handling fees",
        "ar": "رسوم المناولة",
        "fr": "Frais de manutention"
      },
      "value": 10
    }
  ],
  "webhook_url": "https://yourbackend.com/webhooks/moneyhash"
}

Supported categories and subcategories

CategorySubcategoryType
Animals & Pet SuppliesLive AnimalsPhysical
Pet SuppliesPhysical
Apparel & AccessoriesClothingPhysical
Clothing AccessoriesPhysical
Costumes & AccessoriesPhysical
Handbag & Wallet AccessoriesPhysical
Handbags, Wallets & CasesPhysical
JewelryPhysical
Shoe AccessoriesPhysical
ShoesPhysical
Arts & EntertainmentEvent TicketsPhysical, Digital
Hobbies & Creative ArtsPhysical, Digital
Party & CelebrationPhysical
Baby & ToddlerBaby BathingPhysical
Baby Gift SetsPhysical
Baby HealthPhysical
Baby SafetyPhysical
Baby Toys & Activity EquipmentPhysical
Baby TransportPhysical
Baby Transport AccessoriesPhysical
DiaperingPhysical
Nursing & FeedingPhysical
Potty TrainingPhysical
Swaddling & Receiving BlanketsPhysical
Business & IndustrialAdvertising & MarketingService
AgricultureService
ConstructionService
Finance & InsuranceService
Food ServiceService
Hotel & HospitalityService
ManufacturingService
MedicalService
RetailService
Science & LaboratoryService
Cameras & OpticsCamera & Optic AccessoriesPhysical
CamerasPhysical
OpticsPhysical
PhotographyPhysical, Digital, Service
ElectronicsAudioPhysical, Digital
ComputersPhysical
Electronics AccessoriesPhysical
GPS Navigation SystemsPhysical
NetworkingPhysical
VideoPhysical, Digital
Video Game ConsolesPhysical
Video Game Console AccessoriesPhysical
Food, Beverages & TobaccoBeveragesPhysical
Food ItemsPhysical
Tobacco ProductsPhysical
FurnitureBeds & AccessoriesPhysical
ChairsPhysical
Office FurniturePhysical
Outdoor FurniturePhysical
ShelvingPhysical
SofasPhysical
TablesPhysical
HardwareBuilding MaterialsPhysical
Heating, Ventilation & Air ConditioningPhysical
Locks & KeysPhysical
PlumbingPhysical
Power & Electrical SuppliesPhysical
ToolsPhysical
Health & BeautyHealth CarePhysical
Personal CarePhysical
Jewelry Cleaning & CareService
Home & GardenBathroom AccessoriesPhysical
DecorPhysical
Household AppliancesPhysical
Kitchen & DiningPhysical
Lawn & GardenPhysical
LightingPhysical
Linens & BeddingPhysical
Pool & SpaPhysical
Luggage & BagsBackpacksPhysical
Duffel BagsPhysical
Luggage AccessoriesPhysical
SuitcasesPhysical
MatureEroticPhysical, Digital
WeaponsPhysical
MediaBooksPhysical, Digital
DVDs & VideosPhysical, Digital
Magazines & NewspapersPhysical, Digital
Music & Sound RecordingsPhysical, Digital
Office SuppliesFiling & OrganizationPhysical
General Office SuppliesPhysical
Office EquipmentPhysical
Paper HandlingPhysical
Shipping SuppliesPhysical
Religious & CeremonialMemorial Ceremony SuppliesPhysical
Religious ItemsPhysical
Wedding Ceremony SuppliesPhysical
SoftwareComputer SoftwareDigital
Digital Goods & CurrencyDigital
Video Game SoftwareDigital
Sporting GoodsAthleticsPhysical
Exercise & FitnessPhysical
Indoor GamesPhysical
Outdoor RecreationPhysical
Toys & GamesGamesPhysical, Digital
Outdoor Play EquipmentPhysical
PuzzlesPhysical
ToysPhysical
Vehicles & PartsVehicle Parts & AccessoriesPhysical
VehiclesPhysical
CryptoCryptocurrencyDigital
TokenDigital

Shipping data

Pass shipping_data in the intent creation request to include the delivery address and shipping details. MoneyHash forwards this to the provider if supported.

Shipping data fields

FieldRequiredTypeDescription
first_nameNostringRecipient first name
last_nameNostringRecipient last name
emailNostringRecipient email address
phone_numberNostringRecipient phone number
addressNostringFull street address
streetNostringStreet name
buildingNostringBuilding number or name
apartmentNostringApartment or unit number
cityNostringCity
stateNostringState or province
countryNostringISO 3166-1 alpha-2 country code - e.g. AE, EG, SA
postal_codeNostringPostal or ZIP code
shipping_methodNostringShipping method identifier as defined by the provider
descriptionNostringOrder or shipment description
Callout

Some payment providers maintain a predefined list of valid shipping addresses or address formats. Make sure the address values you pass match what the provider expects - mismatched values may cause the request to be rejected by the provider.

Note

Whether individual shipping fields are required or optional depends on the payment provider. Consult your provider's documentation or the MoneyHash team to confirm which fields must be populated for your specific integration.

Example

{
  "amount": 500,
  "amount_currency": "AED",
  "operation": "purchase",
  "billing_data": {
    "first_name": "Mustafa",
    "last_name": "Eid",
    "phone_number": "+201064610000",
    "email": "[email protected]"
  },
  "shipping_data": {
    "first_name": "Clifford",
    "last_name": "Nicolas",
    "email": "[email protected]",
    "phone_number": "+201064610000",
    "address": "123 Main Street",
    "street": "Main Street",
    "building": "8028",
    "apartment": "803",
    "city": "Dubai",
    "state": "Dubai",
    "country": "AE",
    "postal_code": "01898",
    "shipping_method": "express",
    "description": "Handle with care"
  },
  "webhook_url": "https://yourbackend.com/webhooks/moneyhash"
}

Did this page help you?