# 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).
    Example: "1-ef9664e4-921a-4696-8eaa-d8b2593d9ff9"

  - `charge_calculator_version` (integer, required)
    Example: 3

  - `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)
    Example: 118

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

  - `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.
    Example: "bank_transfer"

  - `deposit_price` (integer, required)
    Example: 1234

  - `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.
    Example: 500

  - `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.
    Example: "Little Fish"

  - `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).
    Example: "1-f40b6944-3c54-405e-9ae3-3fa9d2be9f91"

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

## Response 201 fields (application/json):

  - `amount_refunded` (integer)

  - `amount_released` (integer)

  - `buyer_handover_confirmed` (string)
    Example: "2019-12-25T16:00:00Z"

  - `buyer_id` (string)
    Example: "feb33a87-3917-4538-9260-127c8a6b5232"

  - `buyer_is_guest` (boolean)

  - `cancellation` (object)

  - `cancellation.reason` (string, required)

  - `cancelled` (string)

  - `charge_config` (integer)
    Example: 1

  - `claimed_by_buyer` (string)

  - `claimed_by_seller` (string)

  - `client_accrual_net` (integer)

  - `client_id` (string, required)
    Example: "trustap-app"

  - `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)
    Example: "Item was fake"

  - `complaint_period_deadline` (string)

  - `complaint_period_ended` (string)

  - `contains_shipping` (boolean)

  - `created` (string, required)
    Example: "2019-12-25T09:00:00Z"

  - `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.
    Example: "eur"

  - `delivered` (string)

  - `deposit_accepted` (string)
    Example: "2019-12-25T12:00:00Z"

  - `deposit_paid` (string)
    Example: "2019-12-25T11:00:00Z"

  - `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":1234,"price_extra":0}

  - `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.
    Example: 78

  - `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.
    Example: 78

  - `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.
    Example: 1234

  - `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)
    Example: "Soccer ticket"

  - `funds_released` (string)
    Example: "2019-12-25T17:00:00Z"

  - `id` (integer, required)
    Example: 1309

  - `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.

  - `join_code` (string)

  - `joined` (string)
    Example: "2019-12-25T10:00:00Z"

  - `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"

  - `metadata` (object)
    Arbitrary key-value string pairs, which allows the addition of extra
information to transactions outside of the prescribed fields. For
example, when a transaction is used to power a product on an ecommerce
marketplace, the the product ID can be added to the transaction for
reference.

  - `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)
    Example: "Item was not delivered"

  - `order_issue_raised` (string)

  - `payout_id` (string)

  - `priced` (string)
    Example: "2019-12-25T13:00:00Z"

  - `pricing` (object)
    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":1234,"price_extra":0}

  - `quantity` (integer, required)
    Example: 1

  - `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)
    Example: "2019-12-25T14:00:00Z"

  - `remainder_review` (object)

  - `remainder_review_flagged` (string)

  - `remainder_skipped` (string)

  - `seller_handover_confirmed` (string)
    Example: "2019-12-25T15:00:00Z"

  - `seller_id` (string)
    Example: "ad5bb99f-85bf-47e1-be0d-15e7541c6ad7"

  - `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)
    Example: "funds_released"

  - `tracked` (string)

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

  - `tracking.carrier` (string, required)
    Example: "ups"

  - `tracking.tracking_code` (string, required)
    Example: "***"

## Response 400 fields (application/json):

  - `code` (string, required)
    Example: "negative_price"

  - `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.
    Example: "`price` cannot be negative"


