> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gr4vy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# dLocal - Nequi

> Configure Nequi via dLocal as a payment method in Gr4vy.

dLocal is a global payments platform that helps you accept local payment methods and cards across emerging markets.

Nequi is a popular mobile wallet in Colombia that provides digital payment and financial services.

## Setup

Please follow the [common dLocal instructions](./dlocal) to get set up with Nequi.

Next, make sure to enable Nequi as a payment method on the configured account.

## Features

* **Partial refunds** - Refund a portion of the captured amount
* **Refunds** - Full refund support
* **Settlement reporting** - Access to settlement reports
* **Transaction sync** - Automatic transaction status synchronization

## Supported countries

dLocal supports transactions from buyers in `CO`.

## Supported currencies

dLocal supports processing payments in `COP`.

## Limitations

* **Tokenization** - Payment method tokenization is not supported
* **Capture** - Delayed capture is not supported
* **Void** - Transaction void is not supported

## Integration

For Nequi, the default integration is through a redirect to a hosted payments page.

Start by creating a new transaction with the following required fields.

<CodeGroup>
  ```csharp C# theme={"system"}
  var transaction = await client.Transactions.CreateAsync(
      transactionCreate: new TransactionCreate()
      {
          Amount = 1299,
          Currency = "COP",
          Country = "CO",
          PaymentMethod =
              TransactionCreatePaymentMethod.CreateCheckoutSessionWithUrlPaymentMethodCreate(
                  new RedirectPaymentMethodCreate()
                  {
                      Method = "nequi",
                      RedirectUrl = "https://example.com/callback",
                  }
              ),
      }
  );
  ```

  ```go Go theme={"system"}
  amount := int64(1299)
  currency := "COP"
  country := "CO"
  method := "nequi"
  redirectUrl := "https://example.com/callback"

  redirectPaymentMethodCreate := components.RedirectPaymentMethodCreate{
      Method: method,
      RedirectUrl: redirectUrl,
  }
  paymentMethod := components.CreateTransactionCreatePaymentMethodRedirectPaymentMethodCreate(redirectPaymentMethodCreate)

  transactionCreate := components.TransactionCreate{
      Amount:        amount,
      Currency:      currency,
      Country:       &country,
      PaymentMethod: &paymentMethod,
  }

  transaction, err := client.Transactions.Create(ctx, transactionCreate, nil, nil)
  ```

  ```java Java theme={"system"}
  CreateTransactionResponse transactionResponse = gr4vyClient.transactions().create()
      .transactionCreate(TransactionCreate.builder()
          .amount(1299L)
          .currency("COP")
          .country("CO")
          .paymentMethod(TransactionCreatePaymentMethod.of(RedirectPaymentMethodCreate.builder()
              .method("nequi")
              .redirectUrl("https://example.com/callback")
              .build()))
          .build())
      .call();

  Transaction transaction = transactionResponse.transaction().orElse(null);
  ```

  ```php PHP theme={"system"}
  $transactionCreate = new TransactionCreate(
      amount: 1299,
      currency: 'COP',
      country: 'CO',
      paymentMethod: new RedirectPaymentMethodCreate(
          method: 'nequi',
          redirectUrl: 'https://example.com/callback'
      )
  );
  $response = self::$sdk->transactions->create($transactionCreate);
  $transaction = $response->transaction;
  ```

  ```python Python theme={"system"}
  transaction: models.Transaction = client.transactions.create(
      amount=1299,
      currency="COP",
      country="CO",
      payment_method={
          "method": "nequi",
          "redirect_url": "https://example.com/callback",
      }
  )
  ```

  ```ts TypeScript theme={"system"}
  const transaction = await gr4vy.transactions.create({
      amount: 1299,
      currency: "COP",
      country: "CO",
      paymentMethod: {
          method: "nequi",
          redirectUrl: "https://example.com/callback"
      }
  })
  ```
</CodeGroup>

After the transaction is created, the API response includes `payment_method.approval_url` and the status is set to `buyer_approval_pending`.

Redirect the buyer to the `approval_url` so they can complete the payment. After approval the buyer is redirected to the `redirect_url` you provided when creating the transaction. Do not rely solely on the redirect - either poll the transaction or (recommended) rely on webhooks to detect the final status (for example `capture_succeeded` or failure states).

## Wallet

Nequi may require some additional information to be passed via dLocal to enable the wallet payment. For this
purpose, a `wallet` option is available in the API.

To enable this feature, pass in the following connection options for dLocal when making a payment.

```json theme={"system"}
POST /transactions

{
    "amount": 2000000,
    "country": "CO",
    "currency": "COP",
    "intent": "capture",
    "connection_options": {
        "dlocal-nequi": {
            "wallet": {
                "name": "John Smith", // defaults to the billing name
                "email": "john@example.com", // defaults to the billing email
                "username": "johndoe", // defaults to the billing email
                "token": "abc123", // defaults to null
                "verify": true //defaults to false
            }
        }
    },
}
```

Please contact dLocal for more information on how to exactly use these wallet options.
