# Create a new face-to-face transaction with both users

This endpoint is an optimised call that allows a transaction to
be created and joined in a single request. It requires the
online user to have granted the `p2p_tx:offline_create_join` scope
to the client that is performing the request.
This endpoint allows creating a transaction with both buyer and seller
as guest users, or one party to be guest user and the other full user.

Endpoint: POST /api/v1/p2p/me/transactions/create_with_guest_user
Version: 0.1.0
Security: APIKey

## Header parameters:

  - `Trustap-User` (string)
    Required in client flows, where you make API calls on behalf of another Trustap user.

## Request fields (application/json):

  - `buyer_id` (string, required)
    The id of the buyer for this transaction
(it can be full user id or guest user id).

  - `charge_calculator_version` (integer, required)

  - `contains_shipping` (boolean)
    Specifies if the transaction contains a shippable item and
the shipping details should be collected from the buyer.

  - `creator_role` (string, required)
    Enum: "buyer", "seller"

  - `currency` (string, required)
    Enum: "aud", "eur", "gbp", "myr", "pln", "sek", "usd", "huf", "aed", "brl", "cad", "chf", "dkk", "rsd", "czk"

  - `deposit_charge` (integer, required)

  - `deposit_charge_config` (integer)
    The charge config for which the charge amount is computed.

  - `deposit_charge_seller` (integer)

  - `deposit_fee_multiplier` (number)
    The `fee_multiplier` parameter is used to apply a higher percentage
fee based on the total price of the transaction. The percentage fee
is calculated multiplying the `percentage fee` by the `fee_multiplier`.

  - `deposit_payment_method` (string)
    The payment method to use for the transaction.

  - `deposit_price` (integer, required)

  - `deposit_price_extra` (integer)
    Represents an additional charge to be paid by the buyer added
to the transaction total. Use this field to include costs like
processing fees, local taxes, or shipping surcharges.
Must be an integer provided in the smallest unit of the currency
(for example, 500 for $5.00 USD). Defaults to 0 if not provided.

  - `deposit_price_postage` (integer)
    Represents the postage/shipping cost to be paid by the buyer.
Must be an integer provided in the smallest unit of the currency
(for example, 500 for $5.00 USD).

  - `description` (string, required)
    A description of the goods being sold.

  - `image_url` (string)
    URL of the image displayed on the Trustap payment page to show the buyer
the item they are paying for.
Supports jpg, png, gif, bmp, webp and svg files. Images displayed as a
squares. Non-square images are cropped.

  - `seller_id` (string, required)
    The id of the seller for this transaction
(it can be full user id or guest user id).

  - `skip_remainder` (boolean)
    If `skip_remainder` is `true` then the
transaction will move to the "confirm handover"
step after the deposit has been accepted.

## Response 201 fields (application/json):

  - `allocate_extra_price_to_client` (boolean)

  - `allocate_postage_price_to` (string)
    Enum: "seller", "client", "service"

  - `amount_refunded` (integer)

  - `amount_released` (integer)

  - `buyer_handover_confirmed` (string)

  - `buyer_id` (string)

  - `buyer_is_guest` (boolean)

  - `cancellation` (object)

  - `cancellation.reason` (string, required)

  - `cancelled` (string)

  - `charge_config` (integer)

  - `claimed_by_buyer` (string)

  - `claimed_by_seller` (string)

  - `client_accrual_net` (integer)

  - `client_id` (string, required)

  - `complained` (string)

  - `complaint` (object)
    Example: {"category":"other","description":"Item was fake"}

  - `complaint.accepted` (string)

  - `complaint.category` (string, required)
    Enum: "item_not_received", "item_not_as_described", "other"

  - `complaint.description` (string, required)

  - `complaint_period_deadline` (string)

  - `complaint_period_ended` (string)

  - `contains_shipping` (boolean)

  - `created` (string, required)

  - `currency` (string, required)
    The currency of the transaction. Note that, at present, the
buyer must pay using the transaction's currency and the
seller will be paid in the transaction's currency.

  - `delivered` (string)

  - `deposit_accepted` (string)

  - `deposit_paid` (string)

  - `deposit_pricing` (object, required)
    Example: {"charge":78,"charge_buyer_client":0,"charge_buyer_service":78,"charge_seller":0,"charge_seller_client":0,"charge_seller_service":0,"extra_processing_charge":0,"postage_processing_charge":0,"price":12…

  - `deposit_pricing.charge` (integer, required)
    The total charge of the transaction paid by the buyer.
This is the sum of `charge_buyer_service` + `charge_buyer_client`.

  - `deposit_pricing.charge_buyer_client` (integer, required)
    Portion of the charge paid by the buyer that is collected as commission for the customer.

  - `deposit_pricing.charge_buyer_service` (integer, required)
    Portion of the charge that has been paid by the buyer that is collected as the Trustap fee.

  - `deposit_pricing.charge_international_payment` (integer)
    This charge is added to the seller charge if the payment method used in a transaction is from a different economic region to the seller.

  - `deposit_pricing.charge_seller` (integer, required)
    Portion of the charge paid by the seller.
This is the sum of `charge_seller_client` + `charge_seller_service` + `charge_international_payment`.

  - `deposit_pricing.charge_seller_client` (integer, required)
    Portion of the charge deducted from the seller's payout that that is collected as commission for the platform.

  - `deposit_pricing.charge_seller_service` (integer, required)
    Portion of the charge paid by the seller that is collected as the Trustap fee.

  - `deposit_pricing.deposit_fee_multiplier` (object)

  - `deposit_pricing.deposit_fee_multiplier.fee_multiplier` (number, required)

  - `deposit_pricing.extra_processing_charge` (integer, required)
    Fee collected to cover the processing costs associated with `price_extra`.
This charge is configurable in the Trustap Dashboard and is paid by either the client or the seller.

  - `deposit_pricing.postage_bearer` (string)
    Indicates who is responsible for paying the postage price.
Only present if `price_postage` is provided.
    Enum: "buyer", "seller", "client"

  - `deposit_pricing.postage_processing_charge` (integer)
    Fee collected to cover the processing costs associated with `price_postage`.
This charge is configurable in the Trustap Dashboard and is paid by either the client or the seller.

  - `deposit_pricing.price` (integer, required)
    The base price of the item or service in the transaction.

  - `deposit_pricing.price_extra` (integer, required)
    This field adds an additional cost to the transaction.
Use it to charge a buyer for things like tax or fulfillment costs.
The `price_extra` field is separate from the `price`` field. This separation displays the additional cost apart from the base price on the Trustap payment page.
It also helps clients track the breakdown of charges.

  - `deposit_pricing.price_postage` (integer)
    This field adds an additional cost to the transaction.
Use it to charge a buyer for things like shipping costs.
The `price_postage` field is separate from the `price`` field. This separation displays the additional cost apart from the base price on the Trustap payment page.
It also helps clients track the breakdown of charges.

  - `deposit_refunded` (string)

  - `deposit_review` (object)

  - `deposit_review.approved` (boolean)

  - `deposit_review.finished` (string)

  - `deposit_review.outcome_reason` (string)

  - `deposit_review.started` (string)

  - `deposit_review_flagged` (string)

  - `description` (string, required)

  - `funds_released` (string)

  - `id` (integer, required)

  - `image_url` (string)
    URL of the image displayed on the Trustap payment page to show the buyer
the item they are paying for.
Supports jpg, png, gif, bmp and svg files. Images displayed as a squares.
Non-square images are cropped

  - `is_deposit_payment_in_progress` (boolean, required)
    If the deposit is paid via a delayed payment method,
such as SEPA debit, this field will be `true` until the
payment has fully succeeded or failed.

  - `is_remainder_payment_in_progress` (boolean, required)
    If the remainder is paid via a delayed payment method,
such as SEPA debit, this field will be `true` until the
payment has fully succeeded or failed.

  - `items` (array)
    The items added to the transaction.

  - `items.charge_config` (integer)

  - `items.created` (string, required)

  - `items.currency` (string, required)
    Enum: "aud", "eur", "gbp", "myr", "pln", "sek", "usd", "huf", "aed", "brl", "cad", "chf", "dkk", "rsd", "czk"

  - `items.description` (string, required)

  - `items.item_id` (string, required)

  - `items.payment_method` (string)

  - `items.price` (integer, required)

  - `items.price_extra` (integer)

  - `items.price_postage` (integer)

  - `items.recurring_period` (string)
    Enum: "day", "week", "month", "year"

  - `items.ref_id` (string)

  - `items.tax_code` (string)

  - `items.transaction_id` (integer, required)

  - `join_code` (string)

  - `joined` (string)

  - `listing_id` (string)
    If the transaction is created from a listing then this is
the ID of that listing; otherwise this property is omitted.

  - `listing_type` (string)
    Enum: "single_use", "multi_use"

  - `order_issue` (object)
    Example: {"category":"other","description":"Item was not delivered"}

  - `order_issue.category` (string, required)
    Enum: "item_not_received", "other"

  - `order_issue.description` (string, required)

  - `order_issue_raised` (string)

  - `payout_id` (string)

  - `priced` (string)

  - `quantity` (integer, required)

  - `refunded` (string)

  - `refunds` (array)

  - `refunds.amount` (integer, required)

  - `refunds.id` (string, required)

  - `refunds.refunded` (string, required)

  - `rejected` (string)

  - `released_to_seller` (boolean)

  - `remainder_paid` (string)

  - `remainder_review_flagged` (string)

  - `remainder_skipped` (string)

  - `seller_handover_confirmed` (string)

  - `seller_id` (string)

  - `seller_is_guest` (boolean)

  - `seller_phone_number` (string)

  - `skip_remainder` (boolean, required)
    If `skip_remainder` is `true` then this transaction will
move to the "confirm handover" step after the deposit has
been accepted.

  - `status` (string, required)

  - `subscription_id` (string)

  - `tracked` (string)

  - `tracking` (object)
    Example: {"carrier":"ups","tracking_code":"***"}

  - `tracking.carrier` (string, required)

  - `tracking.tracking_code` (string, required)

## Response 400 fields (application/json):

  - `code` (string, required)

  - `error` (string, required)
    A contextual description of the error that occurred. When
handling errors the `code` field should be used to determine
the type of error that occurred, as the text in the `error`
field may change unexpectedly.

## Response 409 fields (application/json):

  - `code` (string, required)

  - `error` (string, required)
    A contextual description of the error that occurred. When
handling errors the `code` field should be used to determine
the type of error that occurred, as the text in the `error`
field may change unexpectedly.

