# ONVO Docs (English) > Official documentation for integrating ONVO: payments, checkout, webhooks, authentication, testing, and API reference. OpenAPI YAML: https://docs.onvopay.com/openapi.yaml # Authentication URL: https://docs.onvopay.com/en/authentication Markdown: https://docs.onvopay.com/en/authentication.md # Authentication ONVO authenticates requests with API keys sent as Bearer tokens. ```http Authorization: Bearer onvo_test_secret_key_... ``` ## Related API reference - [API introduction](/en/api) - [Create a payment intent](/en/api/crear-una-intencion-de-pago) - [Create a payment method](/en/api/crear-un-metodo-de-pago) ## Key types | Key | Use | | --- | --- | | `onvo_test_secret_key_...` | Server-side code in test mode. | | `onvo_live_secret_key_...` | Server-side code in live mode. | | `onvo_test_publishable_key_...` | Client-side code in test mode. | | `onvo_live_publishable_key_...` | Client-side code in live mode. | :::warning Never expose secret keys in browsers, public mobile apps, or repositories. ::: ## HTTPS All requests must use HTTPS. Requests without authentication or over HTTP fail. --- # One Click URL: https://docs.onvopay.com/en/checkout/one-click Markdown: https://docs.onvopay.com/en/checkout/one-click.md # One Click One Click enables purchases with one click through secure payment data storage. The buyer avoids repeating the full cart flow and goes directly to the final payment step. Before integrating it, make sure the capability is enabled in your account settings. ## Related API reference - [Create a customer](/en/api/crear-un-cliente) - [List a customer's payment methods](/en/api/obtener-los-metodos-de-pago-de-un-cliente) - [Create a payment method](/en/api/crear-un-metodo-de-pago) - [Confirm a payment intent](/en/api/confirmar-una-intencion-de-pago) ## General flow 1. Look up the buyer by email to know whether they already exist. 2. Start a session verification by email or SMS. 3. Confirm the session with the 6-digit code received by the buyer. 4. List the available payment methods. 5. Add a new payment method if the buyer needs one. 6. Confirm the payment using the verified buyer. ## Main resources | Action | Description | | --- | --- | | Look up buyer | Looks up a buyer by email and returns whether they exist. | | Start verification | Sends a 6-digit code by email or SMS. | | Confirm verification | Confirms the session with the received code. | | List payment methods | Lists available methods for the buyer. | | Add payment method | Adds a new payment method so it can be reused in future payments. | --- # Payment links URL: https://docs.onvopay.com/en/checkout/one-time-links Markdown: https://docs.onvopay.com/en/checkout/one-time-links.md # Payment links Payment links let you collect payments without building your own checkout experience. ## Related API reference - [Create a Checkout session](/en/api/crear-una-sesion-de-checkout) - [List Checkout sessions](/en/api/listar-sesiones-de-checkout) - [Expire a Checkout session](/en/api/expirar-una-sesion-de-checkout) ```bash curl https://api.onvopay.com/v1/checkout/sessions/one-time-link \ -X POST \ -H "Authorization: Bearer $ONVO_SECRET_KEY" \ -H "Content-Type: application/json" \ -d '{ "amount": 250000, "currency": "CRC", "description": "Order #1001" }' ``` Use payment links for assisted sales, manual collections, or flows where the buyer receives a direct URL. --- # Checkout URL: https://docs.onvopay.com/en/checkout/overview Markdown: https://docs.onvopay.com/en/checkout/overview.md # Checkout Checkout lets you create a payment experience hosted by ONVO so you do not need to build the entire payment form. ## Related API reference - [Create a Checkout session](/en/api/crear-una-sesion-de-checkout) - [List Checkout sessions](/en/api/listar-sesiones-de-checkout) - [Expire a Checkout session](/en/api/expirar-una-sesion-de-checkout) - [Checkout sessions](/en/api/sesiones-de-checkout) ## When to use Checkout - You want to reach production quickly. - You prefer to delegate payment UI and validation. - You need a payment URL to send to the buyer. ## Base flow 1. Create a session or payment link. 2. Redirect the buyer to the Checkout URL. 3. Receive the result by webhook. 4. Update your order internally. --- # AI Markdown URL: https://docs.onvopay.com/en/developer-tools/ai-markdown Markdown: https://docs.onvopay.com/en/developer-tools/ai-markdown.md # AI Markdown ONVO publishes Markdown versions so agents, editors, and assistants can read the documentation without processing HTML. ## Available files | File | Use | | --- | --- | | [`/en/llms.txt`](https://docs.onvopay.com/en/llms.txt) | Short index with the main pages. | | [`/en/llms-full.txt`](https://docs.onvopay.com/en/llms-full.txt) | Full documentation context. | | [`/openapi.yaml`](https://docs.onvopay.com/openapi.yaml) | Source OpenAPI schema. | | `/en/*.md` | Markdown version of each English page. | ## Example ```bash curl https://docs.onvopay.com/en/llms.txt curl https://docs.onvopay.com/en/llms-full.txt curl https://docs.onvopay.com/openapi.yaml ``` Every page includes an action to copy its Markdown. --- # Getting started URL: https://docs.onvopay.com/en/getting-started Markdown: https://docs.onvopay.com/en/getting-started.md # Getting started This guide summarizes the base ONVO integration flow. ## Related API reference - [Create a payment intent](/en/api/crear-una-intencion-de-pago) - [Confirm a payment intent](/en/api/confirmar-una-intencion-de-pago) - [Create a Checkout session](/en/api/crear-una-sesion-de-checkout) ## 1. Get your keys Open the ONVO Dashboard and copy a test secret key. Test keys do not interact with real banking networks. ```bash export ONVO_SECRET_KEY="onvo_test_secret_key_..." ``` ## 2. Create a payment intent A payment intent represents the charge lifecycle for an order. ```bash curl https://api.onvopay.com/v1/payment-intents \ -X POST \ -H "Authorization: Bearer $ONVO_SECRET_KEY" \ -H "Content-Type: application/json" \ -d '{ "amount": 250000, "currency": "CRC", "description": "Order #1001" }' ``` ## 3. Confirm the payment Confirm the intent with the buyer's payment method, or use Checkout if you want ONVO to host the payment experience. ## 4. Listen for webhooks Register an endpoint to receive events like `payment-intent.succeeded` and reconcile your order internally. ## 5. Move to live mode After the account is activated, switch to an `onvo_live_` key and repeat end-to-end testing before opening the flow to buyers. --- # Magento Extension URL: https://docs.onvopay.com/en/integrations/magento Markdown: https://docs.onvopay.com/en/integrations/magento.md # Magento Extension ONVO provides an extension for Magento sites. Use it to enable ONVO Pay payments in your e-commerce site. ## Related API reference - [Create a Checkout session](/en/api/crear-una-sesion-de-checkout) - [Payment intents](/en/api/intenciones-de-pago) - [Refunds](/en/api/reembolsos) ## Prerequisites - Magento `2.4.3` or later. - PHP `7.1` or later. - Secret key and publishable key from the ONVO Dashboard. ## Install with Composer From the console, go to the Magento project root and run: ```bash composer require logeek-io/onvo-magento ``` ## Install by directory Download the plugin and upload it to: ```text /app/code/ONVO/ ``` ## Activation Run the Magento commands: ```bash bin/magento setup:upgrade bin/magento setup:di:compile ``` Then open `Stores -> Configuration -> Sales -> Payment Methods -> ONVO Pay` and configure: - Secret key. - Publishable key. Use test or live keys depending on the mode you want to operate. --- # Web SDK URL: https://docs.onvopay.com/en/integrations/sdk Markdown: https://docs.onvopay.com/en/integrations/sdk.md # Web SDK The ONVO web SDK lets you render a payment component on your site using a publishable key and a resource created from your server. ## Related API reference - [Create a payment intent](/en/api/crear-una-intencion-de-pago) - [Create a subscription](/en/api/crear-un-cargo-recurrente) - [Create a customer](/en/api/crear-un-cliente) - [Create a payment method](/en/api/crear-un-metodo-de-pago) ## Installation Include the SDK script. ```html ``` ## Prerequisites - Get your secret key and publishable key from the ONVO Dashboard. - Create a payment intent or subscription from your server using the secret key. - Pass the identifier to the frontend to render the SDK. ## One-time payment Create the payment intent server-side. ```js const { data, status } = await axios.post( "https://api.onvopay.com/v1/payment-intents", { currency: "USD", amount: 1000, description: "my first payment intent", }, { headers: { Authorization: "Bearer your_secret_key", }, }, ); if (status === 201) { console.log(data.id); } ``` Render the component on the frontend. ```html
``` ## Subscription Create the subscription server-side. ```js const { data, status } = await axios.post( "https://api.onvopay.com/v1/subscriptions", { customerId: "cl40wvnby1653akslv93ktgdk", paymentBehavior: "allow_incomplete", items: [ { priceId: "cl4ojmusz299201ldilvdfs8y", quantity: 1, }, ], }, { headers: { Authorization: "Bearer your_secret_key", }, }, ); if (status === 201) { console.log(data.id); } ``` Render the SDK with `paymentType: "subscription"`. ```html ``` ## Submit from an external button Use `manualSubmit: true` to hide the form's internal button and call `submitPayment` from your own control. ```html ``` ## Locale You can send `locale: "es"` or `locale: "en"`. If you omit it, Spanish is the default. --- # WordPress Plugin URL: https://docs.onvopay.com/en/integrations/wordpress Markdown: https://docs.onvopay.com/en/integrations/wordpress.md # WordPress Plugin ONVO provides a plugin for WordPress sites that use WooCommerce. Use it to enable ONVO Pay payments in your e-commerce site without building an API integration from scratch. [View the WordPress plugin](https://wordpress.org/plugins/onvo-pay/) ## Related API reference - [Create a Checkout session](/en/api/crear-una-sesion-de-checkout) - [Payment intents](/en/api/intenciones-de-pago) - [Refunds](/en/api/reembolsos) ## Prerequisites - WordPress `4.0` or later. - PHP `7.1` or later. - WooCommerce installed. - Secret key and publishable key from the ONVO Dashboard. ## Install from the dashboard 1. Go to `Plugins` and select `Add New Plugin`. 2. Search for `ONVO Pay`. 3. Install and activate the plugin. 4. In the ONVO Dashboard, copy your secret key and publishable key. 5. In WooCommerce, open `Payments` and select `ONVO Pay`. 6. Paste both keys into their corresponding fields. 7. Save the changes and start receiving payments. ## Direct server installation 1. Download the WordPress plugin. 2. Upload it to `/wp-content/plugins/`. 3. Activate the plugin from `Plugins`. 4. Configure the keys in WooCommerce under `Payments` and `ONVO Pay`. 5. Save the changes. --- # Home URL: https://docs.onvopay.com/en/ Markdown: https://docs.onvopay.com/en/index.md # ONVO Documentation Integrate payments with ONVO using clear guides, API examples, and AI-ready files. ONVO exposes a REST API with JSON responses, test keys, and live mode. These docs are organized to help you move from a local integration to production with less friction. ## Quick paths | I need to | Start here | | --- | --- | | Create my first integration | [Getting started](/en/getting-started) | | Authenticate requests | [Authentication](/en/authentication) | | Collect a payment | [Payment intents](/en/payments/payment-intents) | | Use hosted Checkout | [Checkout](/en/checkout/overview) | | Receive async events | [Webhooks](/en/webhooks) | | Browse endpoints and schemas | [API reference](/en/api) | ## For developers and agents Every page includes an action to copy its Markdown. We also publish: - [`/en/llms.txt`](https://docs.onvopay.com/en/llms.txt): short AI index. - [`/en/llms-full.txt`](https://docs.onvopay.com/en/llms-full.txt): full Markdown context. ## Environments Use keys prefixed with `onvo_test_` for testing and `onvo_live_` for real transactions. The mode is determined by the key sent in the `Authorization` header. ```bash curl https://api.onvopay.com/v1/payment-intents \ -H "Authorization: Bearer onvo_test_secret_key_..." \ -H "Content-Type: application/json" ``` --- # Fraud Monitoring URL: https://docs.onvopay.com/en/payments/fraud-monitoring Markdown: https://docs.onvopay.com/en/payments/fraud-monitoring.md # Fraud Monitoring For 100% API integrations, we recommend adding the ONVO web library to collect browser signals from the buyer. These signals improve the accuracy of fraud prevention tools. This implementation is optional, but highly recommended. It is not required for integrations that use plugins, payment links, or the embedded SDK, because those flows already include the necessary collection. ## Install the library Include the script in the page `head`, preferably before other scripts. ```html ``` ## Start the signal session Initialize the library with your publishable key. When you have the `paymentIntentId`, and before confirming the payment, call `startSignalSession`. ```html ``` ONVO takes these signals into account during payment intent confirmation. --- # Separate Authorization and Capture URL: https://docs.onvopay.com/en/payments/manual-capture Markdown: https://docs.onvopay.com/en/payments/manual-capture.md # Separate Authorization and Capture When you create a payment, you can authorize an amount and capture it later. This flow is useful when you need to reserve funds before completing the charge, for example in hotels, rentals, or orders that require final confirmation. :::info Manual capture is only available for card payments in 100% API integrations. It is not available for Checkout or the embedded payment SDK. ::: ## Related API reference - [Create a payment intent](/en/api/crear-una-intencion-de-pago) - [Confirm a payment intent](/en/api/confirmar-una-intencion-de-pago) - [Capture a payment intent](/en/api/capturar-una-intencion-de-pago) - [Cancel a payment intent](/en/api/cancelar-una-intencion-de-pago) ## Create the intent Set `captureMethod: "manual"` when creating the payment intent. ```json { "amount": 1000, "currency": "USD", "captureMethod": "manual" } ``` Then confirm the intent with a card payment method. If the authorization is approved, the intent moves to `requires_capture`. If it is declined, it returns to `requires_payment_method` and you can retry with another payment method. ## Capture funds To capture the authorized amount, call the payment intent capture endpoint. By default, ONVO captures the full authorized amount. To capture less than the original amount, send `amountToCapture`. A partial capture automatically releases the remaining amount. ```json { "amountToCapture": 750 } ``` If the capture succeeds, the intent moves to `succeeded`. If the capture fails, the intent moves to `requires_payment_method` and you need to start a new authorization. ## Cancel an authorization If you need to release the funds before capturing them, cancel the payment intent. If the authorization expires before capture, ONVO releases the funds and the intent moves to `canceled`. --- # Marketplaces URL: https://docs.onvopay.com/en/payments/marketplaces Markdown: https://docs.onvopay.com/en/payments/marketplaces.md # Marketplaces Marketplaces allow merchants that operate as intermediaries between buyers and sellers to process payments and settle funds to sellers automatically and securely. ## Related API reference - [Create a payment intent](/en/api/crear-una-intencion-de-pago) - [Confirm a payment intent](/en/api/confirmar-una-intencion-de-pago) - [Retrieve a payment intent](/en/api/obtener-una-intencion-de-pago) - [List all payment intents](/en/api/listar-todas-las-intenciones-de-pago) ## Create a marketplace account Create the account from the Marketplace section in the ONVO Dashboard. There, you set the seller business name and the marketplace commission percentage, in addition to ONVO transaction fees and withholdings when applicable. When the account is created, ONVO generates: - An `Account ID` to identify the seller in transactions. - An onboarding link so the seller can complete registration. ## Seller onboarding The onboarding link is unique per marketplace account. The seller must complete it to receive payments. During this process, they provide the IBAN accounts where settlements should be sent. The link expires after 7 days. You can regenerate it from the marketplace account detail; when you do, the previous link expires. Once onboarding is complete, the marketplace account is enabled to accept payments on its behalf. ## Payment flow Always use the API keys from the primary account, meaning the account that created the marketplace. Marketplace accounts do not have their own API keys. Payment methods must also be created in the primary account. 1. Create a payment intent with the `onBehalfOf` attribute, using the seller's `Account ID`. ```json { "amount": 10000, "currency": "USD", "onBehalfOf": "ma502zv0d0127ebdp3zt27651" } ``` 2. Confirm the payment intent with the `paymentMethodId`. ```json { "paymentMethodId": "cl502zv0d0127ebdp3zt27651" } ``` 3. If the charge succeeds, ONVO calculates ONVO fees, withholdings, and the marketplace commission on the gross amount. Example for a `100.00 USD` transaction: | Concept | Amount | | --- | --- | | Gross amount | `100.00 USD` | | ONVO fee 3.5% | `3.50 USD` | | Withholding 2% | `2.00 USD` | | Net amount | `94.50 USD` | | Marketplace commission 5% | `5.00 USD` | | Amount settled to seller | `89.50 USD` | The marketplace commission is deposited into the primary account and the net amount is deposited to the seller. ## Test and live mode You can create marketplace accounts in test or live mode depending on the active Dashboard mode. Accounts created in test mode only work with test keys. Accounts created in live mode only work with live keys. You cannot change an account's mode after it is created. --- # Payments URL: https://docs.onvopay.com/en/payments/overview Markdown: https://docs.onvopay.com/en/payments/overview.md # Payments ONVO payment flows are built around payment intents, payment methods, refunds, and asynchronous events. ## Related API reference - [Payment intents](/en/api/intenciones-de-pago) - [Payment methods](/en/api/metodos-de-pago) - [Refunds](/en/api/reembolsos) - [Checkout sessions](/en/api/sesiones-de-checkout) ## Main resources | Resource | Description | | --- | --- | | Payment intent | Represents the attempt to charge an order. | | Payment method | Instrument used by the buyer. | | Refund | Full or partial return of a payment. | | Webhook | Event sent by ONVO when state changes. | For most integrations, create one intent per order and listen to webhooks to confirm the final result. --- # Payment intents URL: https://docs.onvopay.com/en/payments/payment-intents Markdown: https://docs.onvopay.com/en/payments/payment-intents.md # Payment intents A payment intent guides the lifecycle of a payment. Use exactly one intent per payment to keep traceability clear. ## Related API reference - [Create a payment method](/en/api/crear-un-metodo-de-pago) - [Create a payment intent](/en/api/crear-una-intencion-de-pago) - [Confirm a payment intent](/en/api/confirmar-una-intencion-de-pago) - [Retrieve a payment intent](/en/api/obtener-una-intencion-de-pago) - [Capture a payment intent](/en/api/capturar-una-intencion-de-pago) - [Cancel a payment intent](/en/api/cancelar-una-intencion-de-pago) - [List all payment intents](/en/api/listar-todas-las-intenciones-de-pago) ## Basic flow 1. Create or collect a payment method for the buyer. 2. Create a payment intent with the amount and currency. 3. Confirm the intent using the `paymentMethodId`. 4. Listen for webhooks before marking the payment as complete in your system. ## Create a payment method Create the payment method from the client with a publishable key or from your server with a secret key, depending on the integration you are building. For cards, the response returns an `id` that you later send as `paymentMethodId` when confirming the intent. ```bash curl https://api.onvopay.com/v1/payment-methods \ -X POST \ -H "Authorization: Bearer $ONVO_PUBLISHABLE_KEY" \ -H "Content-Type: application/json" \ -d '{ "type": "card", "card": { "number": "4242424242424242", "expMonth": 12, "expYear": 2028, "cvv": "123", "holderName": "Maria Rodriguez" }, "billing": { "name": "Maria Rodriguez", "email": "maria@example.com", "address": { "country": "CR" } } }' ``` ## Create an intent ```bash curl https://api.onvopay.com/v1/payment-intents \ -X POST \ -H "Authorization: Bearer $ONVO_SECRET_KEY" \ -H "Content-Type: application/json" \ -d '{ "amount": 500000, "currency": "CRC", "description": "Order #1001" }' ``` ## Confirm the intent Use the intent `id` and the `id` from the payment method created earlier. ```bash curl https://api.onvopay.com/v1/payment-intents/$PAYMENT_INTENT_ID/confirm \ -X POST \ -H "Authorization: Bearer $ONVO_SECRET_KEY" \ -H "Content-Type: application/json" \ -d '{ "paymentMethodId": "cl502zv0d0127ebdp3zt27651" }' ``` ## Common states | State | Meaning | | --- | --- | | `requires_payment_method` | Initial state. The intent also stays in this state if confirmation fails, for example because a card is declined. | | `requires_action` | The payment method needs an additional buyer action, such as 3DS authentication. | | `processing` | ONVO is processing the payment. | | `succeeded` | The payment succeeded. | | `canceled` | The intent was canceled. | ## Best practices - Store the intent `id` with your payment. - Use `metadata` for internal cart, payment, or customer IDs. - Confirm the final state by webhook before delivering digital goods or marking the payment as complete. --- # Refunds URL: https://docs.onvopay.com/en/payments/refunds Markdown: https://docs.onvopay.com/en/payments/refunds.md # Refunds A refund returns all or part of a successful payment intent amount. ## Related API reference - [Create a refund](/en/api/crear-un-reembolso) - [Retrieve a refund](/en/api/obtener-un-reembolso) - [Refunds](/en/api/reembolsos) ```bash curl https://api.onvopay.com/v1/refunds \ -X POST \ -H "Authorization: Bearer $ONVO_SECRET_KEY" \ -H "Content-Type: application/json" \ -d '{ "paymentIntentId": "pi_...", "amount": 100000 }' ``` ## Recommendations - Validate that the order can be refunded in your system before calling ONVO. - Store the refund ID for reconciliation. - Listen for webhook events to know the final result. --- # SINPE Movil URL: https://docs.onvopay.com/en/payments/sinpe-mobile Markdown: https://docs.onvopay.com/en/payments/sinpe-mobile.md # SINPE Movil SINPE Movil lets you collect a payment when the buyer sends a transfer to ONVO's mobile number and ONVO automatically associates it with a payment intent. This flow currently supports `CRC` payments only. ## Related API reference - [Create a payment intent](/en/api/crear-una-intencion-de-pago) - [Create a payment method](/en/api/crear-un-metodo-de-pago) - [Confirm a payment intent](/en/api/confirmar-una-intencion-de-pago) - [Webhooks](/en/webhooks) - [List SINPE Movil payments](/en/api/listar-pagos-por-sinpe-movil) ## Before you start - Configure webhooks and listen for `payment-intent.succeeded`. - Use `CRC` as the payment intent currency. - Send the real identification of the person or entity that will make the transfer in the payment method. - Ask the buyer to transfer from an account whose identification matches `mobileNumber.identification`. ONVO tries to associate the incoming transfer by identification number first. If the bank reports a different identification than the one you sent, automatic association can fail. The default destination number for receiving SINPE Movil transfers is `+506 70196686`. If your merchant account requested a custom number, use the number provided by the ONVO support team. ## Flow 1. Create a payment intent for the exact amount to collect. 2. Create a payment method with `type: "mobile_number"`. 3. Confirm the intent with the `paymentMethodId`. 4. Show the buyer the destination SINPE Movil number and the exact amount. 5. Wait for the `payment-intent.succeeded` webhook before marking the payment as complete. When you confirm the intent with this payment method, the intent moves to `processing`. That state means ONVO is waiting to receive and associate the transfer. ## Create the payment intent ```bash curl https://api.onvopay.com/v1/payment-intents \ -X POST \ -H "Authorization: Bearer $ONVO_SECRET_KEY" \ -H "Content-Type: application/json" \ -d '{ "amount": 500000, "currency": "CRC", "description": "SINPE Movil payment #1001" }' ``` ## Create the payment method `mobileNumber.number` is the buyer's SINPE Movil number. The destination number the buyer should transfer to is ONVO's number shown in your payment instructions. ```bash curl https://api.onvopay.com/v1/payment-methods \ -X POST \ -H "Authorization: Bearer $ONVO_SECRET_KEY" \ -H "Content-Type: application/json" \ -d '{ "type": "mobile_number", "mobileNumber": { "identification": "01-1393-1919", "identificationType": 0, "number": "+50688888888" }, "billing": { "name": "Maria Rodriguez", "email": "maria@example.com" } }' ``` ## Confirm the intent ```bash curl https://api.onvopay.com/v1/payment-intents/$PAYMENT_INTENT_ID/confirm \ -X POST \ -H "Authorization: Bearer $ONVO_SECRET_KEY" \ -H "Content-Type: application/json" \ -d '{ "paymentMethodId": "cl502zv0d0127ebdp3zt27651" }' ``` After confirmation, tell the buyer to transfer the exact amount to ONVO's SINPE Movil number. Do not mark the payment as successful in your system until you receive `payment-intent.succeeded`. ## Reconciliation The SINPE Movil payments list reflects incoming transfers received on a SINPE Movil number. It is useful for reviewing transfers that could not be associated automatically. If `paymentIntentId` is `null`, the transfer is not yet linked to a payment intent. ## Testing In test mode, using `onvo_test_` keys, the numbers defined in [SINPE Movil test payment methods](/en/payments/testing#sinpe-movil) simulate different transfer scenarios. You do not need to make a real transfer or send funds to ONVO's SINPE Movil number. Use those numbers to simulate successful, delayed, failed, and partial transfers. --- # SINPE PIN URL: https://docs.onvopay.com/en/payments/sinpe-pin Markdown: https://docs.onvopay.com/en/payments/sinpe-pin.md # SINPE PIN SINPE PIN lets you collect a payment when the buyer sends a bank transfer to an IBAN provided by ONVO and ONVO automatically associates it with a payment intent. This payment method is available by request only and currently supports `CRC` payments only. :::warning Real-time transfers SINPE PIN only works if the buyer sends the transfer in real time. If they use a scheduled, delayed, or non-immediate transfer, ONVO will not be able to associate it automatically and the payment will not complete with this flow. ::: ## Related API reference - [Create a payment intent](/en/api/crear-una-intencion-de-pago) - [Create a payment method](/en/api/crear-un-metodo-de-pago) - [Confirm a payment intent](/en/api/confirmar-una-intencion-de-pago) - [Webhooks](/en/webhooks) ## Before you start - Request SINPE PIN enablement from the ONVO support team. - Use the destination IBAN provided by ONVO so the buyer can make the transfer. - Configure webhooks and listen for `payment-intent.succeeded`. - Use `CRC` as the payment intent currency. - Send the real identification of the person or entity that will make the transfer in the payment method. ONVO tries to associate the incoming transfer by identification number first. The identification sent in `bankDeposit.identification` must match the identification reported by the bank in the incoming transfer. ## Flow 1. Create a payment intent for the exact amount to collect. 2. Create a payment method with `type: "bank_deposit"`. 3. Confirm the intent with the `paymentMethodId`. 4. Show the buyer the destination IBAN provided by ONVO, the exact amount, and the instruction to send the transfer in real time. 5. Wait for the `payment-intent.succeeded` webhook before marking the payment as complete. When you confirm the intent with this payment method, the intent moves to `processing`. That state means ONVO is waiting to receive and associate the transfer. ## Create the payment intent ```bash curl https://api.onvopay.com/v1/payment-intents \ -X POST \ -H "Authorization: Bearer $ONVO_SECRET_KEY" \ -H "Content-Type: application/json" \ -d '{ "amount": 500000, "currency": "CRC", "description": "SINPE PIN payment #1001" }' ``` ## Create the payment method `bankDeposit.identification` must represent the person or entity that will make the bank transfer. ```bash curl https://api.onvopay.com/v1/payment-methods \ -X POST \ -H "Authorization: Bearer $ONVO_SECRET_KEY" \ -H "Content-Type: application/json" \ -d '{ "type": "bank_deposit", "bankDeposit": { "identification": "01-1393-1919", "identificationType": 1 }, "billing": { "name": "Maria Rodriguez", "email": "maria@example.com" } }' ``` ## Confirm the intent ```bash curl https://api.onvopay.com/v1/payment-intents/$PAYMENT_INTENT_ID/confirm \ -X POST \ -H "Authorization: Bearer $ONVO_SECRET_KEY" \ -H "Content-Type: application/json" \ -d '{ "paymentMethodId": "cl502zv0d0127ebdp3zt27651" }' ``` After confirmation, tell the buyer to transfer the exact amount to the IBAN provided by ONVO using a real-time transfer. Do not mark the payment as successful in your system until you receive `payment-intent.succeeded`. ## Testing In test mode, using `onvo_test_` keys, the identifications defined in [SINPE PIN test payment methods](/en/payments/testing#bank-deposit-sinpe-pin) simulate different deposit scenarios. You do not need to make a real transfer or send funds to ONVO's IBAN. Use those identifications to simulate successful, delayed, failed, and partial deposits. --- # Testing URL: https://docs.onvopay.com/en/payments/testing Markdown: https://docs.onvopay.com/en/payments/testing.md # Testing Keys prefixed with `onvo_test_` operate in test mode. Use them to validate flows, states, webhooks, and error handling. The payment methods on this page only work in test mode. If you try to use them with `onvo_live_` keys, ONVO rejects the payment method creation. ## Related API reference - [Create a payment method](/en/api/crear-un-metodo-de-pago) - [Create a payment intent](/en/api/crear-una-intencion-de-pago) - [Confirm a payment intent](/en/api/confirmar-una-intencion-de-pago) - [Create a refund](/en/api/crear-un-reembolso) ## Checklist before production - Create a payment intent. - Confirm a successful payment. - Test a payment-method error. - Test a refund. - Validate webhook delivery and signature verification. - Confirm that your system handles idempotent retries. ## Cards To create a test card, use `card` in the `type` attribute when creating a payment method and include the number in `card.number`. Use any future expiration date, any valid CVV for the brand, and any cardholder name. | Scenario | Brand | Number | | --- | --- | --- | | Approved | Visa | `4242424242424242` | | 3DS challenge | Visa | `4000000000003220` | | Approved | Mastercard | `5555555555554444` | | Approved | American Express | `378282246310005` | | Declined payment | Visa | `4000000000000002` | | Creation fails due to invalid verification | Visa | `4000000000000127` | | External card processor error | Visa | `4000000000000119` | ## Credix To create a Credix test card, use `credix` in the `type` attribute and include the number in `credix.number`. | Scenario | Brand | Number | | --- | --- | --- | | Approved | Visa | `4111111111111111` | | Declined | Visa | `4000000000000002` | ## Bank Deposit (SINPE PIN) To create a bank deposit test method, use `bank_deposit` in `type` and include `identification` and `identificationType` in `bankDeposit`. | Scenario | Identification | Behavior | | --- | --- | --- | | Successful | `00-0000-8888` | Simulates a successful deposit 15 seconds after confirming the payment intent. | | Failed | `00-0000-9521` | Marks the charge as failed and the intent returns to `requires_payment_method`. | | Successful with delay | `00-0000-4444` | Simulates a successful deposit 30 seconds later. | | Partial | `00-0000-3333` | Simulates a 50% deposit followed by another deposit for the remaining 50%. | ## SINPE Movil To create a SINPE Movil test method, use `mobile_number` in `type` and include the number in `mobileNumber.number`. | Scenario | Number | Behavior | | --- | --- | --- | | Successful | `+50688888888` | Simulates a successful transfer 15 seconds later. | | Successful with delay | `+50688884444` | Simulates a successful transfer 6 minutes later. | | Failed | `+50688889521` | Does not simulate a transfer and the intent state does not change. | | Partial | `+50688883333` | Simulates a 50% transfer followed by another transfer for the remaining 50%. | ## Zunify To create a Zunify test method, use `zunify` in `type` and include `phoneNumber` and `pin` in the `zunify` object. | Scenario | Number | PIN | Behavior | | --- | --- | --- | --- | | Successful | `11223344` | `1234` | Simulates a Zunify charge and marks the intent as successful approximately 10 seconds later. | --- # 3DS Authentication URL: https://docs.onvopay.com/en/payments/three-ds Markdown: https://docs.onvopay.com/en/payments/three-ds.md # 3DS Authentication 3D Secure adds an authentication layer for card payments. When the issuer requires it, the customer must complete a verification, usually on the bank's page or in a modal within your site. In 100% API integrations, you identify this case when payment intent confirmation returns `requires_action` and a `nextAction` object. ## Related API reference - [Confirm a payment intent](/en/api/confirmar-una-intencion-de-pago) - [Retrieve a payment intent](/en/api/obtener-una-intencion-de-pago) - [Create a payment method](/en/api/crear-un-metodo-de-pago) ## Redirect Send `returnUrl` when confirming the payment intent. ```json { "paymentMethodId": "cl502zv0d0127ebdp3zt27651", "returnUrl": "https://www.example.com/return" } ``` If 3DS is required, the response includes the URL where you should redirect the customer. ```json { "status": "requires_action", "nextAction": { "type": "redirect_to_url", "redirectToUrl": { "url": "https://checkout.onvopay.com/authorize/test_clv...", "returnUrl": "https://www.example.com/return" } } } ``` After authentication is completed, ONVO redirects the customer to your `returnUrl` with the `payment_intent_id` parameter. ```text https://www.example.com/return?payment_intent_id=cl502zv0d0127ebdp3zt27651 ``` Retrieve the payment intent to confirm the final status before marking the order as paid. ## Modal You can also handle 3DS with the ONVO web library. ```html ``` Initialize the library with your publishable key and call `handleNextAction` when the intent requires action. ```html ``` Even if 3DS authentication succeeds, validate the final payment intent status. The transaction can still be declined for other reasons. You can test this flow with card `4000000000003220` in test mode. --- # Errors URL: https://docs.onvopay.com/en/reference/errors Markdown: https://docs.onvopay.com/en/reference/errors.md # Errors The ONVO API uses standard HTTP codes and JSON responses to describe errors. | Code | Meaning | | --- | --- | | `400` | Invalid request. | | `401` | Missing authentication or invalid key. | | `403` | The key does not have permission for the action. | | `404` | The resource does not exist. | | `409` | State conflict. | | `422` | The request could not be processed with the submitted data. | | `500` | Internal error. | Store the request identifier when contacting support. --- # Pagination URL: https://docs.onvopay.com/en/reference/pagination Markdown: https://docs.onvopay.com/en/reference/pagination.md # Pagination List endpoints return a page of results and metadata for requesting the next page. ## Recommendations - Use filters to limit data volume. - Process pages incrementally. - Do not assume two consecutive pages are immutable if data changes while you are iterating through the list. --- # Webhooks URL: https://docs.onvopay.com/en/webhooks Markdown: https://docs.onvopay.com/en/webhooks.md # Webhooks ONVO uses webhooks to notify your application when a result is produced while processing a payment intent, subscription, checkout session, or incoming transfer. To receive them, configure a callback URL in your ONVO account. ONVO sends a `POST` request to that URL whenever a supported event is processed. The payload includes a `type` attribute that identifies the event and a `data` object with the related information. ## Related API reference - [Payment intents](/en/api/intenciones-de-pago) - [Subscriptions](/en/api/cargos-recurrentes) - [Checkout sessions](/en/api/sesiones-de-checkout) - [SINPE Movil](/en/api/sinpe-movil) ## Recommended flow 1. Expose an HTTPS endpoint. 2. Register the endpoint in the ONVO Dashboard under developers. 3. Verify the event origin with the webhook secret. 4. Process the event idempotently. 5. Respond with a `2xx` status when processing succeeds. ## Supported events | Event | When it happens | | --- | --- | | `payment-intent.succeeded` | A payment intent is processed successfully. | | `payment-intent.failed` | A payment intent fails. | | `payment-intent.deferred` | A payment intent is waiting for approval, for example in a SINPE flow. | | `subscription.renewal.succeeded` | A subscription renews successfully. | | `subscription.renewal.failed` | A subscription renewal fails. | | `checkout-session.succeeded` | A checkout session is processed successfully. | | `mobile-transfer.received` | An incoming transfer is received on a custom SINPE Movil number. | `mobile-transfer.received` is an additional notification for merchants with this capability enabled. It does not represent a successful payment by itself and is not sent by default. Contact support to enable it. ## Security Each webhook has an assigned secret. You can view it in the ONVO Dashboard next to the webhook configuration. ONVO includes that value in the `X-Webhook-Secret` header. The backend generates secrets with the `webhook_secret_` prefix. Use it to verify that the request comes from ONVO before processing the event. ```http X-Webhook-Secret: webhook_secret_... ``` ## Responses and errors When an event represents an error, the payload object can include an `error` attribute. That object can contain: | Field | Description | | --- | --- | | `message` | Human-readable error description. | | `code` | Error code, when available. | | `type` | Error type, when available. | Your endpoint should respond with a `2xx` status only when the event was received and processed correctly. If you respond with another status, ONVO may retry the delivery. Your system should tolerate retries and events received out of order. --- # Update a Checkout Session Customer URL: https://docs.onvopay.com/en/api/actualizar-cliente-de-una-sesion-de-checkout Markdown: https://docs.onvopay.com/en/api/actualizar-cliente-de-una-sesion-de-checkout.md # Update a Checkout Session Customer Updates the customer's contact information in a Checkout Session. Endpoint: `PATCH /v1/checkout/sessions/{id}/customer` Human page: https://docs.onvopay.com/en/api/actualizar-cliente-de-una-sesion-de-checkout OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Update a Subscription Item URL: https://docs.onvopay.com/en/api/actualizar-item-de-un-cargo-recurrente Markdown: https://docs.onvopay.com/en/api/actualizar-item-de-un-cargo-recurrente.md # Update a Subscription Item See the ONVO documentation for integration details and examples. Endpoint: `PATCH /v1/subscriptions/{id}/items/{item}` Human page: https://docs.onvopay.com/en/api/actualizar-item-de-un-cargo-recurrente OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Update a Checkout Session Item URL: https://docs.onvopay.com/en/api/actualizar-item-de-una-sesion-de-checkout Markdown: https://docs.onvopay.com/en/api/actualizar-item-de-una-sesion-de-checkout.md # Update a Checkout Session Item Updates the selected item in an open Checkout Session. Endpoint: `POST /v1/checkout/sessions/{id}/line-item` Human page: https://docs.onvopay.com/en/api/actualizar-item-de-una-sesion-de-checkout OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Update a Subscription URL: https://docs.onvopay.com/en/api/actualizar-un-cargo-recurrente Markdown: https://docs.onvopay.com/en/api/actualizar-un-cargo-recurrente.md # Update a Subscription See the ONVO documentation for integration details and examples. Endpoint: `POST /v1/subscriptions/{id}` Human page: https://docs.onvopay.com/en/api/actualizar-un-cargo-recurrente OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Update a Customer URL: https://docs.onvopay.com/en/api/actualizar-un-cliente Markdown: https://docs.onvopay.com/en/api/actualizar-un-cliente.md # Update a Customer See the ONVO documentation for integration details and examples. Endpoint: `POST /v1/customers/{id}` Human page: https://docs.onvopay.com/en/api/actualizar-un-cliente OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Update a Payment Method URL: https://docs.onvopay.com/en/api/actualizar-un-metodo-de-pago Markdown: https://docs.onvopay.com/en/api/actualizar-un-metodo-de-pago.md # Update a Payment Method See the ONVO documentation for integration details and examples. Endpoint: `POST /v1/payment-methods/{id}` Human page: https://docs.onvopay.com/en/api/actualizar-un-metodo-de-pago OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Update a Price URL: https://docs.onvopay.com/en/api/actualizar-un-precio Markdown: https://docs.onvopay.com/en/api/actualizar-un-precio.md # Update a Price See the ONVO documentation for integration details and examples. Endpoint: `POST /v1/prices/{id}` Human page: https://docs.onvopay.com/en/api/actualizar-un-precio OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Update a Product URL: https://docs.onvopay.com/en/api/actualizar-un-producto Markdown: https://docs.onvopay.com/en/api/actualizar-un-producto.md # Update a Product See the ONVO documentation for integration details and examples. Endpoint: `POST /v1/products/{id}` Human page: https://docs.onvopay.com/en/api/actualizar-un-producto OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Update a Payment Intent URL: https://docs.onvopay.com/en/api/actualizar-una-intencion-de-pago Markdown: https://docs.onvopay.com/en/api/actualizar-una-intencion-de-pago.md # Update a Payment Intent See the ONVO documentation for integration details and examples. Endpoint: `POST /v1/payment-intents/{id}` Human page: https://docs.onvopay.com/en/api/actualizar-una-intencion-de-pago OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Update a Shipping Rate URL: https://docs.onvopay.com/en/api/actualizar-una-tarifa-de-envio Markdown: https://docs.onvopay.com/en/api/actualizar-una-tarifa-de-envio.md # Update a Shipping Rate See the ONVO documentation for integration details and examples. Endpoint: `POST /v1/shipping-rates/{id}` Human page: https://docs.onvopay.com/en/api/actualizar-una-tarifa-de-envio OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Add an Item to a Subscription URL: https://docs.onvopay.com/en/api/agregar-item-a-un-cargo-recurrente Markdown: https://docs.onvopay.com/en/api/agregar-item-a-un-cargo-recurrente.md # Add an Item to a Subscription See the ONVO documentation for integration details and examples. Endpoint: `POST /v1/subscriptions/{id}/items` Human page: https://docs.onvopay.com/en/api/agregar-item-a-un-cargo-recurrente OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Delete a Subscription Item URL: https://docs.onvopay.com/en/api/borrar-item-de-un-cargo-recurrente Markdown: https://docs.onvopay.com/en/api/borrar-item-de-un-cargo-recurrente.md # Delete a Subscription Item See the ONVO documentation for integration details and examples. Endpoint: `DELETE /v1/subscriptions/{id}/items/{itemId}` Human page: https://docs.onvopay.com/en/api/borrar-item-de-un-cargo-recurrente OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Delete a Customer URL: https://docs.onvopay.com/en/api/borrar-un-cliente Markdown: https://docs.onvopay.com/en/api/borrar-un-cliente.md # Delete a Customer See the ONVO documentation for integration details and examples. Endpoint: `DELETE /v1/customers/{id}` Human page: https://docs.onvopay.com/en/api/borrar-un-cliente OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Delete a Price URL: https://docs.onvopay.com/en/api/borrar-un-precio Markdown: https://docs.onvopay.com/en/api/borrar-un-precio.md # Delete a Price See the ONVO documentation for integration details and examples. Endpoint: `DELETE /v1/prices/{id}` Human page: https://docs.onvopay.com/en/api/borrar-un-precio OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Delete a Product URL: https://docs.onvopay.com/en/api/borrar-un-producto Markdown: https://docs.onvopay.com/en/api/borrar-un-producto.md # Delete a Product See the ONVO documentation for integration details and examples. Endpoint: `DELETE /v1/products/{id}` Human page: https://docs.onvopay.com/en/api/borrar-un-producto OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Delete a Shipping Rate URL: https://docs.onvopay.com/en/api/borrar-una-tarifa-de-envio Markdown: https://docs.onvopay.com/en/api/borrar-una-tarifa-de-envio.md # Delete a Shipping Rate See the ONVO documentation for integration details and examples. Endpoint: `DELETE /v1/shipping-rates/{id}` Human page: https://docs.onvopay.com/en/api/borrar-una-tarifa-de-envio OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Cancel a Subscription URL: https://docs.onvopay.com/en/api/cancelar-un-cargo-recurrente Markdown: https://docs.onvopay.com/en/api/cancelar-un-cargo-recurrente.md # Cancel a Subscription See the ONVO documentation for integration details and examples. Endpoint: `DELETE /v1/subscriptions/{id}` Human page: https://docs.onvopay.com/en/api/cancelar-un-cargo-recurrente OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Cancel a Payment Intent URL: https://docs.onvopay.com/en/api/cancelar-una-intencion-de-pago Markdown: https://docs.onvopay.com/en/api/cancelar-una-intencion-de-pago.md # Cancel a Payment Intent See the ONVO documentation for integration details and examples. Endpoint: `POST /v1/payment-intents/{id}/cancel` Human page: https://docs.onvopay.com/en/api/cancelar-una-intencion-de-pago OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Capture a Payment Intent URL: https://docs.onvopay.com/en/api/capturar-una-intencion-de-pago Markdown: https://docs.onvopay.com/en/api/capturar-una-intencion-de-pago.md # Capture a Payment Intent See the ONVO documentation for integration details and examples. Endpoint: `POST /v1/payment-intents/{id}/capture` Human page: https://docs.onvopay.com/en/api/capturar-una-intencion-de-pago OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Subscriptions URL: https://docs.onvopay.com/en/api/cargos-recurrentes Markdown: https://docs.onvopay.com/en/api/cargos-recurrentes.md # Subscriptions Cargos recurrentes Human page: https://docs.onvopay.com/en/api/cargos-recurrentes OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Customers URL: https://docs.onvopay.com/en/api/clientes Markdown: https://docs.onvopay.com/en/api/clientes.md # Customers Clientes Human page: https://docs.onvopay.com/en/api/clientes OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Confirm a Subscription URL: https://docs.onvopay.com/en/api/confirmar-un-cargo-recurrente Markdown: https://docs.onvopay.com/en/api/confirmar-un-cargo-recurrente.md # Confirm a Subscription See the ONVO documentation for integration details and examples. Endpoint: `POST /v1/subscriptions/{id}/confirm` Human page: https://docs.onvopay.com/en/api/confirmar-un-cargo-recurrente OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Confirm a Payment Intent URL: https://docs.onvopay.com/en/api/confirmar-una-intencion-de-pago Markdown: https://docs.onvopay.com/en/api/confirmar-una-intencion-de-pago.md # Confirm a Payment Intent See the ONVO documentation for integration details and examples. Endpoint: `POST /v1/payment-intents/{id}/confirm` Human page: https://docs.onvopay.com/en/api/confirmar-una-intencion-de-pago OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Confirm a Checkout Session URL: https://docs.onvopay.com/en/api/confirmar-una-sesion-de-checkout Markdown: https://docs.onvopay.com/en/api/confirmar-una-sesion-de-checkout.md # Confirm a Checkout Session Confirms a Checkout Session with the selected payment method. Endpoint: `POST /v1/checkout/sessions/{id}/confirm` Human page: https://docs.onvopay.com/en/api/confirmar-una-sesion-de-checkout OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Create a Subscription URL: https://docs.onvopay.com/en/api/crear-un-cargo-recurrente Markdown: https://docs.onvopay.com/en/api/crear-un-cargo-recurrente.md # Create a Subscription See the ONVO documentation for integration details and examples. Endpoint: `POST /v1/subscriptions` Human page: https://docs.onvopay.com/en/api/crear-un-cargo-recurrente OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Create a Customer URL: https://docs.onvopay.com/en/api/crear-un-cliente Markdown: https://docs.onvopay.com/en/api/crear-un-cliente.md # Create a Customer See the ONVO documentation for integration details and examples. Endpoint: `POST /v1/customers` Human page: https://docs.onvopay.com/en/api/crear-un-cliente OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Create a Payment Method URL: https://docs.onvopay.com/en/api/crear-un-metodo-de-pago Markdown: https://docs.onvopay.com/en/api/crear-un-metodo-de-pago.md # Create a Payment Method See the ONVO documentation for integration details and examples. Endpoint: `POST /v1/payment-methods` Human page: https://docs.onvopay.com/en/api/crear-un-metodo-de-pago OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Create a Price URL: https://docs.onvopay.com/en/api/crear-un-precio Markdown: https://docs.onvopay.com/en/api/crear-un-precio.md # Create a Price See the ONVO documentation for integration details and examples. Endpoint: `POST /v1/prices` Human page: https://docs.onvopay.com/en/api/crear-un-precio OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Create a Product URL: https://docs.onvopay.com/en/api/crear-un-producto Markdown: https://docs.onvopay.com/en/api/crear-un-producto.md # Create a Product See the ONVO documentation for integration details and examples. Endpoint: `POST /v1/products` Human page: https://docs.onvopay.com/en/api/crear-un-producto OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Create a Refund URL: https://docs.onvopay.com/en/api/crear-un-reembolso Markdown: https://docs.onvopay.com/en/api/crear-un-reembolso.md # Create a Refund See the ONVO documentation for integration details and examples. Endpoint: `POST /v1/refunds` Human page: https://docs.onvopay.com/en/api/crear-un-reembolso OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Create a Payment Intent URL: https://docs.onvopay.com/en/api/crear-una-intencion-de-pago Markdown: https://docs.onvopay.com/en/api/crear-una-intencion-de-pago.md # Create a Payment Intent See the ONVO documentation for integration details and examples. Endpoint: `POST /v1/payment-intents` Human page: https://docs.onvopay.com/en/api/crear-una-intencion-de-pago OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Create a Checkout Session URL: https://docs.onvopay.com/en/api/crear-una-sesion-de-checkout Markdown: https://docs.onvopay.com/en/api/crear-una-sesion-de-checkout.md # Create a Checkout Session See the ONVO documentation for integration details and examples. Endpoint: `POST /v1/checkout/sessions/one-time-link` Human page: https://docs.onvopay.com/en/api/crear-una-sesion-de-checkout OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Create a Session from a Payment Link URL: https://docs.onvopay.com/en/api/crear-una-sesion-desde-un-link-de-pago Markdown: https://docs.onvopay.com/en/api/crear-una-sesion-desde-un-link-de-pago.md # Create a Session from a Payment Link Creates a Checkout Session from an existing payment link. Endpoint: `GET /v1/checkout/sessions/link/{paymentLinkId}` Human page: https://docs.onvopay.com/en/api/crear-una-sesion-desde-un-link-de-pago OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Create a Shipping Rate URL: https://docs.onvopay.com/en/api/crear-una-tarifa-de-envio Markdown: https://docs.onvopay.com/en/api/crear-una-tarifa-de-envio.md # Create a Shipping Rate See the ONVO documentation for integration details and examples. Endpoint: `POST /v1/shipping-rates` Human page: https://docs.onvopay.com/en/api/crear-una-tarifa-de-envio OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Disconnect a Payment Method URL: https://docs.onvopay.com/en/api/desconectar-un-metodo-de-pago Markdown: https://docs.onvopay.com/en/api/desconectar-un-metodo-de-pago.md # Disconnect a Payment Method See the ONVO documentation for integration details and examples. Endpoint: `POST /v1/payment-methods/{id}/detach` Human page: https://docs.onvopay.com/en/api/desconectar-un-metodo-de-pago OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Expire a Checkout Session URL: https://docs.onvopay.com/en/api/expirar-una-sesion-de-checkout Markdown: https://docs.onvopay.com/en/api/expirar-una-sesion-de-checkout.md # Expire a Checkout Session See the ONVO documentation for integration details and examples. Endpoint: `POST /v1/checkout/sessions/{id}/expire` Human page: https://docs.onvopay.com/en/api/expirar-una-sesion-de-checkout OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Payment Intents URL: https://docs.onvopay.com/en/api/intenciones-de-pago Markdown: https://docs.onvopay.com/en/api/intenciones-de-pago.md # Payment Intents Intenciones de pago Human page: https://docs.onvopay.com/en/api/intenciones-de-pago OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # List SINPE Movil Payments URL: https://docs.onvopay.com/en/api/listar-pagos-por-sinpe-movil Markdown: https://docs.onvopay.com/en/api/listar-pagos-por-sinpe-movil.md # List SINPE Movil Payments See the ONVO documentation for integration details and examples. Endpoint: `GET /v1/mobile-transfers/list` Human page: https://docs.onvopay.com/en/api/listar-pagos-por-sinpe-movil OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # List Checkout Sessions URL: https://docs.onvopay.com/en/api/listar-sesiones-de-checkout Markdown: https://docs.onvopay.com/en/api/listar-sesiones-de-checkout.md # List Checkout Sessions See the ONVO documentation for integration details and examples. Endpoint: `GET /v1/checkout/sessions/one-time-link/account` Human page: https://docs.onvopay.com/en/api/listar-sesiones-de-checkout OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # List all Payment Intents URL: https://docs.onvopay.com/en/api/listar-todas-las-intenciones-de-pago Markdown: https://docs.onvopay.com/en/api/listar-todas-las-intenciones-de-pago.md # List all Payment Intents See the ONVO documentation for integration details and examples. Endpoint: `GET /v1/payment-intents/account` Human page: https://docs.onvopay.com/en/api/listar-todas-las-intenciones-de-pago OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # List all Shipping Rates URL: https://docs.onvopay.com/en/api/listar-todas-las-tarifas-de-envio Markdown: https://docs.onvopay.com/en/api/listar-todas-las-tarifas-de-envio.md # List all Shipping Rates See the ONVO documentation for integration details and examples. Endpoint: `GET /v1/shipping-rates` Human page: https://docs.onvopay.com/en/api/listar-todas-las-tarifas-de-envio OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # List all Subscriptions URL: https://docs.onvopay.com/en/api/listar-todos-los-cargos-recurrentes Markdown: https://docs.onvopay.com/en/api/listar-todos-los-cargos-recurrentes.md # List all Subscriptions See the ONVO documentation for integration details and examples. Endpoint: `GET /v1/subscriptions` Human page: https://docs.onvopay.com/en/api/listar-todos-los-cargos-recurrentes OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # List all Customers URL: https://docs.onvopay.com/en/api/listar-todos-los-clientes Markdown: https://docs.onvopay.com/en/api/listar-todos-los-clientes.md # List all Customers See the ONVO documentation for integration details and examples. Endpoint: `GET /v1/customers` Human page: https://docs.onvopay.com/en/api/listar-todos-los-clientes OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # List all Payment Methods URL: https://docs.onvopay.com/en/api/listar-todos-los-metodos-de-pago Markdown: https://docs.onvopay.com/en/api/listar-todos-los-metodos-de-pago.md # List all Payment Methods See the ONVO documentation for integration details and examples. Endpoint: `GET /v1/payment-methods` Human page: https://docs.onvopay.com/en/api/listar-todos-los-metodos-de-pago OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # List all Prices URL: https://docs.onvopay.com/en/api/listar-todos-los-precios Markdown: https://docs.onvopay.com/en/api/listar-todos-los-precios.md # List all Prices See the ONVO documentation for integration details and examples. Endpoint: `GET /v1/prices` Human page: https://docs.onvopay.com/en/api/listar-todos-los-precios OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # List all Products URL: https://docs.onvopay.com/en/api/listar-todos-los-productos Markdown: https://docs.onvopay.com/en/api/listar-todos-los-productos.md # List all Products See the ONVO documentation for integration details and examples. Endpoint: `GET /v1/products` Human page: https://docs.onvopay.com/en/api/listar-todos-los-productos OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Payment Methods URL: https://docs.onvopay.com/en/api/metodos-de-pago Markdown: https://docs.onvopay.com/en/api/metodos-de-pago.md # Payment Methods Métodos de pago Human page: https://docs.onvopay.com/en/api/metodos-de-pago OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # List a Customer's Payment Intents URL: https://docs.onvopay.com/en/api/obtener-las-intenciones-de-pago-de-un-cliente Markdown: https://docs.onvopay.com/en/api/obtener-las-intenciones-de-pago-de-un-cliente.md # List a Customer's Payment Intents Lists the payment intents associated with a customer. Endpoint: `GET /v1/customers/{id}/payment-intents` Human page: https://docs.onvopay.com/en/api/obtener-las-intenciones-de-pago-de-un-cliente OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # List a Customer's Subscriptions URL: https://docs.onvopay.com/en/api/obtener-los-cargos-recurrentes-de-un-cliente Markdown: https://docs.onvopay.com/en/api/obtener-los-cargos-recurrentes-de-un-cliente.md # List a Customer's Subscriptions Lists the subscriptions associated with a customer. Endpoint: `GET /v1/customers/{id}/subscriptions` Human page: https://docs.onvopay.com/en/api/obtener-los-cargos-recurrentes-de-un-cliente OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # List a Customer's Payment Methods URL: https://docs.onvopay.com/en/api/obtener-los-metodos-de-pago-de-un-cliente Markdown: https://docs.onvopay.com/en/api/obtener-los-metodos-de-pago-de-un-cliente.md # List a Customer's Payment Methods See the ONVO documentation for integration details and examples. Endpoint: `GET /v1/customers/{id}/payment-methods` Human page: https://docs.onvopay.com/en/api/obtener-los-metodos-de-pago-de-un-cliente OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Retrieve a Subscription URL: https://docs.onvopay.com/en/api/obtener-un-cargo-recurrente Markdown: https://docs.onvopay.com/en/api/obtener-un-cargo-recurrente.md # Retrieve a Subscription See the ONVO documentation for integration details and examples. Endpoint: `GET /v1/subscriptions/{id}` Human page: https://docs.onvopay.com/en/api/obtener-un-cargo-recurrente OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Retrieve a Customer URL: https://docs.onvopay.com/en/api/obtener-un-cliente Markdown: https://docs.onvopay.com/en/api/obtener-un-cliente.md # Retrieve a Customer See the ONVO documentation for integration details and examples. Endpoint: `GET /v1/customers/{id}` Human page: https://docs.onvopay.com/en/api/obtener-un-cliente OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Retrieve a Payment Link URL: https://docs.onvopay.com/en/api/obtener-un-link-de-pago Markdown: https://docs.onvopay.com/en/api/obtener-un-link-de-pago.md # Retrieve a Payment Link Returns a payment link created from Checkout. Endpoint: `GET /v1/checkout/sessions/one-time-link/{id}` Human page: https://docs.onvopay.com/en/api/obtener-un-link-de-pago OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Retrieve a Payment Method URL: https://docs.onvopay.com/en/api/obtener-un-metodo-de-pago Markdown: https://docs.onvopay.com/en/api/obtener-un-metodo-de-pago.md # Retrieve a Payment Method See the ONVO documentation for integration details and examples. Endpoint: `GET /v1/payment-methods/{id}` Human page: https://docs.onvopay.com/en/api/obtener-un-metodo-de-pago OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Retrieve a Price URL: https://docs.onvopay.com/en/api/obtener-un-precio Markdown: https://docs.onvopay.com/en/api/obtener-un-precio.md # Retrieve a Price See the ONVO documentation for integration details and examples. Endpoint: `GET /v1/prices/{id}` Human page: https://docs.onvopay.com/en/api/obtener-un-precio OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Retrieve a Product URL: https://docs.onvopay.com/en/api/obtener-un-producto Markdown: https://docs.onvopay.com/en/api/obtener-un-producto.md # Retrieve a Product See the ONVO documentation for integration details and examples. Endpoint: `GET /v1/products/{id}` Human page: https://docs.onvopay.com/en/api/obtener-un-producto OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Retrieve a Refund URL: https://docs.onvopay.com/en/api/obtener-un-reembolso Markdown: https://docs.onvopay.com/en/api/obtener-un-reembolso.md # Retrieve a Refund See the ONVO documentation for integration details and examples. Endpoint: `GET /v1/refunds/{id}` Human page: https://docs.onvopay.com/en/api/obtener-un-reembolso OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Retrieve a Payment Intent URL: https://docs.onvopay.com/en/api/obtener-una-intencion-de-pago Markdown: https://docs.onvopay.com/en/api/obtener-una-intencion-de-pago.md # Retrieve a Payment Intent See the ONVO documentation for integration details and examples. Endpoint: `GET /v1/payment-intents/{id}` Human page: https://docs.onvopay.com/en/api/obtener-una-intencion-de-pago OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Retrieve a Checkout Session URL: https://docs.onvopay.com/en/api/obtener-una-sesion-de-checkout Markdown: https://docs.onvopay.com/en/api/obtener-una-sesion-de-checkout.md # Retrieve a Checkout Session Returns a Checkout Session by its identifier. Endpoint: `GET /v1/checkout/sessions/{id}` Human page: https://docs.onvopay.com/en/api/obtener-una-sesion-de-checkout OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Retrieve a Shipping Rate URL: https://docs.onvopay.com/en/api/obtener-una-tarifa-de-envio Markdown: https://docs.onvopay.com/en/api/obtener-una-tarifa-de-envio.md # Retrieve a Shipping Rate See the ONVO documentation for integration details and examples. Endpoint: `GET /v1/shipping-rates/{id}` Human page: https://docs.onvopay.com/en/api/obtener-una-tarifa-de-envio OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Retrieve a Payment Method Verification URL: https://docs.onvopay.com/en/api/obtener-verificacion-de-un-metodo-de-pago Markdown: https://docs.onvopay.com/en/api/obtener-verificacion-de-un-metodo-de-pago.md # Retrieve a Payment Method Verification Returns the verification status associated with a payment method. Endpoint: `GET /v1/payment-methods/{id}/verification` Human page: https://docs.onvopay.com/en/api/obtener-verificacion-de-un-metodo-de-pago OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Prices URL: https://docs.onvopay.com/en/api/precios Markdown: https://docs.onvopay.com/en/api/precios.md # Prices Precios Human page: https://docs.onvopay.com/en/api/precios OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Products URL: https://docs.onvopay.com/en/api/productos Markdown: https://docs.onvopay.com/en/api/productos.md # Products Productos Human page: https://docs.onvopay.com/en/api/productos OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Refunds URL: https://docs.onvopay.com/en/api/reembolsos Markdown: https://docs.onvopay.com/en/api/reembolsos.md # Refunds Reembolsos Human page: https://docs.onvopay.com/en/api/reembolsos OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Checkout Sessions URL: https://docs.onvopay.com/en/api/sesiones-de-checkout Markdown: https://docs.onvopay.com/en/api/sesiones-de-checkout.md # Checkout Sessions Sesiones de Checkout Human page: https://docs.onvopay.com/en/api/sesiones-de-checkout OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # SINPE Movil URL: https://docs.onvopay.com/en/api/sinpe-movil Markdown: https://docs.onvopay.com/en/api/sinpe-movil.md # SINPE Movil SINPE Móvil Human page: https://docs.onvopay.com/en/api/sinpe-movil OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Shipping Rates URL: https://docs.onvopay.com/en/api/tarifas-de-envio Markdown: https://docs.onvopay.com/en/api/tarifas-de-envio.md # Shipping Rates Tarifas de envío Human page: https://docs.onvopay.com/en/api/tarifas-de-envio OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Validate Bank Account Information URL: https://docs.onvopay.com/en/api/validar-informacion-de-una-cuenta-bancaria Markdown: https://docs.onvopay.com/en/api/validar-informacion-de-una-cuenta-bancaria.md # Validate Bank Account Information Validates a bank account's status, currency, and verification before creating or confirming a payment method. Endpoint: `POST /v1/bank-accounts/check-info` Human page: https://docs.onvopay.com/en/api/validar-informacion-de-una-cuenta-bancaria OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # Verify a Payment Method URL: https://docs.onvopay.com/en/api/verificar-un-metodo-de-pago Markdown: https://docs.onvopay.com/en/api/verificar-un-metodo-de-pago.md # Verify a Payment Method Verifies a payment method that requires manual confirmation, such as a bank account. Endpoint: `POST /v1/payment-methods/{id}/verify` Human page: https://docs.onvopay.com/en/api/verificar-un-metodo-de-pago OpenAPI YAML: https://docs.onvopay.com/openapi.yaml --- # ONVO API Reference The ONVO API reference is generated from the OpenAPI document and rendered in the documentation site. - API reference: https://docs.onvopay.com/en/api - OpenAPI YAML: https://docs.onvopay.com/openapi.yaml Use the OpenAPI file for code generation, API clients, and agentic integration workflows.