Balance of payments by country - quarterly data (BPM6) - bop_c6_q

Data - Eurostat

Info

Last observation: 2025Q4 (N = 617362)

First observation: 1991Q1 (N = 30426)

Last data update: 13 avr 2026, 16:29. Last compile: 17 aoû 2026, 23:17

Structure

France

Goods and Services

Code
bop_c6_q |>
  filter(geo == "FR",
         stk_flow == "BAL",
         currency == "MIO_EUR",
         partner %in% c("EA20", "EXT_EA20", "WRL_REST"),
         bop_item %in% c("GS")) |>
  quarter_to_date() |>
  left_join(B1GQ, by = c("geo", "date")) |>
  mutate(values = values / B1GQ) |>
  select(-B1GQ) |>
  ggplot() + geom_line(aes(x = date, y = values, color = Partner)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.8),
        legend.title = element_blank()) +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

WRL_REST

Code
bop_c6_q |>
  filter(geo == "FR",
         stk_flow == "BAL",
         currency == "MIO_EUR",
         partner %in% c("WRL_REST"),
         bop_item %in% c("CA", "GS", "G")) |>
  
  quarter_to_date() |>
  left_join(B1GQ, by = c("geo", "date")) |>
  mutate(values = values / B1GQ) |>
  select(-B1GQ) |>
  ggplot() + geom_line(aes(x = date, y = values, color = Bop_item)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.15, 0.8),
        legend.title = element_blank()) +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 2),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

EA19

Code
bop_c6_q |>
  filter(geo == "FR",
         stk_flow == "BAL",
         currency == "MIO_EUR",
         partner %in% c("EA19"),
         bop_item %in% c("CA", "GS", "G")) |>
  
  quarter_to_date() |>
  left_join(B1GQ, by = c("geo", "date")) |>
  mutate(values = values / B1GQ) |>
  select(-B1GQ) |>
  ggplot() + geom_line(aes(x = date, y = values, color = Bop_item)) +
  
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.15, 0.8),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

EXT_EA19

Code
bop_c6_q |>
  filter(geo == "FR",
         stk_flow == "BAL",
         currency == "MIO_EUR",
         partner %in% c("EXT_EA19"),
         bop_item %in% c("CA", "GS", "G")) |>
  
  quarter_to_date() |>
  left_join(B1GQ, by = c("geo", "date")) |>
  mutate(values = values / B1GQ) |>
  select(-B1GQ) |>
  ggplot() + geom_line(aes(x = date, y = values, color = Bop_item)) +
  
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.15, 0.8),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

Germany

Goods and Services

Code
bop_c6_q |>
  filter(geo == "DE",
         stk_flow == "BAL",
         currency == "MIO_EUR",
         partner %in% c("EA19", "EXT_EA19", "WRL_REST"),
         bop_item %in% c("GS")) |>
  quarter_to_date() |>
  left_join(B1GQ, by = c("geo", "date")) |>
  mutate(values = values / B1GQ) |>
  select(-B1GQ) |>
  ggplot() + geom_line(aes(x = date, y = values, color = Partner)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.8),
        legend.title = element_blank()) +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

WRL_REST

Code
bop_c6_q |>
  filter(geo == "DE",
         stk_flow == "BAL",
         currency == "MIO_EUR",
         partner %in% c("WRL_REST"),
         bop_item %in% c("CA", "GS", "G")) |>
  
  quarter_to_date() |>
  left_join(B1GQ, by = c("geo", "date")) |>
  mutate(values = values / B1GQ) |>
  select(-B1GQ) |>
  ggplot() + geom_line(aes(x = date, y = values, color = Bop_item)) +
  
  theme_minimal()  +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.15, 0.8),
        legend.title = element_blank()) +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 2),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

EA19

Code
bop_c6_q |>
  filter(geo == "DE",
         stk_flow == "BAL",
         currency == "MIO_EUR",
         partner %in% c("EA19"),
         bop_item %in% c("CA", "GS", "G")) |>
  
  quarter_to_date() |>
  left_join(B1GQ, by = c("geo", "date")) |>
  mutate(values = values / B1GQ) |>
  select(-B1GQ) |>
  ggplot() + geom_line(aes(x = date, y = values, color = Bop_item)) +
  
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.15, 0.8),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

EXT_EA19

Code
bop_c6_q |>
  filter(geo == "DE",
         stk_flow == "BAL",
         currency == "MIO_EUR",
         partner %in% c("EXT_EA19"),
         bop_item %in% c("CA", "GS", "G")) |>
  
  quarter_to_date() |>
  left_join(B1GQ, by = c("geo", "date")) |>
  mutate(values = values / B1GQ) |>
  select(-B1GQ) |>
  ggplot() + geom_line(aes(x = date, y = values, color = Bop_item)) +
  
  theme_minimal() + xlab("") + ylab("") +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.15, 0.8),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  geom_hline(yintercept = 0, linetype = "dashed",  color = "black")

By Destination: Europe, ex-Europe

France

Balance (Flow)

Code
bop_c6_q |>
  filter(geo == "FR",
         stk_flow == "BAL",
         time == "2020Q4",
         currency == "MIO_EUR",
         partner %in% c("EA19", "EXT_EA19", "WRL_REST")) |>
  
  quarter_to_date() |>
  left_join(B1GQ, by = c("geo", "date")) |>
  mutate(values = 100*values / B1GQ) %>%
  select_if(~n_distinct(.) > 1) |>
  spread(partner, values) |>
  arrange(-`WRL_REST`) |>
  print_table_conditional()

Net (Stock)

Code
bop_c6_q |>
  filter(geo == "FR",
         stk_flow == "NET",
         time == "2020Q4",
         currency == "MIO_EUR",
         partner %in% c("EA19", "EXT_EA19", "WRL_REST")) |>
  
  quarter_to_date() |>
  left_join(B1GQ, by = c("geo", "date")) |>
  mutate(values = 100*values / B1GQ) %>%
  select_if(~n_distinct(.) > 1) |>
  spread(partner, values) |>
  arrange(-`WRL_REST`) |>
  print_table_conditional()

Germany

Balance (Flow)

Code
bop_c6_q |>
  filter(geo == "DE",
         stk_flow == "BAL",
         time == "2020Q4",
         currency == "MIO_EUR",
         partner %in% c("EA19", "EXT_EA19", "WRL_REST")) |>
  
  quarter_to_date() |>
  left_join(B1GQ, by = c("geo", "date")) |>
  mutate(values = 100*values / B1GQ) |>
  select(bop_item, Bop_item, everything()) %>%
  select_if(~n_distinct(.) > 1) |>
  spread(partner, values) |>
  arrange(-`WRL_REST`) |>
  print_table_conditional()

Net (Stock)

Code
bop_c6_q |>
  filter(geo == "DE",
         stk_flow == "NET",
         time == "2020Q4",
         currency == "MIO_EUR",
         partner %in% c("EA19", "EXT_EA19", "WRL_REST")) |>
  
  quarter_to_date() |>
  left_join(B1GQ, by = c("geo", "date")) |>
  mutate(values = 100*values / B1GQ) |>
  select(bop_item, Bop_item, everything()) %>%
  select_if(~n_distinct(.) > 1) |>
  spread(partner, values) |>
  arrange(-`WRL_REST`) |>
  print_table_conditional()

By Destination: Europe, ex-Europe

France

All

Code
bop_c6_q |>
  filter(geo == "FR",
         stk_flow == "BAL",
         time == "2020Q4",
         currency == "MIO_EUR",
         partner %in% c("EA19", "EXT_EA19", "WRL_REST")) |>
  
  quarter_to_date() |>
  left_join(B1GQ, by = c("geo", "date")) |>
  mutate(values = 100*values / B1GQ) |>
  select(bop_item, Bop_item, everything()) %>%
  select_if(~n_distinct(.) > 1) |>
  spread(partner, values) |>
  arrange(-`WRL_REST`) |>
  select(-sector10, -sectpart) |>
  print_table_conditional()

Services

Code
bop_c6_q |>
  filter(geo == "FR",
         stk_flow == "BAL",
         time == "2020Q4",
         currency == "MIO_EUR",
         partner %in% c("EA19", "EXT_EA19", "WRL_REST")) |>
  
  quarter_to_date() |>
  left_join(B1GQ, by = c("geo", "date")) |>
  mutate(values = 100*values / B1GQ) |>
  select(bop_item, Bop_item, everything()) %>%
  select_if(~n_distinct(.) > 1) |>
  spread(partner, values) |>
  arrange(bop_item) |>
  select(-sector10, -sectpart) |>
  filter(grepl("Services", Bop_item)) %>%
  mutate_at(vars(-bop_item, -Bop_item, -any_of("Partner")), funs(round(., 2))) |>
  print_table_conditional()

Germany

Code
bop_c6_q |>
  filter(geo == "DE",
         stk_flow == "BAL",
         time == "2020Q4",
         currency == "MIO_EUR",
         partner %in% c("EA19", "EXT_EA19", "WRL_REST")) |>
  
  quarter_to_date() |>
  left_join(B1GQ, by = c("geo", "date")) |>
  mutate(values = 100*values / B1GQ) |>
  select(bop_item, Bop_item, everything()) %>%
  select_if(~n_distinct(.) > 1) |>
  spread(partner, values) |>
  arrange(-`WRL_REST`) |>
  print_table_conditional()