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
- Create a payment method
- Confirm a payment intent
- Webhooks
- List SINPE Movil payments
Before you start
- Configure webhooks and listen for
payment-intent.succeeded. - Use
CRCas 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
- Create a payment intent for the exact amount to collect.
- Create a payment method with
type: "mobile_number". - Confirm the intent with the
paymentMethodId. - Show the buyer the destination SINPE Movil number and the exact amount.
- Wait for the
payment-intent.succeededwebhook 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
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.
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
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 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.