# Start Payment

## tapToPaySdk.startPayment(transactionDetail: TransactionDetail) async throws

Create a `TransactionDetail` and invoke `tapToPaySdk.startTransaction()` function to start a payment.

See [TransactionDetail](/pos/embedded-payments/iphone/sdk/transaction-detail).


```swift
public func startPayment(transactionDetail: TyroTapToPaySDK.TransactionDetail) async throws -> TyroTapToPaySDK.TransactionOutcome
```

### Parameters


```json
{
  "type": "object",
  "properties": {
    "transactionDetail": {
      "type": "TransactionDetail",
      "description": "The request parameters for the transaction"
    }
  },
  "required": [
    "transactionDetail"
  ]
}
```

### Returns

Returns a `TransactionOutcome` containing detailed information about the result of the refund transaction.

See [TransactionOutcome](/pos/embedded-payments/iphone/sdk/transaction-outcome).

### Throws

It is strongly recommended to handle errors thrown by `tapToPaySDK.startPayment()` otherwise your App will crash.

#### TapToPaySDKError.transactionError(errorMessage: String)

Throws `TapToPaySDKError.transactionError` when there was an issue with the transaction.

See [TapToPaySDKError](/pos/embedded-payments/iphone/sdk/errors) for more details on errors thrown.