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.
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
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
CRCas 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
- Create a payment intent for the exact amount to collect.
- Create a payment method with
type: "bank_deposit". - Confirm the intent with the
paymentMethodId. - Show the buyer the destination IBAN provided by ONVO, the exact amount, and the instruction to send the transfer in real time.
- 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 PIN payment #1001"
}'
Create the payment method
bankDeposit.identification must represent the person or entity that will make the bank transfer.
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
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 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.