- [HTTP request](https://developers.google.com/pay/e-wallets-v1/payment-integrator-e-wallets-api/asynchronousCapture#body.HTTP_TEMPLATE)
- [Request body](https://developers.google.com/pay/e-wallets-v1/payment-integrator-e-wallets-api/asynchronousCapture#body.request_body)
  - [JSON representation](https://developers.google.com/pay/e-wallets-v1/payment-integrator-e-wallets-api/asynchronousCapture#body.request_body.SCHEMA_REPRESENTATION)
- [Response body](https://developers.google.com/pay/e-wallets-v1/payment-integrator-e-wallets-api/asynchronousCapture#body.response_body)
- [UpiDetails](https://developers.google.com/pay/e-wallets-v1/payment-integrator-e-wallets-api/asynchronousCapture#UpiDetails)
  - [JSON representation](https://developers.google.com/pay/e-wallets-v1/payment-integrator-e-wallets-api/asynchronousCapture#UpiDetails.SCHEMA_REPRESENTATION)
- [TokenizedInstrumentDetails](https://developers.google.com/pay/e-wallets-v1/payment-integrator-e-wallets-api/asynchronousCapture#TokenizedInstrumentDetails)
  - [JSON representation](https://developers.google.com/pay/e-wallets-v1/payment-integrator-e-wallets-api/asynchronousCapture#TokenizedInstrumentDetails.SCHEMA_REPRESENTATION)
- [AsynchronousCaptureResponse](https://developers.google.com/pay/e-wallets-v1/payment-integrator-e-wallets-api/asynchronousCapture#AsynchronousCaptureResponse)
  - [JSON representation](https://developers.google.com/pay/e-wallets-v1/payment-integrator-e-wallets-api/asynchronousCapture#AsynchronousCaptureResponse.SCHEMA_REPRESENTATION)
- [AsynchronousCaptureResultCode](https://developers.google.com/pay/e-wallets-v1/payment-integrator-e-wallets-api/asynchronousCapture#AsynchronousCaptureResultCode)

Triggers the start of a money movement operation between a customer's account and the integrator. The integrator should acknowledge the request and perform whatever actions need to happen in order to complete the capture (e.g., collect a PIN from the user). The integrator will inform Google of the capture's final result by calling the CaptureResultNotification API.

The `requestId` within the header is the idempotency key and uniquely identifies this transaction. All mutations on this transaction (refunds) populate the `requestId` value in the `captureRequestId` field.

If the endpoint encounters an error while processing the request, the response body from this endpoint should be of type `https://developers.google.com/pay/e-wallets-v1/payment-integrator-e-wallets-api/ErrorResponse`.

An example request looks like:


    {
      "requestHeader": {
        "protocolVersion": {
          "major": 1,
          "minor": 1,
          "revision": 0
        },
        "requestId": "bWVyY2hhbnQgdHJhbnNhY3Rpb24gaWQ",
        "requestTimestamp": "1502220196077"
      },
      "paymentIntegratorAccountId": "InvisiCashIN_INR",
      "upiDetails": {
          "vpa": "foo@icici"
      },
      "transactionDescription": "Google - Music",
      "currencyCode": "INR",
      "amount": "728000000"
    }

An example response looks like:


    {
      "responseHeader": {
        "responseTimestamp": "1481900013178"
      },
      "result": "ACKNOWLEDGED",
      "paymentIntegratorTransactionId": "aW50ZWdyYXRvciB0cmFuc2FjdGlvbiBpZA"
    }

### HTTP request

`POST https://www.integratorhost.example.com/integrator-base-path/e-wallets-v1/asynchronousCapture`

### Request body

The request body contains data with the following structure:

| JSON representation |
|---|
| ``` { "requestHeader": { object (`https://developers.google.com/pay/e-wallets-v1/payment-integrator-e-wallets-api/RequestHeader`) }, "paymentIntegratorAccountId": string, "transactionDescription": string, "currencyCode": string, "amount": string, // The following is a list of mutually exclusive fields. At most one of the // fields will be set in a response: "upiDetails": { object (`https://developers.google.com/pay/e-wallets-v1/payment-integrator-e-wallets-api/asynchronousCapture#UpiDetails`) }, "tokenizedInstrumentDetails": { object (`https://developers.google.com/pay/e-wallets-v1/payment-integrator-e-wallets-api/asynchronousCapture#TokenizedInstrumentDetails`) } // End of mutually exclusive fields. } ``` |

| Fields ||
|---|---|
| `requestHeader` | ``object (`https://developers.google.com/pay/e-wallets-v1/payment-integrator-e-wallets-api/RequestHeader`)`` **REQUIRED**: Common header for all requests. |
| `paymentIntegratorAccountId` | `string` **REQUIRED**: This is the payment integrator account identifier that identifies contractual constraints around this transaction. |
| `transactionDescription` | `string` **REQUIRED** : This is the description of the transaction that can be put on the customer's statement. Localized to the userLocale found in the `requestHeader`. This format can be changed without notice and must never be parsed. |
| `currencyCode` | `string` **REQUIRED**: ISO 4217 3-letter currency code |
| `amount` | `string (https://developers.google.com/discovery/v1/type-format format)` **REQUIRED**: The amount of the purchase, in micros of the currency unit. |
| **REQUIRED**: Details specific to the form of payment to capture from. The following is a list of mutually exclusive fields. At most one of the fields will be set in a response: ||
| `upiDetails` | ``object (`https://developers.google.com/pay/e-wallets-v1/payment-integrator-e-wallets-api/asynchronousCapture#UpiDetails`)`` Payment details specific to UPI instruments. |
| `tokenizedInstrumentDetails` | ``object (`https://developers.google.com/pay/e-wallets-v1/payment-integrator-e-wallets-api/asynchronousCapture#TokenizedInstrumentDetails`)`` Payment details specific to Tokenized instruments. |
| End of mutually exclusive fields. ||

### Response body

This method supports multiple return types. For additional information about what 4XX or 5XX HTTP status code to return with an `ErrorResponse`, consult the `ErrorResponse` object and [HTTP status codes documentation](https://developers.google.com/pay/e-wallets-v1/guides/connectivity/protocol-standards#http_status_codes).

| Possible response messages ||
|---|---|
| HTTP 200 Status | ``object (`https://developers.google.com/pay/e-wallets-v1/payment-integrator-e-wallets-api/asynchronousCapture#AsynchronousCaptureResponse`)`` |
| HTTP 4XX / 5XX Status | ``object (`https://developers.google.com/pay/e-wallets-v1/payment-integrator-e-wallets-api/ErrorResponse`)`` |
| End of mutually exclusive fields. ||

## UpiDetails

Details about the UPI account to capture from.

| JSON representation |
|---|
| ``` { "vpa": string } ``` |

| Fields ||
|---|---|
| `vpa` | `string` **REQUIRED** : The user's Virtual Payment Address (VPA) used for moving money using the UPI protocol. For example [foo@icici](mailto:foo@icici). |

## TokenizedInstrumentDetails

Details about the account to capture from.

| JSON representation |
|---|
| ``` { "googlePaymentToken": string } ``` |

| Fields ||
|---|---|
| `googlePaymentToken` | `string` **REQUIRED**: This is the token that both companies will use to identify the account for purchases between each other. |

## AsynchronousCaptureResponse

Response object for the capture method.

| JSON representation |
|---|
| ``` { "responseHeader": { object (`https://developers.google.com/pay/e-wallets-v1/payment-integrator-e-wallets-api/ResponseHeader`) }, "paymentIntegratorTransactionId": string, "result": enum (`https://developers.google.com/pay/e-wallets-v1/payment-integrator-e-wallets-api/asynchronousCapture#AsynchronousCaptureResultCode`) } ``` |

| Fields ||
|---|---|
| `responseHeader` | ``object (`https://developers.google.com/pay/e-wallets-v1/payment-integrator-e-wallets-api/ResponseHeader`)`` **REQUIRED**: Common header for all responses. |
| `paymentIntegratorTransactionId` | `string` **REQUIRED**: This identifier is specific to the integrator and is generated by the integrator. This is the identifier that the integrator knows this transaction by. For convenience, this identifier is included with in the remittance details |
| `result` | ``enum (`https://developers.google.com/pay/e-wallets-v1/payment-integrator-e-wallets-api/asynchronousCapture#AsynchronousCaptureResultCode`)`` **REQUIRED**: The result of the asynchronous capture call. |

## AsynchronousCaptureResultCode

Result codes for asynchronousCapture.

| Enums ||
|---|---|
| `UNKNOWN_RESULT` | Do not ever set this default value! |
| `ACKNOWLEDGED` | The capture has been requested and the integrator will do additional steps to determine if the capture was successful or declined. Once the integrator knows the result of the capture, they will inform Google of the result by calling the `captureResultNotification` API. |
| `ACCOUNT_CLOSED` | The user's account held with the integrator has been closed. Returning this value will cause the user's instrument to be closed with Google. The user will be forced to add a new instrument by going through the association flow again. |
| `ACCOUNT_CLOSED_ACCOUNT_TAKEN_OVER` | The user's account with the integrator has been closed, suspected account take over. Returning this value will cause the user's instrument to be closed with Google. The user will be forced to add a new instrument by going through the association flow again. |
| `ACCOUNT_ON_HOLD` | The account is on hold. |
| `ACCOUNT_CLOSED_FRAUD` | The user's account held with the integrator has been closed because of fraud. Returning this value will cause the user's instrument to be closed with Google. The user will be forced to add a new instrument by going through the association flow again. |