# MD for: https://www.mercadopago.com.mx/developers/es/docs/checkout-bricks/payment-brick/payment-submission/other-payment-methods.md \> SERVER\_SIDE > > h1 > > Other payment methods To configure \*\*payments with cash via ticket\*\*, send a \*\*POST\*\* with the following parameters to the endpoint \[/v1/payments\](https://www.mercadopago.com.mx/developers/en/reference/online-payments/checkout-api-payments/create-payment/post) and run the request or, if you prefer, use one of our SDKs below. > NOTE > > Important > > Remember that Brick already resolves most parameters to send the POST. The information return comes in the \`onSubmit\` callback, inside the \`formData\` object, where you can find parameters like: \`payment\_method\_id\`, \`payer.email\` and \`amount\`. > \> Also, it is mandatory to send the attribute \`X-Idempotency-Key\` to ensure the execution and reexecution of requests without the risk of accidentally performing the same action more than once. To do so, update our \[SDKs Library\](https://www.mercadopago.com.mx/developers/en/docs/sdks-library/landing), or generate a UUID V4 and send it in the \_header\_ of your requests. | Payment type | Payment point | Parameter | Value | | --- | --- | --- | --- | | Paycash | 7 Eleven | \`payment\_method\_id\` | \`paycash\` | | Paycash | Santander | \`payment\_method\_id\` | \`paycash\` | | BBVA | BBVA | \`payment\_method\_id\` | \`bancomer\` | | Banamex | Banamex | \`payment\_method\_id\` | \`banamex\` | | Banamex | Telecomm | \`payment\_method\_id\` | \`banamex\` | | Paycash | Farmacias Yza| \`payment\_method\_id\` | \`paycash\` | | OXXO | OXXO | \`payment\_method\_id\` | \`oxxo\` | | Paycash | Circle K | \`payment\_method\_id\` | \`paycash\` | | Paycash | Extra | \`payment\_method\_id\` | \`paycash\` | | Paycash | Kiosko | \`payment\_method\_id\` | \`paycash\` | | Paycash | Soriana | \`payment\_method\_id\` | \`paycash\` | | BBVA | Casa Ley | \`payment\_method\_id\` | \`bancomer\` | | Banamex | Chedraul | \`payment\_method\_id\` | \`banamex\` | | Paycash | Calimax | \`payment\_method\_id\` | \`paycash\` | When creating a payment, in addition to sending the \`payment\_method\_id\` parameter, which is used by the \[payments API\](https://www.mercadopago.com.mx/developers/en/reference/online-payments/checkout-api-payments/create-payment/post), Brick also returns to the integrator the metadata parameter containing the payment point. This data is useful for improving specific payment instructions in the \[Status Screen Brick\](https://www.mercadopago.com.mx/developers/en/docs/checkout-bricks/status-screen-brick/introduction). * [csharp ](#editor%5F5) * [curl ](#editor%5F7) * [java ](#editor%5F3) * [node ](#editor%5F2) * [php ](#editor%5F1) * [python ](#editor%5F6) * [ruby ](#editor%5F4) php node java ruby csharp python curl ``` setCustomHeaders(["X-Idempotency-Key: "]); $payment = $client->create([ "transaction_amount" => (float) $_POST['transactionAmount'], "token" => $_POST['token'], "description" => $_POST['description'], "installments" => $_POST['installments'], "payment_method_id" => $_POST['paymentMethodId'], "issuer_id" => $_POST['issuer'], "payer" => [ "email" => $_POST['email'], "first_name" => $_POST['payerFirstName'], "last_name" => $_POST['payerLastName'], "identification" => [ "type" => $_POST['identificationType'], "number" => $_POST['number'] ] ] ], $request_options); echo implode($payment); ?> ``` Copiar ``` import { Payment, MercadoPagoConfig } from 'mercadopago'; const client = new MercadoPagoConfig({ accessToken: '' }); payment.create({ body: { transaction_amount: req.transaction_amount, token: req.token, description: req.description, installments: req.installments, payment_method_id: req.paymentMethodId, issuer_id: req.issuer, payer: { email: req.email, identification: { type: req.identificationType, number: req.number }}}, requestOptions: { idempotencyKey: '' } }) .then((result) => console.log(result)) .catch((error) => console.log(error)); ``` Copiar ``` Map customHeaders = new HashMap<>(); customHeaders.put("x-idempotency-key", ); MPRequestOptions requestOptions = MPRequestOptions.builder() .customHeaders(customHeaders) .build(); MercadoPagoConfig.setAccessToken("YOUR_ACCESS_TOKEN"); PaymentClient client = new PaymentClient(); PaymentCreateRequest paymentCreateRequest = PaymentCreateRequest.builder() .transactionAmount(new BigDecimal("100")) .description("Título do produto") .paymentMethodId("oxxo") .dateOfExpiration(OffsetDateTime.of(2023, 1, 10, 10, 10, 10, 0, ZoneOffset.UTC)) .payer( PaymentPayerRequest.builder() .email("test_user_mx@testuser.com").build() ) .metadata( Map.of('payment_point', 'oxxo') ) .build() client.create(paymentCreateRequest, requestOptions); ``` Copiar ``` require 'mercadopago' sdk = Mercadopago::SDK.new('ENV_ACCESS_TOKEN') custom_headers = { 'x-idempotency-key': '' } custom_request_options = Mercadopago::RequestOptions.new(custom_headers: custom_headers) payment_request = { transaction_amount: 100, description: 'Título do produto', payment_method_id: 'oxxo', payer: { email: 'test_user_mx@testuser.com', }, metadata: { payment_point: 'oxxo', } } payment_response = sdk.payment.create(payment_request, custom_request_options) payment = payment_response[:response] ``` Copiar ``` using MercadoPago.Config; using MercadoPago.Client.Common; using MercadoPago.Client.Payment; using MercadoPago.Resource.Payment; MercadoPagoConfig.AccessToken = "ENV_ACCESS_TOKEN"; var requestOptions = new RequestOptions(); requestOptions.CustomHeaders.Add("x-idempotency-key", ""); var request = new PaymentCreateRequest { TransactionAmount = 105, Description = "Título do produto", PaymentMethodId = 'oxxo', Payer = new PaymentPayerRequest { Email = "test_user_mx@testuser.com", }, Metadata = new Dictionary { ["payment_point"] = "oxxo", }, }; var client = new PaymentClient(); Payment payment = await client.CreateAsync(request, requestOptions); ``` Copiar ``` import mercadopago sdk = mercadopago.SDK("ENV_ACCESS_TOKEN") request_options = mercadopago.config.RequestOptions() request_options.custom_headers = { 'x-idempotency-key': '' } payment_data = { "transaction_amount": 100, "description": "Título do produto", "payment_method_id": "oxxo", "payer": { "email": "test_user_mx@testuser.com", }, "metadata": { "payment_point": "oxxo", } } payment_response = sdk.payment().create(payment_data, request_options) payment = payment_response["response"] ``` Copiar ``` curl -X POST \ -H 'accept: application/json' \ -H 'content-type: application/json' \ -H 'Authorization: Bearer ENV_ACCESS_TOKEN' \ -H 'X-Idempotency-Key: SOME_UNIQUE_VALUE' \ 'https://api.mercadopago.com/v1/payments' \ -d '{ "transaction_amount": 100, "description": "Título do produto", "payment_method_id": "oxxo", "payer": { "email": "PAYER_EMAIL_HERE", } "metadata": { "payment_point": "oxxo", } }' ``` Copiar The response will show the \*\*pending status\*\* until the buyer completes the payment. Also, in the response to the request, the \`external\_resource\_url\` parameter will return a URL that contains instructions for the buyer to make the payment. You can redirect to this same link to complete the payment flow. See below for an example return. \`\`\`json \[ { ..., "id": 5466310457, "status": "pending", "status\_detail": "pending\_waiting\_payment", ..., "transaction\_details": { "net\_received\_amount": 0, "total\_paid\_amount": 100, "overpaid\_amount": 0, "external\_resource\_url": "https://www.mercadopago.com.mx/payments/123456/ticket?caller\_id=123456&payment\_method\_id=oxxo&payment\_id=123456&payment\_method\_reference\_id=123456", "installment\_amount": 0, "financial\_institution": null, "payment\_method\_reference\_id": "1234567890" } } \] \`\`\` ## Show payment status After the payment creation in the backend using the Mercado Pago SDK, use the \*\*id\*\* received in the response to instantiate the \[Status Screen Brick\](https://www.mercadopago.com.mx/developers/en/docs/checkout-bricks/status-screen-brick/introduction) and show it to the buyer. In addition, the Status Screen can also redirect the buyer to the ticket with the transaction number and barcode for the buyer to go to a store and thus make the payment. Check out how simple it is to integrate \[click here\](https://www.mercadopago.com.mx/developers/en/docs/checkout-bricks/status-screen-brick/introduction). !\[payment-submission-other-payment-methods-status-mlm\](https://www.mercadopago.com.mx/checkout-bricks/payment-submission-other-payment-methods-status-mlm-en.jpg) > NOTE > > Important > > The boleto expiration date can be configured by sending a POST request with the \`data\_of\_expiration\` parameter to the endpoint \[/v1/payments.\](https://www.mercadopago.com.mx/developers/en/reference/online-payments/checkout-api-payments/create-payment/post) After expiration, the boleto will be canceled. ## Test your integration With the integration completed, you will be able to test payment reception. For more information, access the section \[Make test purchase\](https://www.mercadopago.com.mx/developers/en/docs/checkout-bricks/integration-test/test-payment-flow).