> This is Payabli documentation. For a complete page index, fetch https://docs.payabli.com/llms.txt — append .md to any page URL for lightweight markdown. For section-level indexes, query parameters, and other AI-optimized access methods, see https://docs.payabli.com/ai-agents.md

# Process card payments in Canada

> Learn how to process card payments in Canada via the API

Merchants can process card-not-present card transactions in Canadian dollars (CAD) through Payabli.

## Considerations

Keep the following considerations in mind when implementing Canadian processing:

* US and Canadian currencies can't be commingled in a single Payabli organization. Partners that require both US and Canadian processing will have separate Payabli organizations for each currency. The Payabli team sets up any additional organization you need for you before you begin boarding Canadian merchants.
* Canadian processing is available for credit card transactions only. ACH processing isn't available.
* Canadian processing doesn't support card-present transactions. All credit card transactions must be processed as Card Not Present
* Card processing isn't available for merchants conducting business in Quebec, or anyone who requires French-language terms and conditions.

## Processing card payments

To process a card payment in CAD via the API, use the same API endpoints as for US processing. Payabli recommends that you specify the `CAD` currency in your requests, but it's not required. If you don't specify a currency, it defaults to the paypoint's default currency.

### Request

POST [https://api-sandbox.payabli.com/api/MoneyIn/getpaid](https://api-sandbox.payabli.com/api/MoneyIn/getpaid)

```curl CADCard
curl -X POST https://api-sandbox.payabli.com/api/MoneyIn/getpaid \
     -H "requestToken: <apiKey>" \
     -H "Content-Type: application/json" \
     -d '{
  "paymentDetails": {
    "totalAmount": 100,
    "currency": "CAD",
    "serviceFee": 0
  },
  "paymentMethod": {
    "cardHolder": "John Cassian",
    "cardcvv": "999",
    "cardexp": "02/27",
    "cardnumber": "4111111111111111",
    "cardzip": "12345",
    "initiator": "payor",
    "method": "card"
  },
  "customerData": {
    "customerId": 4440
  },
  "entryPoint": "8cfec329267",
  "ipaddress": "255.255.255.255"
}'
```

```typescript CADCard
import { PayabliClient } from "@payabli/sdk-node";

async function main() {
    const client = new PayabliClient({
        apiKey: "YOUR_API_KEY_HERE",
    });
    await client.moneyIn.getpaid({
        body: {
            paymentDetails: {
                totalAmount: 100,
                currency: "CAD",
                serviceFee: 0,
            },
            paymentMethod: {
                cardHolder: "John Cassian",
                cardcvv: "999",
                cardexp: "02/27",
                cardnumber: "4111111111111111",
                cardzip: "12345",
                initiator: "payor",
                method: "card",
            },
            customerData: {
                customerId: 4440,
            },
            entryPoint: "8cfec329267",
            ipaddress: "255.255.255.255",
        },
    });
}
main();

```

```python CADCard
from payabli import payabli, PaymentDetail, PayMethodCredit, PayorDataRequest

client = payabli(
    api_key="YOUR_API_KEY_HERE",
)

client.money_in.getpaid(
    payment_details=PaymentDetail(
        total_amount=100,
        currency="CAD",
        service_fee=0,
    ),
    payment_method=PayMethodCredit(
        card_holder="John Cassian",
        cardcvv="999",
        cardexp="02/27",
        cardnumber="4111111111111111",
        cardzip="12345",
        initiator="payor",
        method="card",
    ),
    customer_data=PayorDataRequest(
        customer_id=4440,
    ),
    entry_point="8cfec329267",
    ipaddress="255.255.255.255",
)

```

```java CADCard
package com.example.usage;

import io.github.payabli.api.PayabliPayabliApiOasClient;
import io.github.payabli.api.resources.moneyin.requests.RequestPayment;
import io.github.payabli.api.types.PayMethodCredit;
import io.github.payabli.api.types.PayMethodCreditMethod;
import io.github.payabli.api.types.PaymentDetail;
import io.github.payabli.api.types.PaymentMethod;
import io.github.payabli.api.types.PayorDataRequest;
import io.github.payabli.api.types.TransRequestBody;
import java.util.Optional;

public class Example {
    public static void main(String[] args) {
        PayabliPayabliApiOasClient client = PayabliPayabliApiOasClient
            .builder()
            .apiKey("YOUR_API_KEY_HERE")
            .build();

        client.moneyIn().getpaid(
            RequestPayment
                .builder()
                .body(
                    TransRequestBody
                        .builder()
                        .paymentDetails(
                            PaymentDetail
                                .builder()
                                .totalAmount(100.0)
                                .currency("CAD")
                                .serviceFee(0.0)
                                .build()
                        )
                        .paymentMethod(
                            PaymentMethod.of(
                                PayMethodCredit
                                    .builder()
                                    .cardexp("02/27")
                                    .cardnumber("4111111111111111")
                                    .method(PayMethodCreditMethod.CARD)
                                    .cardcvv(Optional.of("999"))
                                    .cardHolder(Optional.of("John Cassian"))
                                    .cardzip(Optional.of("12345"))
                                    .initiator(Optional.of("payor"))
                                    .build()
                            )
                        )
                        .customerData(
                            PayorDataRequest
                                .builder()
                                .customerId(4440L)
                                .build()
                        )
                        .entryPoint("8cfec329267")
                        .ipaddress("255.255.255.255")
                        .build()
                )
                .build()
        );
    }
}
```

```ruby CADCard
require "payabli"

client = Payabli::Client.new(api_key: "YOUR_API_KEY_HERE")

client.money_in.getpaid(
  customer_data: {
    customer_id: 4440
  },
  entry_point: "8cfec329267",
  ipaddress: "255.255.255.255",
  payment_details: {
    total_amount: 100,
    currency: "CAD",
    service_fee: 0
  },
  payment_method: {
    card_holder: "John Cassian",
    cardcvv: "999",
    cardexp: "02/27",
    cardnumber: "4111111111111111",
    cardzip: "12345",
    initiator: "payor",
    method_: "card"
  }
)

```

```csharp CADCard
using PayabliPayabliApiOas;
using System.Threading.Tasks;

namespace Usage;

public class Example
{
    public async Task Do() {
        var client = new PayabliPayabliApiOasClient(
            apiKey: "YOUR_API_KEY_HERE"
        );

        await client.MoneyIn.GetpaidAsync(
            new RequestPayment {
                Body = new TransRequestBody {
                    PaymentDetails = new PaymentDetail {
                        TotalAmount = 100,
                        Currency = "CAD",
                        ServiceFee = 0
                    },
                    PaymentMethod = new PayMethodCredit {
                        CardHolder = "John Cassian",
                        Cardcvv = "999",
                        Cardexp = "02/27",
                        Cardnumber = "4111111111111111",
                        Cardzip = "12345",
                        Initiator = "payor",
                        Method = PayMethodCreditMethod.Card
                    },
                    CustomerData = new PayorDataRequest {
                        CustomerId = 4440L
                    },
                    EntryPoint = "8cfec329267",
                    Ipaddress = "255.255.255.255"
                }
            }
        );
    }

}

```

```go CADCard
package example

import (
    context "context"

    payabli "github.com/payabli/sdk-go"
    client "github.com/payabli/sdk-go/client"
    option "github.com/payabli/sdk-go/option"
)

func do() {
    client := client.NewClient(
        option.WithApiKey(
            "YOUR_API_KEY_HERE",
        ),
    )
    request := &payabli.RequestPayment{
        Body: &payabli.TransRequestBody{
            PaymentDetails: &payabli.PaymentDetail{
                TotalAmount: 100,
                Currency: payabli.String(
                    "CAD",
                ),
                ServiceFee: payabli.Float64(
                    0,
                ),
            },
            PaymentMethod: &payabli.PaymentMethod{
                PayMethodCredit: &payabli.PayMethodCredit{
                    CardHolder: payabli.String(
                        "John Cassian",
                    ),
                    Cardcvv: payabli.String(
                        "999",
                    ),
                    Cardexp: "02/27",
                    Cardnumber: "4111111111111111",
                    Cardzip: payabli.String(
                        "12345",
                    ),
                    Initiator: payabli.String(
                        "payor",
                    ),
                    Method: payabli.PayMethodCreditMethodCard,
                },
            },
            CustomerData: &payabli.PayorDataRequest{
                CustomerId: payabli.Int64(
                    int64(4440),
                ),
            },
            EntryPoint: payabli.String(
                "8cfec329267",
            ),
            Ipaddress: payabli.String(
                "255.255.255.255",
            ),
        },
    }
    client.MoneyIn.Getpaid(
        context.TODO(),
        request,
    )
}

```

```php CADCard
<?php

namespace Example;

use Payabli\PayabliClient;
use Payabli\MoneyIn\Requests\RequestPayment;
use Payabli\Types\TransRequestBody;
use Payabli\Types\PaymentDetail;
use Payabli\Types\PayMethodCredit;
use Payabli\Types\PayMethodCreditMethod;
use Payabli\Types\PayorDataRequest;

$client = new PayabliClient(
    apiKey: 'YOUR_API_KEY_HERE',
);
$client->moneyIn->getpaid(
    new RequestPayment([
        'body' => new TransRequestBody([
            'paymentDetails' => new PaymentDetail([
                'totalAmount' => 100,
                'currency' => 'CAD',
                'serviceFee' => 0,
            ]),
            'paymentMethod' => new PayMethodCredit([
                'cardHolder' => 'John Cassian',
                'cardcvv' => '999',
                'cardexp' => '02/27',
                'cardnumber' => '4111111111111111',
                'cardzip' => '12345',
                'initiator' => 'payor',
                'method' => PayMethodCreditMethod::Card->value,
            ]),
            'customerData' => new PayorDataRequest([
                'customerId' => 4440,
            ]),
            'entryPoint' => '8cfec329267',
            'ipaddress' => '255.255.255.255',
        ]),
    ]),
);

```

```swift CADCard
import Foundation

let headers = [
  "requestToken": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "paymentDetails": [
    "totalAmount": 100,
    "currency": "CAD",
    "serviceFee": 0
  ],
  "paymentMethod": [
    "cardHolder": "John Cassian",
    "cardcvv": "999",
    "cardexp": "02/27",
    "cardnumber": "4111111111111111",
    "cardzip": "12345",
    "initiator": "payor",
    "method": "card"
  ],
  "customerData": ["customerId": 4440],
  "entryPoint": "8cfec329267",
  "ipaddress": "255.255.255.255"
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api-sandbox.payabli.com/api/MoneyIn/getpaid")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

## Related resources

See these related resources to help you get the most out of Payabli.

* **[Make a sale transaction with the API](/guides/pay-in-developer-transactions-create)** - Learn how to authorize and capture a sales transaction in one step using the API